webhands 0.1.6 → 0.1.7
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/README.md +65 -0
- package/dist/cli.d.ts +17 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +47 -3
- package/dist/cli.js.map +1 -1
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/cli.ts +79 -2
- package/src/errors.ts +7 -0
- package/src/index.ts +1 -0
package/README.md
CHANGED
|
@@ -97,6 +97,71 @@ deliberately local and single-session by design.
|
|
|
97
97
|
In short: this is for reading and acting on web apps **you already have an account
|
|
98
98
|
on**, from **your own browser**, the way you could by hand.
|
|
99
99
|
|
|
100
|
+
## Optional: stealth launch (opt-in, default OFF)
|
|
101
|
+
|
|
102
|
+
Standard Playwright drives Chromium over CDP and calls `Runtime.enable` at
|
|
103
|
+
startup. That emits a side-effect a few lines of page JS can detect, and some
|
|
104
|
+
anti-bot WAFs (Imperva/Cloudflare/DataDome) use it to serve an "Access Denied"
|
|
105
|
+
block page *before the page even renders* — even on a real residential IP, even
|
|
106
|
+
headed. `@webhands/core` can optionally launch via
|
|
107
|
+
[Patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright) (an
|
|
108
|
+
API-compatible Playwright fork that patches exactly these CDP leaks) to remove
|
|
109
|
+
that one tell.
|
|
110
|
+
|
|
111
|
+
This is **off by default** — vanilla Playwright stays the default. To enable it:
|
|
112
|
+
|
|
113
|
+
1. Install the optional dependency (it is NOT pulled in unless you ask for it):
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
pnpm add patchright
|
|
117
|
+
# if you do NOT pass --use-system-browser chrome, also fetch its browser:
|
|
118
|
+
# pnpm exec patchright install chromium
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
2. Bring the session up with `--stealth`. The realistic recipe also drives your
|
|
122
|
+
installed system browser (`--use-system-browser chrome`), headed, against a
|
|
123
|
+
**warmed, logged-in profile**:
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
# serve consumes these (it is where the browser is launched, ADR-0005):
|
|
127
|
+
npx webhands serve --headed --stealth --use-system-browser chrome
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
`--use-system-browser` is independent of `--stealth`: you can drive real
|
|
131
|
+
Chrome with or without the Patchright path, and stealth with or without a
|
|
132
|
+
system browser. Other channel names work too (e.g. `msedge`).
|
|
133
|
+
|
|
134
|
+
Programmatic equivalent (the `--stealth` / `--use-system-browser` flags map onto
|
|
135
|
+
these transport options):
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
import {PlaywrightLaunchTransport} from '@webhands/core';
|
|
139
|
+
|
|
140
|
+
const transport = new PlaywrightLaunchTransport(
|
|
141
|
+
{}, // profile location (omit for ~/.webhands)
|
|
142
|
+
[], // extra hands
|
|
143
|
+
{stealth: true, systemBrowser: 'chrome'},
|
|
144
|
+
);
|
|
145
|
+
// Stealth + headed + a real logged-in profile is the strongest recipe:
|
|
146
|
+
const session = await transport.open({
|
|
147
|
+
mode: 'launch',
|
|
148
|
+
profile: 'default',
|
|
149
|
+
headed: true,
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
If stealth is enabled but `patchright` is not installed, the open throws a typed
|
|
154
|
+
`MissingStealthDependencyError` (the CLI prints `pnpm add patchright` as the fix).
|
|
155
|
+
It **never silently falls back** to vanilla Playwright, because that would put
|
|
156
|
+
the tell back without telling you.
|
|
157
|
+
|
|
158
|
+
**Honest caveat.** Stealth addresses ONLY the CDP `Runtime.enable` automation
|
|
159
|
+
tell. It is **necessary-but-not-sufficient**: IP reputation and session/profile
|
|
160
|
+
reputation still matter. The realistic recipe is stealth +
|
|
161
|
+
`systemBrowser: 'chrome'` + headed + a warmed, logged-in profile + a residential
|
|
162
|
+
IP (see
|
|
163
|
+
[`docs/adr/0002`](docs/adr/0002-real-session-over-fingerprint-spoofing.md)).
|
|
164
|
+
|
|
100
165
|
## Security note (the `serve` endpoint runs arbitrary code)
|
|
101
166
|
|
|
102
167
|
The page verbs execute caller-supplied expressions: `eval` runs a JS expression
|
package/dist/cli.d.ts
CHANGED
|
@@ -56,7 +56,23 @@ export interface CliDeps {
|
|
|
56
56
|
export type ServeSession = (target: OpenTarget, options: {
|
|
57
57
|
root?: string;
|
|
58
58
|
env?: NodeJS.ProcessEnv;
|
|
59
|
-
}) => Promise<RunningSessionServer>;
|
|
59
|
+
}, launchPolicy?: LaunchPolicy) => Promise<RunningSessionServer>;
|
|
60
|
+
/**
|
|
61
|
+
* Transport-construction policy for a LAUNCH-mode open: the opt-in stealth
|
|
62
|
+
* toggle and the optional system browser to drive. Kept SEPARATE from
|
|
63
|
+
* {@link OpenTarget} so the seam stays free of Playwright/CDP/stealth concepts
|
|
64
|
+
* (ADR-0003); it rides alongside the target into the transport constructor only.
|
|
65
|
+
* Ignored for attach (the user's own browser is reused as-is).
|
|
66
|
+
*/
|
|
67
|
+
export interface LaunchPolicy {
|
|
68
|
+
/** Opt-in Patchright-backed stealth launch. Default off. */
|
|
69
|
+
readonly stealth?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Drive a browser already installed on the system (e.g. `'chrome'`) instead
|
|
72
|
+
* of the bundled Chromium. Omit for bundled Chromium.
|
|
73
|
+
*/
|
|
74
|
+
readonly systemBrowser?: string;
|
|
75
|
+
}
|
|
60
76
|
/**
|
|
61
77
|
* Build the `incur` CLI that wraps `core`'s verb surface (PRD Implementation
|
|
62
78
|
* Decisions — `cli`; stories 12-14, 17).
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAI,MAAM,OAAO,CAAC;AAC7B,OAAO,EACN,WAAW,EACX,sBAAsB,EAWtB,KAAK,UAAU,EACf,KAAK,oBAAoB,EAKzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAG5C;;;;GAIG;AACH,eAAO,MAAM,QAAQ,aAAa,CAAC;AAMnC;;;;GAIG;AACH,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,4FAA4F;AAC5F,MAAM,WAAW,OAAO;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IAC5C,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;KAAC,CAAC;IACzD;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAC,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAI,MAAM,OAAO,CAAC;AAC7B,OAAO,EACN,WAAW,EACX,sBAAsB,EAWtB,KAAK,UAAU,EACf,KAAK,oBAAoB,EAKzB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAG5C;;;;GAIG;AACH,eAAO,MAAM,QAAQ,aAAa,CAAC;AAMnC;;;;GAIG;AACH,eAAO,MAAM,eAAe,YAAY,CAAC;AAEzC,4FAA4F;AAC5F,MAAM,WAAW,OAAO;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IAC5C,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;KAAC,CAAC;IACzD;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAC,EACjD,YAAY,CAAC,EAAE,YAAY,KACvB,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAChC;AAwID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,OAAY,gDA+hB3C;AAuED,OAAO,EAAC,WAAW,EAAE,sBAAsB,EAAC,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -47,6 +47,35 @@ function targetFrom(options) {
|
|
|
47
47
|
}
|
|
48
48
|
return { mode: 'launch', profile: options.profile };
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Stealth launch options shared by `serve` and `launch`. Opt-in and default
|
|
52
|
+
* OFF: vanilla Playwright stays the default. These are CONSUMED when the single
|
|
53
|
+
* session is brought up (the `serve` path actually builds the transport with
|
|
54
|
+
* them, ADR-0005); see the work/ observation
|
|
55
|
+
* `launch-command-connection-options-vestigial-vs-serve`.
|
|
56
|
+
*/
|
|
57
|
+
const stealthOptions = z.object({
|
|
58
|
+
stealth: z
|
|
59
|
+
.boolean()
|
|
60
|
+
.default(false)
|
|
61
|
+
.describe('Launch via the optional Patchright fork to evade the CDP automation ' +
|
|
62
|
+
'tell (requires `pnpm add patchright`). Default: off (vanilla Playwright).'),
|
|
63
|
+
'use-system-browser': z
|
|
64
|
+
.string()
|
|
65
|
+
.optional()
|
|
66
|
+
.describe("Drive a browser already installed on the system (e.g. 'chrome', " +
|
|
67
|
+
"'msedge') instead of the bundled Chromium."),
|
|
68
|
+
});
|
|
69
|
+
/** Resolve the {@link LaunchPolicy} from the shared stealth option fields. */
|
|
70
|
+
function launchPolicyFrom(options) {
|
|
71
|
+
return {
|
|
72
|
+
stealth: options.stealth === true,
|
|
73
|
+
systemBrowser: options['use-system-browser'] !== undefined &&
|
|
74
|
+
options['use-system-browser'] !== ''
|
|
75
|
+
? options['use-system-browser']
|
|
76
|
+
: undefined,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
50
79
|
/** The structured output schema shared by verbs that act on a page but return no data. */
|
|
51
80
|
const actionOutput = z.object({
|
|
52
81
|
ok: z.literal(true).describe('The verb completed.'),
|
|
@@ -184,14 +213,18 @@ export function createCli(deps = {}) {
|
|
|
184
213
|
.boolean()
|
|
185
214
|
.default(false)
|
|
186
215
|
.describe('Show the browser window (default: headless).'),
|
|
216
|
+
...stealthOptions.shape,
|
|
187
217
|
}),
|
|
188
218
|
output: z.object({
|
|
189
219
|
mode: z.literal('launch'),
|
|
190
220
|
profile: z.string(),
|
|
191
221
|
headed: z.boolean(),
|
|
222
|
+
stealth: z.boolean(),
|
|
223
|
+
systemBrowser: z.string().optional(),
|
|
192
224
|
}),
|
|
193
225
|
async run(c) {
|
|
194
226
|
try {
|
|
227
|
+
const policy = launchPolicyFrom(c.options);
|
|
195
228
|
return await withSession(provider, {
|
|
196
229
|
mode: 'launch',
|
|
197
230
|
profile: c.options.profile,
|
|
@@ -200,6 +233,10 @@ export function createCli(deps = {}) {
|
|
|
200
233
|
mode: 'launch',
|
|
201
234
|
profile: c.options.profile,
|
|
202
235
|
headed: c.options.headed,
|
|
236
|
+
stealth: policy.stealth === true,
|
|
237
|
+
...(policy.systemBrowser !== undefined
|
|
238
|
+
? { systemBrowser: policy.systemBrowser }
|
|
239
|
+
: {}),
|
|
203
240
|
}, {
|
|
204
241
|
cta: {
|
|
205
242
|
commands: [
|
|
@@ -227,6 +264,7 @@ export function createCli(deps = {}) {
|
|
|
227
264
|
.boolean()
|
|
228
265
|
.default(false)
|
|
229
266
|
.describe('Show the browser window (default: headless).'),
|
|
267
|
+
...stealthOptions.shape,
|
|
230
268
|
}),
|
|
231
269
|
output: z.object({
|
|
232
270
|
ok: z.literal(true),
|
|
@@ -250,7 +288,7 @@ export function createCli(deps = {}) {
|
|
|
250
288
|
profile: c.options.profile,
|
|
251
289
|
headed: c.options.headed,
|
|
252
290
|
};
|
|
253
|
-
const server = await serveSession(target, home);
|
|
291
|
+
const server = await serveSession(target, home, launchPolicyFrom(c.options));
|
|
254
292
|
// Explicit teardown on signal: closing the browser + clearing the
|
|
255
293
|
// endpoint file is the server's `stop`. We DO NOT auto-spawn and we DO
|
|
256
294
|
// NOT auto-teardown on anything but an explicit stop/signal (ADR-0005).
|
|
@@ -594,8 +632,14 @@ export function createCli(deps = {}) {
|
|
|
594
632
|
* place a real browser is launched in the ADR-0005 model; verb commands are thin
|
|
595
633
|
* clients and never launch.
|
|
596
634
|
*/
|
|
597
|
-
async function defaultServeSession(target, home) {
|
|
598
|
-
|
|
635
|
+
async function defaultServeSession(target, home, launchPolicy = {}) {
|
|
636
|
+
// The launch transport is the ONE place the stealth policy takes effect
|
|
637
|
+
// (ADR-0005: serve is the one place a browser is launched). attach reuses the
|
|
638
|
+
// user's own browser, so the policy does not apply there.
|
|
639
|
+
const launch = new PlaywrightLaunchTransport(home, [], {
|
|
640
|
+
stealth: launchPolicy.stealth,
|
|
641
|
+
systemBrowser: launchPolicy.systemBrowser,
|
|
642
|
+
});
|
|
599
643
|
const attach = new PlaywrightAttachTransport();
|
|
600
644
|
const transport = {
|
|
601
645
|
open(t) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MissingBrowserBinaryError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, type ControllerError, type ControllerErrorCode } from '@webhands/core';
|
|
1
|
+
import { MissingBrowserBinaryError, MissingStealthDependencyError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, type ControllerError, type ControllerErrorCode } from '@webhands/core';
|
|
2
2
|
/**
|
|
3
3
|
* Map a TYPED `core` error condition into the user-facing message + the EXACT
|
|
4
4
|
* command to fix it (PRD story 17).
|
|
@@ -40,6 +40,6 @@ export declare function fixCommandFor(error: ControllerError, binary: string): s
|
|
|
40
40
|
* only to ADD the actionable fix command.
|
|
41
41
|
*/
|
|
42
42
|
export declare function mapControllerError(cause: unknown, binary: string): MappedError | undefined;
|
|
43
|
-
export { MissingBrowserBinaryError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, };
|
|
43
|
+
export { MissingBrowserBinaryError, MissingStealthDependencyError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, };
|
|
44
44
|
export type { ControllerError, ControllerErrorCode };
|
|
45
45
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAW;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,WAAW;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAwC5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACZ,WAAW,GAAG,SAAS,CASzB;AAID,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,GACzB,CAAC;AACF,YAAY,EAAC,eAAe,EAAE,mBAAmB,EAAC,CAAC"}
|
package/dist/errors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isControllerError, MissingBrowserBinaryError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, } from '@webhands/core';
|
|
1
|
+
import { isControllerError, MissingBrowserBinaryError, MissingStealthDependencyError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, } from '@webhands/core';
|
|
2
2
|
/**
|
|
3
3
|
* Compose the EXACT fix command for a typed `core` error. Returned alongside
|
|
4
4
|
* the message so a test can assert the precise command, and so the wording
|
|
@@ -13,6 +13,11 @@ export function fixCommandFor(error, binary) {
|
|
|
13
13
|
// <browser>` is the documented way to download the missing one. We name
|
|
14
14
|
// the specific browser from the typed error rather than a generic hint.
|
|
15
15
|
return `npx playwright install ${error.browser}`;
|
|
16
|
+
case 'missing-stealth-dependency':
|
|
17
|
+
// Stealth launch was opted into but the OPTIONAL `patchright` dependency
|
|
18
|
+
// is absent. Name the package from the typed error so the install command
|
|
19
|
+
// is ready to run; we never silently fall back to vanilla Playwright.
|
|
20
|
+
return `pnpm add ${error.dependency}`;
|
|
16
21
|
case 'missing-profile':
|
|
17
22
|
// A profile is created by the headed `setup-profile` flow (the ONE place
|
|
18
23
|
// a profile dir is created — see core's MissingProfileError). Name the
|
|
@@ -65,5 +70,5 @@ export function mapControllerError(cause, binary) {
|
|
|
65
70
|
}
|
|
66
71
|
// Re-export the concrete classes so a test importing from the cli package can
|
|
67
72
|
// construct/assert against them without reaching into core directly.
|
|
68
|
-
export { MissingBrowserBinaryError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, };
|
|
73
|
+
export { MissingBrowserBinaryError, MissingStealthDependencyError, MissingProfileError, AttachNotChromiumError, AttachNoContextError, NoLiveServerError, SessionAlreadyActiveError, };
|
|
69
74
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,GAGzB,MAAM,gBAAgB,CAAC;AAwBxB;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAsB,EAAE,MAAc;IACnE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,wBAAwB;YAC5B,iEAAiE;YACjE,wEAAwE;YACxE,wEAAwE;YACxE,OAAO,0BAA2B,KAAmC,CAAC,OAAO,EAAE,CAAC;QACjF,KAAK,iBAAiB;YACrB,yEAAyE;YACzE,uEAAuE;YACvE,gDAAgD;YAChD,OAAO,GAAG,MAAM,4BAA6B,KAA6B,CAAC,OAAO,EAAE,CAAC;QACtF,KAAK,qBAAqB;YACzB,sEAAsE;YACtE,qDAAqD;YACrD,OAAO,GAAG,MAAM,0GAA0G,CAAC;QAC5H,KAAK,mBAAmB;YACvB,0EAA0E;YAC1E,OAAO,GAAG,MAAM,sBAAuB,KAA8B,CAAC,QAAQ,4CAA4C,CAAC;QAC5H,KAAK,gBAAgB;YACpB,uEAAuE;YACvE,yEAAyE;YACzE,gDAAgD;YAChD,OAAO,GAAG,MAAM,QAAQ,CAAC;QAC1B,KAAK,wBAAwB;YAC5B,yEAAyE;YACzE,gCAAgC;YAChC,OAAO,GAAG,MAAM,OAAO,CAAC;QACzB,OAAO,CAAC,CAAC,CAAC;YACT,yEAAyE;YACzE,+DAA+D;YAC/D,MAAM,MAAM,GAAU,KAAK,CAAC,IAAI,CAAC;YACjC,OAAO,SAAS,MAAM,oCAAoC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9E,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CACjC,KAAc,EACd,MAAc;IAEd,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,uBAAuB,GAAG,EAAE;KACrD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,GACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,GAGzB,MAAM,gBAAgB,CAAC;AAwBxB;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAsB,EAAE,MAAc;IACnE,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,wBAAwB;YAC5B,iEAAiE;YACjE,wEAAwE;YACxE,wEAAwE;YACxE,OAAO,0BAA2B,KAAmC,CAAC,OAAO,EAAE,CAAC;QACjF,KAAK,4BAA4B;YAChC,yEAAyE;YACzE,0EAA0E;YAC1E,sEAAsE;YACtE,OAAO,YAAa,KAAuC,CAAC,UAAU,EAAE,CAAC;QAC1E,KAAK,iBAAiB;YACrB,yEAAyE;YACzE,uEAAuE;YACvE,gDAAgD;YAChD,OAAO,GAAG,MAAM,4BAA6B,KAA6B,CAAC,OAAO,EAAE,CAAC;QACtF,KAAK,qBAAqB;YACzB,sEAAsE;YACtE,qDAAqD;YACrD,OAAO,GAAG,MAAM,0GAA0G,CAAC;QAC5H,KAAK,mBAAmB;YACvB,0EAA0E;YAC1E,OAAO,GAAG,MAAM,sBAAuB,KAA8B,CAAC,QAAQ,4CAA4C,CAAC;QAC5H,KAAK,gBAAgB;YACpB,uEAAuE;YACvE,yEAAyE;YACzE,gDAAgD;YAChD,OAAO,GAAG,MAAM,QAAQ,CAAC;QAC1B,KAAK,wBAAwB;YAC5B,yEAAyE;YACzE,gCAAgC;YAChC,OAAO,GAAG,MAAM,OAAO,CAAC;QACzB,OAAO,CAAC,CAAC,CAAC;YACT,yEAAyE;YACzE,+DAA+D;YAC/D,MAAM,MAAM,GAAU,KAAK,CAAC,IAAI,CAAC;YACjC,OAAO,SAAS,MAAM,oCAAoC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9E,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CACjC,KAAc,EACd,MAAc;IAEd,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO;QACN,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,uBAAuB,GAAG,EAAE;KACrD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,qEAAqE;AACrE,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,GACzB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import type { Driver } from '@webhands/core';
|
|
|
13
13
|
* exports the builder + its types so a test (or a host) can drive the CLI
|
|
14
14
|
* programmatically (`createCli().serve(argv, {stdout, exit})` / `cli.fetch`).
|
|
15
15
|
*/
|
|
16
|
-
export { createCli, CLI_NAME, DEFAULT_PROFILE, type CliDeps, type ServeSession, } from './cli.js';
|
|
16
|
+
export { createCli, CLI_NAME, DEFAULT_PROFILE, type CliDeps, type LaunchPolicy, type ServeSession, } from './cli.js';
|
|
17
17
|
export { createDefaultSessionProvider, type SessionProvider, type DefaultSessionProviderOptions, } from './session-provider.js';
|
|
18
18
|
export { mapControllerError, fixCommandFor, type MappedError } from './errors.js';
|
|
19
19
|
export type { Driver };
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,YAAY,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EACN,4BAA4B,EAC5B,KAAK,eAAe,EACpB,KAAK,6BAA6B,GAClC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,WAAW,EAAC,MAAM,aAAa,CAAC;AAIhF,YAAY,EAAC,MAAM,EAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,YAAY,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EACN,4BAA4B,EAC5B,KAAK,eAAe,EACpB,KAAK,6BAA6B,GAClC,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAE,KAAK,WAAW,EAAC,MAAM,aAAa,CAAC;AAIhF,YAAY,EAAC,MAAM,EAAC,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,SAAS,EACT,QAAQ,EACR,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACN,SAAS,EACT,QAAQ,EACR,eAAe,GAIf,MAAM,UAAU,CAAC;AAElB,OAAO,EACN,4BAA4B,GAG5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "webhands",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "A CLI (and MCP server) that drives a real, persistent browser via Playwright, letting an agent or human control any website from a genuinely logged-in browser session.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"browser",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"incur": "^0.4.10",
|
|
45
|
-
"@webhands/core": "0.
|
|
45
|
+
"@webhands/core": "0.3.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/node": "^25.2.0",
|
package/src/cli.ts
CHANGED
|
@@ -86,8 +86,26 @@ export interface CliDeps {
|
|
|
86
86
|
export type ServeSession = (
|
|
87
87
|
target: OpenTarget,
|
|
88
88
|
options: {root?: string; env?: NodeJS.ProcessEnv},
|
|
89
|
+
launchPolicy?: LaunchPolicy,
|
|
89
90
|
) => Promise<RunningSessionServer>;
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Transport-construction policy for a LAUNCH-mode open: the opt-in stealth
|
|
94
|
+
* toggle and the optional system browser to drive. Kept SEPARATE from
|
|
95
|
+
* {@link OpenTarget} so the seam stays free of Playwright/CDP/stealth concepts
|
|
96
|
+
* (ADR-0003); it rides alongside the target into the transport constructor only.
|
|
97
|
+
* Ignored for attach (the user's own browser is reused as-is).
|
|
98
|
+
*/
|
|
99
|
+
export interface LaunchPolicy {
|
|
100
|
+
/** Opt-in Patchright-backed stealth launch. Default off. */
|
|
101
|
+
readonly stealth?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Drive a browser already installed on the system (e.g. `'chrome'`) instead
|
|
104
|
+
* of the bundled Chromium. Omit for bundled Chromium.
|
|
105
|
+
*/
|
|
106
|
+
readonly systemBrowser?: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
91
109
|
// --- shared schema fragments ----------------------------------------------
|
|
92
110
|
|
|
93
111
|
/**
|
|
@@ -121,6 +139,45 @@ function targetFrom(options: {profile: string; endpoint?: string}): OpenTarget {
|
|
|
121
139
|
return {mode: 'launch', profile: options.profile};
|
|
122
140
|
}
|
|
123
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Stealth launch options shared by `serve` and `launch`. Opt-in and default
|
|
144
|
+
* OFF: vanilla Playwright stays the default. These are CONSUMED when the single
|
|
145
|
+
* session is brought up (the `serve` path actually builds the transport with
|
|
146
|
+
* them, ADR-0005); see the work/ observation
|
|
147
|
+
* `launch-command-connection-options-vestigial-vs-serve`.
|
|
148
|
+
*/
|
|
149
|
+
const stealthOptions = z.object({
|
|
150
|
+
stealth: z
|
|
151
|
+
.boolean()
|
|
152
|
+
.default(false)
|
|
153
|
+
.describe(
|
|
154
|
+
'Launch via the optional Patchright fork to evade the CDP automation ' +
|
|
155
|
+
'tell (requires `pnpm add patchright`). Default: off (vanilla Playwright).',
|
|
156
|
+
),
|
|
157
|
+
'use-system-browser': z
|
|
158
|
+
.string()
|
|
159
|
+
.optional()
|
|
160
|
+
.describe(
|
|
161
|
+
"Drive a browser already installed on the system (e.g. 'chrome', " +
|
|
162
|
+
"'msedge') instead of the bundled Chromium.",
|
|
163
|
+
),
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
/** Resolve the {@link LaunchPolicy} from the shared stealth option fields. */
|
|
167
|
+
function launchPolicyFrom(options: {
|
|
168
|
+
stealth?: boolean;
|
|
169
|
+
'use-system-browser'?: string;
|
|
170
|
+
}): LaunchPolicy {
|
|
171
|
+
return {
|
|
172
|
+
stealth: options.stealth === true,
|
|
173
|
+
systemBrowser:
|
|
174
|
+
options['use-system-browser'] !== undefined &&
|
|
175
|
+
options['use-system-browser'] !== ''
|
|
176
|
+
? options['use-system-browser']
|
|
177
|
+
: undefined,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
|
|
124
181
|
/** The structured output schema shared by verbs that act on a page but return no data. */
|
|
125
182
|
const actionOutput = z.object({
|
|
126
183
|
ok: z.literal(true).describe('The verb completed.'),
|
|
@@ -278,14 +335,18 @@ export function createCli(deps: CliDeps = {}) {
|
|
|
278
335
|
.boolean()
|
|
279
336
|
.default(false)
|
|
280
337
|
.describe('Show the browser window (default: headless).'),
|
|
338
|
+
...stealthOptions.shape,
|
|
281
339
|
}),
|
|
282
340
|
output: z.object({
|
|
283
341
|
mode: z.literal('launch'),
|
|
284
342
|
profile: z.string(),
|
|
285
343
|
headed: z.boolean(),
|
|
344
|
+
stealth: z.boolean(),
|
|
345
|
+
systemBrowser: z.string().optional(),
|
|
286
346
|
}),
|
|
287
347
|
async run(c) {
|
|
288
348
|
try {
|
|
349
|
+
const policy = launchPolicyFrom(c.options);
|
|
289
350
|
return await withSession(
|
|
290
351
|
provider,
|
|
291
352
|
{
|
|
@@ -299,6 +360,10 @@ export function createCli(deps: CliDeps = {}) {
|
|
|
299
360
|
mode: 'launch' as const,
|
|
300
361
|
profile: c.options.profile,
|
|
301
362
|
headed: c.options.headed,
|
|
363
|
+
stealth: policy.stealth === true,
|
|
364
|
+
...(policy.systemBrowser !== undefined
|
|
365
|
+
? {systemBrowser: policy.systemBrowser}
|
|
366
|
+
: {}),
|
|
302
367
|
},
|
|
303
368
|
{
|
|
304
369
|
cta: {
|
|
@@ -331,6 +396,7 @@ export function createCli(deps: CliDeps = {}) {
|
|
|
331
396
|
.boolean()
|
|
332
397
|
.default(false)
|
|
333
398
|
.describe('Show the browser window (default: headless).'),
|
|
399
|
+
...stealthOptions.shape,
|
|
334
400
|
}),
|
|
335
401
|
output: z.object({
|
|
336
402
|
ok: z.literal(true),
|
|
@@ -355,7 +421,11 @@ export function createCli(deps: CliDeps = {}) {
|
|
|
355
421
|
profile: c.options.profile,
|
|
356
422
|
headed: c.options.headed,
|
|
357
423
|
};
|
|
358
|
-
const server = await serveSession(
|
|
424
|
+
const server = await serveSession(
|
|
425
|
+
target,
|
|
426
|
+
home,
|
|
427
|
+
launchPolicyFrom(c.options),
|
|
428
|
+
);
|
|
359
429
|
// Explicit teardown on signal: closing the browser + clearing the
|
|
360
430
|
// endpoint file is the server's `stop`. We DO NOT auto-spawn and we DO
|
|
361
431
|
// NOT auto-teardown on anything but an explicit stop/signal (ADR-0005).
|
|
@@ -744,8 +814,15 @@ export function createCli(deps: CliDeps = {}) {
|
|
|
744
814
|
async function defaultServeSession(
|
|
745
815
|
target: OpenTarget,
|
|
746
816
|
home: {root?: string; env?: NodeJS.ProcessEnv},
|
|
817
|
+
launchPolicy: LaunchPolicy = {},
|
|
747
818
|
): Promise<RunningSessionServer> {
|
|
748
|
-
|
|
819
|
+
// The launch transport is the ONE place the stealth policy takes effect
|
|
820
|
+
// (ADR-0005: serve is the one place a browser is launched). attach reuses the
|
|
821
|
+
// user's own browser, so the policy does not apply there.
|
|
822
|
+
const launch = new PlaywrightLaunchTransport(home, [], {
|
|
823
|
+
stealth: launchPolicy.stealth,
|
|
824
|
+
systemBrowser: launchPolicy.systemBrowser,
|
|
825
|
+
});
|
|
749
826
|
const attach = new PlaywrightAttachTransport();
|
|
750
827
|
const transport: Transport = {
|
|
751
828
|
open(t: OpenTarget): Promise<Session> {
|
package/src/errors.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isControllerError,
|
|
3
3
|
MissingBrowserBinaryError,
|
|
4
|
+
MissingStealthDependencyError,
|
|
4
5
|
MissingProfileError,
|
|
5
6
|
AttachNotChromiumError,
|
|
6
7
|
AttachNoContextError,
|
|
@@ -46,6 +47,11 @@ export function fixCommandFor(error: ControllerError, binary: string): string {
|
|
|
46
47
|
// <browser>` is the documented way to download the missing one. We name
|
|
47
48
|
// the specific browser from the typed error rather than a generic hint.
|
|
48
49
|
return `npx playwright install ${(error as MissingBrowserBinaryError).browser}`;
|
|
50
|
+
case 'missing-stealth-dependency':
|
|
51
|
+
// Stealth launch was opted into but the OPTIONAL `patchright` dependency
|
|
52
|
+
// is absent. Name the package from the typed error so the install command
|
|
53
|
+
// is ready to run; we never silently fall back to vanilla Playwright.
|
|
54
|
+
return `pnpm add ${(error as MissingStealthDependencyError).dependency}`;
|
|
49
55
|
case 'missing-profile':
|
|
50
56
|
// A profile is created by the headed `setup-profile` flow (the ONE place
|
|
51
57
|
// a profile dir is created — see core's MissingProfileError). Name the
|
|
@@ -105,6 +111,7 @@ export function mapControllerError(
|
|
|
105
111
|
// construct/assert against them without reaching into core directly.
|
|
106
112
|
export {
|
|
107
113
|
MissingBrowserBinaryError,
|
|
114
|
+
MissingStealthDependencyError,
|
|
108
115
|
MissingProfileError,
|
|
109
116
|
AttachNotChromiumError,
|
|
110
117
|
AttachNoContextError,
|