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 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,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;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
- const launch = new PlaywrightLaunchTransport(home);
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":"AAAA,OAAO,EAAC,GAAG,EAAE,CAAC,EAAC,MAAM,OAAO,CAAC;AAC7B,OAAO,EACN,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,yBAAyB,EACzB,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,GAQlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAC/C,OAAO,EACN,4BAA4B,GAE5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC,MAAM,WAAW,GAChB,wEAAwE;IACxE,4EAA4E,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AA8DzC,6EAA6E;AAE7E;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC;SACR,MAAM,EAAE;SACR,OAAO,CAAC,eAAe,CAAC;SACxB,QAAQ,CAAC,oDAAoD,CAAC;IAChE,QAAQ,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACR,6DAA6D;QAC5D,2EAA2E,CAC5E;CACF,CAAC,CAAC;AAEH,kFAAkF;AAClF,SAAS,UAAU,CAAC,OAA6C;IAChE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/D,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC;SACR,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACR,sEAAsE;QACrE,2EAA2E,CAC5E;IACF,oBAAoB,EAAE,CAAC;SACrB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACR,kEAAkE;QACjE,4CAA4C,CAC7C;CACF,CAAC,CAAC;AAEH,8EAA8E;AAC9E,SAAS,gBAAgB,CAAC,OAGzB;IACA,OAAO;QACN,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;QACjC,aAAa,EACZ,OAAO,CAAC,oBAAoB,CAAC,KAAK,SAAS;YAC3C,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE;YACnC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;YAC/B,CAAC,CAAC,SAAS;KACb,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAC/C,CAAC,CAAC;AAEH,6EAA6E;AAE7E;;;;;;;GAOG;AACH,SAAS,YAAY;IACpB,OAAO;QACN,OAAO,EAAE,UAAU;QACnB,WAAW,EACV,sEAAsE;KACvE,CAAC;AACH,CAAC;AACD,SAAS,OAAO;IACf,OAAO;QACN;YACC,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,4DAA4D;SACzE;QACD;YACC,OAAO,EAAE,MAAM;YACf,WAAW,EACV,gEAAgE;SACjE;QACD;YACC,OAAO,EAAE,MAAM;YACf,WAAW,EAAE,gDAAgD;SAC7D;KACD,CAAC;AACH,CAAC;AAED,8EAA8E;AAE9E;;;;;GAKG;AACH,KAAK,UAAU,WAAW,CACzB,QAAyB,EACzB,MAAkB,EAClB,EAAoC;IAEpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC;QACJ,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;YAAS,CAAC;QACV,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAAC,OAAgB,EAAE;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC;IACxB,MAAM,QAAQ,GACb,IAAI,CAAC,eAAe,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;QAC9B,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO;QAChC,2EAA2E;KAC3E,CAAC,CAAC;IAEH,0EAA0E;IAE1E,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE;QAC5B,WAAW,EACV,4EAA4E;YAC5E,mDAAmD;QACpD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,OAAO,CAAC,eAAe,CAAC;iBACxB,QAAQ,CAAC,0CAA0C,CAAC;SACtD,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC5D,UAAU,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,4CAA4C,CAAC;SACxD,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,MAAM,EAAC,OAAO,EAAE,QAAQ,EAAC,GAAG,MAAM,eAAe,CAAC;oBACjD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;oBAC1B,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;iBACpB,CAAC,CAAC;gBACH,sEAAsE;gBACtE,kEAAkE;gBAClE,qEAAqE;gBACrE,oEAAoE;gBACpE,sEAAsE;gBACtE,6DAA6D;gBAC7D,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC7B,OAAO,CAAC,CAAC,EAAE,CACV,EAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAC,EAC5D;oBACC,GAAG,EAAE;wBACJ,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,QAAQ;gCACjB,OAAO,EAAE,EAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAC;gCACpC,WAAW,EACV,qDAAqD;6BACtD;yBACD;qBACD;iBACD,CACD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;QACrB,WAAW,EACV,4FAA4F;QAC7F,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,OAAO,CAAC,eAAe,CAAC;iBACxB,QAAQ,CAAC,sCAAsC,CAAC;YAClD,MAAM,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,8CAA8C,CAAC;YAC1D,GAAG,cAAc,CAAC,KAAK;SACvB,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;YACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;YACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACpC,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC3C,OAAO,MAAM,WAAW,CACvB,QAAQ,EACR;oBACC,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;oBAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;iBACxB,EACD,KAAK,IAAI,EAAE,CACV,CAAC,CAAC,EAAE,CACH;oBACC,IAAI,EAAE,QAAiB;oBACvB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;oBAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;oBACxB,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI;oBAChC,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS;wBACrC,CAAC,CAAC,EAAC,aAAa,EAAE,MAAM,CAAC,aAAa,EAAC;wBACvC,CAAC,CAAC,EAAE,CAAC;iBACN,EACD;oBACC,GAAG,EAAE;wBACJ,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,MAAM;gCACf,WAAW,EAAE,sCAAsC;6BACnD;4BACD,YAAY,EAAE;yBACd;qBACD;iBACD,CACD,CACF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,4EAA4E;IAE5E,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,WAAW,EACV,0EAA0E;YAC1E,wEAAwE;YACxE,wCAAwC;QACzC,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,8CAA8C,CAAC;YAC1D,GAAG,cAAc,CAAC,KAAK;SACvB,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;YACxB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YACxE,GAAG,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,gDAAgD,CAAC;SAC5D,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,uEAAuE;gBACvE,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,IAAI,yBAAyB,EAAE,CAAC;gBACvC,CAAC;gBACD,MAAM,MAAM,GACX,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,EAAE;oBAC5D,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAC;oBAChD,CAAC,CAAC;wBACA,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;wBAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM;qBACxB,CAAC;gBACL,MAAM,MAAM,GAAG,MAAM,YAAY,CAChC,MAAM,EACN,IAAI,EACJ,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAC3B,CAAC;gBACF,kEAAkE;gBAClE,uEAAuE;gBACvE,wEAAwE;gBACxE,MAAM,QAAQ,GAAG,GAAG,EAAE;oBACrB,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,CAAC,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAClC,OAAO,CAAC,CAAC,EAAE,CACV;oBACC,EAAE,EAAE,IAAa;oBACjB,IAAI,EAAE,OAAgB;oBACtB,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;oBACxB,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG;iBACxB,EACD;oBACC,GAAG,EAAE;wBACJ,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,MAAM;gCACf,WAAW,EACV,6DAA6D;6BAC9D;4BACD;gCACC,OAAO,EAAE,MAAM;gCACf,WAAW,EAAE,+BAA+B;6BAC5C;yBACD;qBACD;iBACD,CACD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,WAAW,EACV,8EAA8E;QAC/E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,CAAC,wDAAwD,CAAC;SACpE,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACjD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC5B,mEAAmE;oBACnE,4DAA4D;oBAC5D,OAAO,CAAC,CAAC,EAAE,CAAC;wBACX,EAAE,EAAE,IAAa;wBACjB,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE,KAAK;qBACd,CAAC,CAAC;gBACJ,CAAC;gBACD,uEAAuE;gBACvE,uEAAuE;gBACvE,wEAAwE;gBACxE,6CAA6C;gBAC7C,IAAI,CAAC;oBACJ,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACR,iEAAiE;gBAClE,CAAC;gBACD,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,CAAC,CAAC,EAAE,CAAC;oBACX,EAAE,EAAE,IAAa;oBACjB,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,IAAI;iBACb,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE;QACrB,WAAW,EACV,mGAAmG;QACpG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,QAAQ,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,CACR,gFAAgF,CAChF;SACF,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CACvB,QAAQ,EACR,EAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAC,EAC9C,KAAK,IAAI,EAAE,CACV,CAAC,CAAC,EAAE,CACH,EAAC,IAAI,EAAE,QAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAC,EACvD;oBACC,GAAG,EAAE;wBACJ,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,MAAM;gCACf,WAAW,EAAE,sCAAsC;6BACnD;4BACD,YAAY,EAAE;yBACd;qBACD;iBACD,CACD,CACF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,0EAA0E;IAE1E,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,WAAW,EAAE,sDAAsD;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAC,CAAC;QACrE,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;SAC1D,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,OAAO,CAAC,CAAC,EAAE,CACV,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,MAAe,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAC,EAC3D,EAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,EAAC,EAAC,CACnC,CAAC;gBACH,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE;QACvB,WAAW,EACV,kGAAkG;QACnG,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC;YACjC,IAAI,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,uDAAuD,CAAC;SACnE,CAAC;QACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC1D,IAAI,EAAE,CAAC;iBACL,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;iBAC/B,QAAQ,CAAC,mCAAmC,CAAC;YAC/C,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,8CAA8C,CAAC;SAC1D,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAC,CAAC,CAAC;oBAC3D,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,EAAC,EAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;QACpB,WAAW,EACV,iEAAiE;QAClE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CACR,oFAAoF,CACpF;SACF,CAAC;QACF,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC5C,OAAO,CAAC,CAAC,EAAE,CACV,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,OAAgB,EAAC,EAC3C,EAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,EAAC,EAAC,CACnC,CAAC;gBACH,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,WAAW,EACV,0EAA0E;QAC3E,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,2DAA2D,CAAC;YACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAC/D,CAAC;QACF,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACxD,OAAO,CAAC,CAAC,EAAE,CACV,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,MAAe,EAAC,EAC1C,EAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,EAAC,EAAC,CACnC,CAAC;gBACH,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,WAAW,EACV,oFAAoF;QACrF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,UAAU,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CACR,sEAAsE,CACtE;SACF,CAAC;QACF,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,MAAM,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,CAAC,sDAAsD,CAAC;SAClE,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACpD,OAAO,CAAC,CAAC,EAAE,CACV,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,MAAe,EAAE,MAAM,EAAC,EAClD,EAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,EAAC,EAAC,CACnC,CAAC;gBACH,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;QACnB,WAAW,EACV,qFAAqF;QACtF,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC;YACjC,EAAE,EAAE,CAAC,CAAC,MAAM;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6CAA6C,CAAC;YACzD,OAAO,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;YACxE,UAAU,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,2DAA2D,CAAC;SACvE,CAAC;QACF,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;SAClD,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,CAAC,CAAC,KAAK,CAAC;oBACd,IAAI,EAAE,cAAc;oBACpB,OAAO,EACN,wEAAwE;iBACzE,CAAC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,OAAO,CAAC,CAAC,EAAE,CACV,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAC,EAChE,EAAC,GAAG,EAAE,EAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,EAAC,EAAC,CACnC,CAAC;gBACH,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IAEH,6EAA6E;IAC7E,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE;QACrC,WAAW,EACV,4EAA4E;KAC7E,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;QACzB,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;SACjE,CAAC;QACF,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACzD,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACnC,MAAM,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC5D,OAAO,CAAC,CAAC,EAAE,CAAC;wBACX,EAAE,EAAE,IAAa;wBACjB,IAAI,EAAE,gBAAyB;wBAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;wBACjB,KAAK,EAAE,GAAG,CAAC,MAAM;qBACjB,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IACH,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;QACzB,WAAW,EAAE,2DAA2D;QACxE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SACrE,CAAC;QACF,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;YAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;SACzD,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,CAAC;YACV,IAAI,CAAC;gBACJ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACxC,OAAO,MAAM,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACrE,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAA2B,CAAC,CAAC;oBACrD,OAAO,CAAC,CAAC,EAAE,CAAC;wBACX,EAAE,EAAE,IAAa;wBACjB,IAAI,EAAE,gBAAyB;wBAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;wBACjB,KAAK,EAAE,MAAM,CAAC,MAAM;qBACpB,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;KACD,CAAC,CAAC;IACH,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,mBAAmB,CACjC,MAAkB,EAClB,IAA8C,EAC9C,eAA6B,EAAE;IAE/B,wEAAwE;IACxE,8EAA8E;IAC9E,0DAA0D;IAC1D,MAAM,MAAM,GAAG,IAAI,yBAAyB,CAAC,IAAI,EAAE,EAAE,EAAE;QACtD,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,aAAa,EAAE,YAAY,CAAC,aAAa;KACzC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAc;QAC5B,IAAI,CAAC,CAAa;YACjB,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;KACD,CAAC;IACF,MAAM,OAAO,GAAyB,EAAC,GAAG,IAAI,EAAE,SAAS,EAAC,CAAC;IAC3D,OAAO,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,OAI1B;IACA,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAC,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,EAAE;QAC1D,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAS,IAAI,CACZ,CAAyD,EACzD,KAAc,EACd,MAAc;IAEd,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC;AAC5C,CAAC;AAED,wEAAwE;AACxE,OAAO,EAAC,WAAW,EAAE,sBAAsB,EAAC,CAAC"}
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.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.2.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(target, home);
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
- const launch = new PlaywrightLaunchTransport(home);
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,
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