webhands 0.1.6 → 0.2.0

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 CHANGED
@@ -97,6 +97,83 @@ 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
+ 3. Optional extra hardening. `--no-viewport` lets the real browser window drive
135
+ its own size instead of Playwright's fixed 1280x720 emulated viewport (a
136
+ known headless tell). It is **defaulted ON under `--stealth`** (Patchright's
137
+ recommended recipe) and is overridable; pass `--viewport` to keep the fixed
138
+ viewport even under stealth. webhands deliberately does **not** override
139
+ `user-agent`, `locale`, `timezone`, or `headers`: a wrong UA is a bigger tell
140
+ than none.
141
+
142
+ Programmatic equivalent (the `--stealth` / `--use-system-browser` /
143
+ `--no-viewport` flags map onto these transport options; the constructor also
144
+ takes `extraLaunchArgs` and `ignoreDefaultArgs` escape hatches for additional
145
+ hardening flags, none of which touch the `OpenTarget` seam):
146
+
147
+ ```ts
148
+ import {PlaywrightLaunchTransport} from '@webhands/core';
149
+
150
+ const transport = new PlaywrightLaunchTransport(
151
+ {}, // profile location (omit for ~/.webhands)
152
+ [], // extra hands
153
+ {stealth: true, systemBrowser: 'chrome'}, // noViewport defaults to true here
154
+ );
155
+ // Stealth + headed + a real logged-in profile is the strongest recipe:
156
+ const session = await transport.open({
157
+ mode: 'launch',
158
+ profile: 'default',
159
+ headed: true,
160
+ });
161
+ ```
162
+
163
+ If stealth is enabled but `patchright` is not installed, the open throws a typed
164
+ `MissingStealthDependencyError` (the CLI prints `pnpm add patchright` as the fix).
165
+ It **never silently falls back** to vanilla Playwright, because that would put
166
+ the tell back without telling you.
167
+
168
+ **Honest caveat.** Stealth addresses ONLY the CDP `Runtime.enable` automation
169
+ tell, and the launch-hardening knobs (`--no-viewport`, `extraLaunchArgs`,
170
+ `ignoreDefaultArgs`) reduce but do **not** eliminate detection. They are
171
+ **necessary-but-not-sufficient**: IP reputation and session/profile
172
+ reputation still matter. The realistic recipe is stealth +
173
+ `systemBrowser: 'chrome'` + headed + a warmed, logged-in profile + a residential
174
+ IP (see
175
+ [`docs/adr/0002`](docs/adr/0002-real-session-over-fingerprint-spoofing.md)).
176
+
100
177
  ## Security note (the `serve` endpoint runs arbitrary code)
101
178
 
102
179
  The page verbs execute caller-supplied expressions: `eval` runs a JS expression
package/dist/cli.d.ts CHANGED
@@ -56,7 +56,31 @@ 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
+ /**
76
+ * Don't impose a fixed emulated viewport (Playwright's `viewport: null`): let
77
+ * the real window drive its own size, a hardening tweak Patchright recommends
78
+ * for its stealth recipe. When omitted, `core` leaves Playwright's default in
79
+ * place EXCEPT under stealth, where it defaults the no-viewport on. Set `false`
80
+ * to keep the fixed viewport even under stealth.
81
+ */
82
+ readonly noViewport?: boolean;
83
+ }
60
84
  /**
61
85
  * Build the `incur` CLI that wraps `core`'s verb surface (PRD Implementation
62
86
  * 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,KAC7C,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAiGnC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,OAAY,gDAkhB3C;AAgED,OAAO,EAAC,WAAW,EAAE,sBAAsB,EAAC,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;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC9B;AA2JD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,IAAI,GAAE,OAAY,gDAmiB3C;AA0ED,OAAO,EAAC,WAAW,EAAE,sBAAsB,EAAC,CAAC"}
package/dist/cli.js CHANGED
@@ -47,6 +47,51 @@ 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
+ // Modelled as a `viewport` boolean so incur's `--no-<flag>` negation gives the
69
+ // task-mandated `--no-viewport`: passing `--no-viewport` sets `viewport=false`
70
+ // (i.e. noViewport=true). Absent => undefined => core decides the default
71
+ // (no-viewport defaults ON under --stealth). Pass `--viewport` to force the
72
+ // fixed emulated viewport even under stealth.
73
+ viewport: z
74
+ .boolean()
75
+ .optional()
76
+ .describe('Emulate a fixed viewport. Use --no-viewport to let the real browser ' +
77
+ 'window drive its own size (a hardening tweak Patchright recommends). ' +
78
+ 'When unset, --no-viewport behaviour defaults ON under --stealth. ' +
79
+ 'Reduces but does not eliminate detection.'),
80
+ });
81
+ /** Resolve the {@link LaunchPolicy} from the shared stealth option fields. */
82
+ function launchPolicyFrom(options) {
83
+ return {
84
+ stealth: options.stealth === true,
85
+ systemBrowser: options['use-system-browser'] !== undefined &&
86
+ options['use-system-browser'] !== ''
87
+ ? options['use-system-browser']
88
+ : undefined,
89
+ // Tri-state: `viewport` undefined leaves core's (stealth-driven) default;
90
+ // `--no-viewport` (viewport=false) => noViewport:true; `--viewport` => false.
91
+ // Only forward when the flag was given.
92
+ ...(options.viewport !== undefined ? { noViewport: !options.viewport } : {}),
93
+ };
94
+ }
50
95
  /** The structured output schema shared by verbs that act on a page but return no data. */
51
96
  const actionOutput = z.object({
52
97
  ok: z.literal(true).describe('The verb completed.'),
@@ -184,14 +229,19 @@ export function createCli(deps = {}) {
184
229
  .boolean()
185
230
  .default(false)
186
231
  .describe('Show the browser window (default: headless).'),
232
+ ...stealthOptions.shape,
187
233
  }),
188
234
  output: z.object({
189
235
  mode: z.literal('launch'),
190
236
  profile: z.string(),
191
237
  headed: z.boolean(),
238
+ stealth: z.boolean(),
239
+ systemBrowser: z.string().optional(),
240
+ noViewport: z.boolean().optional(),
192
241
  }),
193
242
  async run(c) {
194
243
  try {
244
+ const policy = launchPolicyFrom(c.options);
195
245
  return await withSession(provider, {
196
246
  mode: 'launch',
197
247
  profile: c.options.profile,
@@ -200,6 +250,13 @@ export function createCli(deps = {}) {
200
250
  mode: 'launch',
201
251
  profile: c.options.profile,
202
252
  headed: c.options.headed,
253
+ stealth: policy.stealth === true,
254
+ ...(policy.systemBrowser !== undefined
255
+ ? { systemBrowser: policy.systemBrowser }
256
+ : {}),
257
+ ...(policy.noViewport !== undefined
258
+ ? { noViewport: policy.noViewport }
259
+ : {}),
203
260
  }, {
204
261
  cta: {
205
262
  commands: [
@@ -227,6 +284,7 @@ export function createCli(deps = {}) {
227
284
  .boolean()
228
285
  .default(false)
229
286
  .describe('Show the browser window (default: headless).'),
287
+ ...stealthOptions.shape,
230
288
  }),
231
289
  output: z.object({
232
290
  ok: z.literal(true),
@@ -250,7 +308,7 @@ export function createCli(deps = {}) {
250
308
  profile: c.options.profile,
251
309
  headed: c.options.headed,
252
310
  };
253
- const server = await serveSession(target, home);
311
+ const server = await serveSession(target, home, launchPolicyFrom(c.options));
254
312
  // Explicit teardown on signal: closing the browser + clearing the
255
313
  // endpoint file is the server's `stop`. We DO NOT auto-spawn and we DO
256
314
  // NOT auto-teardown on anything but an explicit stop/signal (ADR-0005).
@@ -594,8 +652,17 @@ export function createCli(deps = {}) {
594
652
  * place a real browser is launched in the ADR-0005 model; verb commands are thin
595
653
  * clients and never launch.
596
654
  */
597
- async function defaultServeSession(target, home) {
598
- const launch = new PlaywrightLaunchTransport(home);
655
+ async function defaultServeSession(target, home, launchPolicy = {}) {
656
+ // The launch transport is the ONE place the stealth policy takes effect
657
+ // (ADR-0005: serve is the one place a browser is launched). attach reuses the
658
+ // user's own browser, so the policy does not apply there.
659
+ const launch = new PlaywrightLaunchTransport(home, [], {
660
+ stealth: launchPolicy.stealth,
661
+ systemBrowser: launchPolicy.systemBrowser,
662
+ ...(launchPolicy.noViewport !== undefined
663
+ ? { noViewport: launchPolicy.noViewport }
664
+ : {}),
665
+ });
599
666
  const attach = new PlaywrightAttachTransport();
600
667
  const transport = {
601
668
  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
@@ -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,CAmC5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GACZ,WAAW,GAAG,SAAS,CASzB;AAID,OAAO,EACN,yBAAyB,EACzB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,GACzB,CAAC;AACF,YAAY,EAAC,eAAe,EAAE,mBAAmB,EAAC,CAAC"}
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
@@ -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 };
@@ -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,GAGf,MAAM,UAAU,CAAC;AAElB,OAAO,EACN,4BAA4B,GAG5B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC"}
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.6",
3
+ "version": "0.2.0",
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.2.0"
45
+ "@webhands/core": "0.4.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/node": "^25.2.0",
package/src/cli.ts CHANGED
@@ -86,8 +86,34 @@ 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
+ * Don't impose a fixed emulated viewport (Playwright's `viewport: null`): let
109
+ * the real window drive its own size, a hardening tweak Patchright recommends
110
+ * for its stealth recipe. When omitted, `core` leaves Playwright's default in
111
+ * place EXCEPT under stealth, where it defaults the no-viewport on. Set `false`
112
+ * to keep the fixed viewport even under stealth.
113
+ */
114
+ readonly noViewport?: boolean;
115
+ }
116
+
91
117
  // --- shared schema fragments ----------------------------------------------
92
118
 
93
119
  /**
@@ -121,6 +147,64 @@ function targetFrom(options: {profile: string; endpoint?: string}): OpenTarget {
121
147
  return {mode: 'launch', profile: options.profile};
122
148
  }
123
149
 
150
+ /**
151
+ * Stealth launch options shared by `serve` and `launch`. Opt-in and default
152
+ * OFF: vanilla Playwright stays the default. These are CONSUMED when the single
153
+ * session is brought up (the `serve` path actually builds the transport with
154
+ * them, ADR-0005); see the work/ observation
155
+ * `launch-command-connection-options-vestigial-vs-serve`.
156
+ */
157
+ const stealthOptions = z.object({
158
+ stealth: z
159
+ .boolean()
160
+ .default(false)
161
+ .describe(
162
+ 'Launch via the optional Patchright fork to evade the CDP automation ' +
163
+ 'tell (requires `pnpm add patchright`). Default: off (vanilla Playwright).',
164
+ ),
165
+ 'use-system-browser': z
166
+ .string()
167
+ .optional()
168
+ .describe(
169
+ "Drive a browser already installed on the system (e.g. 'chrome', " +
170
+ "'msedge') instead of the bundled Chromium.",
171
+ ),
172
+ // Modelled as a `viewport` boolean so incur's `--no-<flag>` negation gives the
173
+ // task-mandated `--no-viewport`: passing `--no-viewport` sets `viewport=false`
174
+ // (i.e. noViewport=true). Absent => undefined => core decides the default
175
+ // (no-viewport defaults ON under --stealth). Pass `--viewport` to force the
176
+ // fixed emulated viewport even under stealth.
177
+ viewport: z
178
+ .boolean()
179
+ .optional()
180
+ .describe(
181
+ 'Emulate a fixed viewport. Use --no-viewport to let the real browser ' +
182
+ 'window drive its own size (a hardening tweak Patchright recommends). ' +
183
+ 'When unset, --no-viewport behaviour defaults ON under --stealth. ' +
184
+ 'Reduces but does not eliminate detection.',
185
+ ),
186
+ });
187
+
188
+ /** Resolve the {@link LaunchPolicy} from the shared stealth option fields. */
189
+ function launchPolicyFrom(options: {
190
+ stealth?: boolean;
191
+ 'use-system-browser'?: string;
192
+ viewport?: boolean;
193
+ }): LaunchPolicy {
194
+ return {
195
+ stealth: options.stealth === true,
196
+ systemBrowser:
197
+ options['use-system-browser'] !== undefined &&
198
+ options['use-system-browser'] !== ''
199
+ ? options['use-system-browser']
200
+ : undefined,
201
+ // Tri-state: `viewport` undefined leaves core's (stealth-driven) default;
202
+ // `--no-viewport` (viewport=false) => noViewport:true; `--viewport` => false.
203
+ // Only forward when the flag was given.
204
+ ...(options.viewport !== undefined ? {noViewport: !options.viewport} : {}),
205
+ };
206
+ }
207
+
124
208
  /** The structured output schema shared by verbs that act on a page but return no data. */
125
209
  const actionOutput = z.object({
126
210
  ok: z.literal(true).describe('The verb completed.'),
@@ -278,14 +362,19 @@ export function createCli(deps: CliDeps = {}) {
278
362
  .boolean()
279
363
  .default(false)
280
364
  .describe('Show the browser window (default: headless).'),
365
+ ...stealthOptions.shape,
281
366
  }),
282
367
  output: z.object({
283
368
  mode: z.literal('launch'),
284
369
  profile: z.string(),
285
370
  headed: z.boolean(),
371
+ stealth: z.boolean(),
372
+ systemBrowser: z.string().optional(),
373
+ noViewport: z.boolean().optional(),
286
374
  }),
287
375
  async run(c) {
288
376
  try {
377
+ const policy = launchPolicyFrom(c.options);
289
378
  return await withSession(
290
379
  provider,
291
380
  {
@@ -299,6 +388,13 @@ export function createCli(deps: CliDeps = {}) {
299
388
  mode: 'launch' as const,
300
389
  profile: c.options.profile,
301
390
  headed: c.options.headed,
391
+ stealth: policy.stealth === true,
392
+ ...(policy.systemBrowser !== undefined
393
+ ? {systemBrowser: policy.systemBrowser}
394
+ : {}),
395
+ ...(policy.noViewport !== undefined
396
+ ? {noViewport: policy.noViewport}
397
+ : {}),
302
398
  },
303
399
  {
304
400
  cta: {
@@ -331,6 +427,7 @@ export function createCli(deps: CliDeps = {}) {
331
427
  .boolean()
332
428
  .default(false)
333
429
  .describe('Show the browser window (default: headless).'),
430
+ ...stealthOptions.shape,
334
431
  }),
335
432
  output: z.object({
336
433
  ok: z.literal(true),
@@ -355,7 +452,11 @@ export function createCli(deps: CliDeps = {}) {
355
452
  profile: c.options.profile,
356
453
  headed: c.options.headed,
357
454
  };
358
- const server = await serveSession(target, home);
455
+ const server = await serveSession(
456
+ target,
457
+ home,
458
+ launchPolicyFrom(c.options),
459
+ );
359
460
  // Explicit teardown on signal: closing the browser + clearing the
360
461
  // endpoint file is the server's `stop`. We DO NOT auto-spawn and we DO
361
462
  // NOT auto-teardown on anything but an explicit stop/signal (ADR-0005).
@@ -744,8 +845,18 @@ export function createCli(deps: CliDeps = {}) {
744
845
  async function defaultServeSession(
745
846
  target: OpenTarget,
746
847
  home: {root?: string; env?: NodeJS.ProcessEnv},
848
+ launchPolicy: LaunchPolicy = {},
747
849
  ): Promise<RunningSessionServer> {
748
- const launch = new PlaywrightLaunchTransport(home);
850
+ // The launch transport is the ONE place the stealth policy takes effect
851
+ // (ADR-0005: serve is the one place a browser is launched). attach reuses the
852
+ // user's own browser, so the policy does not apply there.
853
+ const launch = new PlaywrightLaunchTransport(home, [], {
854
+ stealth: launchPolicy.stealth,
855
+ systemBrowser: launchPolicy.systemBrowser,
856
+ ...(launchPolicy.noViewport !== undefined
857
+ ? {noViewport: launchPolicy.noViewport}
858
+ : {}),
859
+ });
749
860
  const attach = new PlaywrightAttachTransport();
750
861
  const transport: Transport = {
751
862
  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,
package/src/index.ts CHANGED
@@ -20,6 +20,7 @@ export {
20
20
  CLI_NAME,
21
21
  DEFAULT_PROFILE,
22
22
  type CliDeps,
23
+ type LaunchPolicy,
23
24
  type ServeSession,
24
25
  } from './cli.js';
25
26