@hy-sde-org/dsh-browser 0.1.2-rc.1 → 0.1.6-alpha.2

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
@@ -1,12 +1,12 @@
1
1
  # @hy-sde-org/dsh-browser
2
2
 
3
- The host `ctx.browser` service for the agentic browser tool (ported from omp / oh-my-pi): it owns real browser connections over Chrome DevTools Protocol through [playwright-core CDP](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp), with three backends — **launch** (stealth-patched browser binary), **attach** (existing CDP endpoint via `cdp_url`), and **relay** (the user's own Chrome tabs through an in-process relay server + companion MV3 extension). Intended to be consumed by [`@hy-sde-org/dsh-tool-browser`](../tool-browser/README.md), never by the model directly. A standalone plugin — no upstream harness changes required; installs on official DeepSeek Harness releases (`0.1.2-rc.1` and later).
3
+ The host `ctx.browser` service for the agentic browser tool (ported from omp / oh-my-pi): it owns real browser connections over Chrome DevTools Protocol through [playwright-core CDP](https://playwright.dev/docs/api/class-browsertype#browser-type-connect-over-cdp), with four backends — **launch** (stealth-patched browser binary), **patch** (the CloakBrowser Chromium, source-level C++ fingerprint patches, via the optional `cloakbrowser` peer), **attach** (existing CDP endpoint via `cdp_url`), and **relay** (the user's own Chrome tabs through an in-process relay server + companion MV3 extension). Intended to be consumed by [`@hy-sde-org/dsh-tool-browser`](../tool-browser/README.md), never by the model directly. A standalone plugin — no upstream harness changes required; installs on official DeepSeek Harness releases (`0.1.2-rc.1` and later).
4
4
 
5
5
  ## What it does
6
6
 
7
7
  Registers one host service on the composition (`ctx.browser`). The surface:
8
8
 
9
- - **Backends** — `resolveKind` maps a tool request to `launch` / `attach` / `relay`, mirroring omp's kind resolution (`app.path` → spawn, `app.cdp_url` → attach, `app.relay` / `DSH_BROWSER_RELAY` → relay); `ensureRelay` starts the in-process relay server (default `http://127.0.0.1:9224`, ephemeral port fallback).
9
+ - **Backends** — `resolveKind` maps a tool request to `launch` / `patch` / `attach` / `relay`, mirroring omp's kind resolution (`app.path` → spawn, `app.patch` / `usePatch` → CloakBrowser, `app.cdp_url` → attach, `app.relay` / `DSH_BROWSER_RELAY` → relay); `ensureRelay` starts the in-process relay server (default `http://127.0.0.1:9224`, ephemeral port fallback).
10
10
  - **Tabs** — `open` navigates a named tab (one tab per name, one browser connection per cwd+kind); `run` evaluates JS in a tab; `observe` returns title/url/size + an ARIA snapshot with `[ref=eN]` ids; `click`/`type` address elements by ARIA ref or CSS selector; `screenshot` writes a PNG; `close` closes tabs and, with `kill`, spawned browsers.
11
11
  - **Stealth** — the 14 omp-puppeteer init scripts run in every launched page (`src/stealth-scripts.ts`, generated), the machine-tell launch flags are suppressed, and a spoofed user-agent + client-hints override is applied on the browser CDP session.
12
12
 
@@ -17,14 +17,19 @@ The ARIA snapshot is produced by the bundled Playwright ARIA-snapshot sources (A
17
17
  | kind | resolution | browser |
18
18
  | --- | --- | --- |
19
19
  | `launch` | `app.path` (or `browserPath` config) | `chromium.launch({ executablePath, headless, args: STEALTH_LAUNCH_ARGS, ignoreDefaultArgs })` |
20
+ | `patch` | `app.patch` / `usePatch` config | `cloakbrowser.launch(...)` — the CloakBrowser Chromium (71 source-level C++ fingerprint patches, per-session randomization) |
20
21
  | `attach` | `app.cdp_url` | `chromium.connectOverCDP(cdpUrl)` — any real Chrome family endpoint |
21
22
  | `relay` | `app.relay` / `DSH_BROWSER_RELAY=1` | `chromium.connectOverCDP(relay)` — the relay impersonates Chrome's CDP discovery |
22
23
 
24
+ The `patch` backend is powered by the **optional** `cloakbrowser` peer (`npm i cloakbrowser`): a drop-in Playwright replacement whose Chromium is patched at the C++ level (canvas, WebGL, audio, fonts, GPU, screen, WebRTC, network timing, automation signals). The first launch auto-downloads its patched Chromium (~200 MB, cached under `~/.cloakbrowser/`). Because CloakBrowser randomizes fingerprints per session at the browser layer, the dsh-browser UA override and JS init scripts are **deliberately not applied** on this backend. Useful extra flags via `patchOptions`: `proxy`, `geoip` (match timezone+locale to the proxy IP), `humanize` (human-like input). Nothing is guaranteed per site — anti-detection raises the bar, it does not make a site accessible.
25
+
23
26
  The relay (`src/relay/server.ts`, `bridge.ts`, a port of omp's) binds loopback, serves `GET /json/version` (503 until the extension connects), `GET /json`, `WS /cdp` (downstream CDP clients), `WS /ext` (the extension, token-gated when configured), and `GET /ext-assets/*` so the extension can be sideloaded from `chrome://extensions` → Load unpacked. The bridge multiplexes every downstream CDP connection over the extension's one `chrome.debugger` attachment per tab with minted session ids — the same design as `omp browser-relay` (MIT).
24
27
 
25
28
  ## Configuration
26
29
 
27
30
  - `browserPath` — default executable for `launch` (optional; Playwright resolves one).
31
+ - `usePatch` — prefer the CloakBrowser backend when no path/cdp_url/relay is requested (optional; needs the `cloakbrowser` peer).
32
+ - `patchOptions` — CloakBrowser launch flags: `proxy` (URL), `geoip` (bool), `humanize` (bool).
28
33
  - `headless` — default headless (true).
29
34
  - `viewport` — launch viewport (default 1365×768 @ 1.25).
30
35
  - `relayUrl` / `relayToken` — relay endpoint and optional extension token.
@@ -0,0 +1,42 @@
1
+ /**
2
+ * CloakBrowser backend (`app.patch`): launch the CloakBrowser Chromium — a
3
+ * fork carrying 71 source-level C++ fingerprint patches (canvas, WebGL,
4
+ * audio, fonts, GPU, screen, WebRTC, network timing, automation signals) —
5
+ * through the `cloakbrowser` npm package, a drop-in Playwright replacement:
6
+ * its `launch()` returns a plain Playwright-compatible `Browser` over its
7
+ * patched Chromium binary.
8
+ *
9
+ * `cloakbrowser` is an OPTIONAL peer: it is dynamically imported here with a
10
+ * computed specifier (same technique as @hy-sde-org/dsh-tool-library-search's
11
+ * optional transformers embedder) so the package keeps zero hard dependency on
12
+ * it. The first launch auto-downloads the patched Chromium (~200 MB, cached
13
+ * under `~/.cloakbrowser/`); every launch randomizes per-session fingerprints
14
+ * at the C++ layer, so the dsh-browser UA override and JS init scripts are
15
+ * deliberately NOT applied on this backend (they would fight the
16
+ * randomization).
17
+ * @module @hy-sde-org/dsh-browser/cloak
18
+ */
19
+ /** Raised when the CloakBrowser backend is requested but not usable. */
20
+ export declare class CloakUnavailableError extends Error {
21
+ constructor(message: string);
22
+ }
23
+ /** Launch options passed through to `cloakbrowser.launch()` (README surface). */
24
+ export interface CloakLaunchOptions {
25
+ /** Headless mode (default: the service's `headless` config, usually true). */
26
+ headless?: boolean;
27
+ /** Proxy URL passed to the browser (e.g. a residential proxy). */
28
+ proxy?: string;
29
+ /** Match timezone + locale to the proxy IP (needs `proxy`). */
30
+ geoip?: boolean;
31
+ /** Human-like mouse, keyboard, scroll behaviour. */
32
+ humanize?: boolean;
33
+ }
34
+ /**
35
+ * Launch a CloakBrowser Chromium.
36
+ * @param options - launch options (headless/proxy/geoip/humanize passthrough).
37
+ * @returns the Playwright-compatible `Browser` (cast by the caller).
38
+ * @throws {CloakUnavailableError} when `cloakbrowser` is not installed or has
39
+ * no `launch` export (too old / wrong package).
40
+ */
41
+ export declare function launchCloakBrowser(options: CloakLaunchOptions): Promise<unknown>;
42
+ //# sourceMappingURL=cloak.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloak.d.ts","sourceRoot":"","sources":["../src/cloak.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,wEAAwE;AACxE,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,iFAAiF;AACjF,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBtF"}
package/dist/cloak.js ADDED
@@ -0,0 +1,67 @@
1
+ /**
2
+ * CloakBrowser backend (`app.patch`): launch the CloakBrowser Chromium — a
3
+ * fork carrying 71 source-level C++ fingerprint patches (canvas, WebGL,
4
+ * audio, fonts, GPU, screen, WebRTC, network timing, automation signals) —
5
+ * through the `cloakbrowser` npm package, a drop-in Playwright replacement:
6
+ * its `launch()` returns a plain Playwright-compatible `Browser` over its
7
+ * patched Chromium binary.
8
+ *
9
+ * `cloakbrowser` is an OPTIONAL peer: it is dynamically imported here with a
10
+ * computed specifier (same technique as @hy-sde-org/dsh-tool-library-search's
11
+ * optional transformers embedder) so the package keeps zero hard dependency on
12
+ * it. The first launch auto-downloads the patched Chromium (~200 MB, cached
13
+ * under `~/.cloakbrowser/`); every launch randomizes per-session fingerprints
14
+ * at the C++ layer, so the dsh-browser UA override and JS init scripts are
15
+ * deliberately NOT applied on this backend (they would fight the
16
+ * randomization).
17
+ * @module @hy-sde-org/dsh-browser/cloak
18
+ */
19
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
20
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
21
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
22
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
23
+ });
24
+ }
25
+ return path;
26
+ };
27
+ /** Raised when the CloakBrowser backend is requested but not usable. */
28
+ export class CloakUnavailableError extends Error {
29
+ constructor(message) {
30
+ super(message);
31
+ this.name = 'CloakUnavailableError';
32
+ }
33
+ }
34
+ /**
35
+ * Launch a CloakBrowser Chromium.
36
+ * @param options - launch options (headless/proxy/geoip/humanize passthrough).
37
+ * @returns the Playwright-compatible `Browser` (cast by the caller).
38
+ * @throws {CloakUnavailableError} when `cloakbrowser` is not installed or has
39
+ * no `launch` export (too old / wrong package).
40
+ */
41
+ export async function launchCloakBrowser(options) {
42
+ // Computed specifier: keeps the OPTIONAL peer out of static type resolution
43
+ // (it is not installed in base deployments) while still allowing a runtime
44
+ // `npm i cloakbrowser` to be picked up lazily. Typed as `string` so tsc
45
+ // never tries to resolve it.
46
+ const moduleName = 'cloakbrowser';
47
+ let mod;
48
+ try {
49
+ mod = await import(__rewriteRelativeImportExtension(moduleName));
50
+ }
51
+ catch {
52
+ throw new CloakUnavailableError('browser app.patch: install the optional peer `cloakbrowser` (npm i cloakbrowser) to use this backend '
53
+ + '— its first launch auto-downloads the patched Chromium (~200MB, cached under ~/.cloakbrowser/).');
54
+ }
55
+ if (typeof mod.launch !== 'function') {
56
+ throw new CloakUnavailableError('browser app.patch: the installed `cloakbrowser` has no `launch` export — install a current version (>=0.5).');
57
+ }
58
+ const launchOptions = { headless: options.headless ?? true };
59
+ if (options.proxy !== undefined)
60
+ launchOptions.proxy = options.proxy;
61
+ if (options.geoip === true)
62
+ launchOptions.geoip = true;
63
+ if (options.humanize === true)
64
+ launchOptions.humanize = true;
65
+ return mod.launch(launchOptions);
66
+ }
67
+ //# sourceMappingURL=cloak.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloak.js","sourceRoot":"","sources":["../src/cloak.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;;;;;;;;;AAEH,wEAAwE;AACxE,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AAcD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA2B;IAClE,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,6BAA6B;IAC7B,MAAM,UAAU,GAAW,cAAc,CAAA;IACzC,IAAI,GAAyE,CAAA;IAC7E,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,kCAAC,UAAU,EAAyE,CAAA;IACxG,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,qBAAqB,CAC7B,uGAAuG;cACrG,iGAAiG,CACpG,CAAA;IACH,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,qBAAqB,CAC7B,6GAA6G,CAC9G,CAAA;IACH,CAAC;IACD,MAAM,aAAa,GAA4B,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAA;IACrF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,aAAa,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IACpE,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;QAAE,aAAa,CAAC,KAAK,GAAG,IAAI,CAAA;IACtD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;QAAE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAA;IAC5D,OAAO,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AAClC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ import type { BrowserConfig } from './types.ts';
17
17
  export * from './types.ts';
18
18
  export * from './aria.ts';
19
19
  export * from './stealth.ts';
20
+ export * from './cloak.ts';
20
21
  export * from './service.ts';
21
22
  export * from './relay/kind.ts';
22
23
  export * from './relay/protocol.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AAEnC,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,uEAAuE;QACvE,OAAO,EAAE,cAAc,CAAA;KACxB;CACF;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI,CAEpE;AAED,iDAAiD;AACjD,eAAO,MAAM,IAAI,YAAY,CAAA;;;;;AAE7B,wBAA8B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AAEnC,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,uEAAuE;QACvE,OAAO,EAAE,cAAc,CAAA;KACxB;CACF;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,aAAkB,GAAG,IAAI,CAEpE;AAED,iDAAiD;AACjD,eAAO,MAAM,IAAI,YAAY,CAAA;;;;;AAE7B,wBAA8B"}
package/dist/index.js CHANGED
@@ -15,6 +15,7 @@ import { BrowserService } from "./service.js";
15
15
  export * from "./types.js";
16
16
  export * from "./aria.js";
17
17
  export * from "./stealth.js";
18
+ export * from "./cloak.js";
18
19
  export * from "./service.js";
19
20
  export * from "./relay/kind.js";
20
21
  export * from "./relay/protocol.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AASnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAwB,EAAE;IAC5D,KAAK,IAAI,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AACtC,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAA;AAE7B,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AASnC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAwB,EAAE;IAC5D,KAAK,IAAI,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AACtC,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAA;AAE7B,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA"}
package/dist/service.d.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * Three backends, mirroring omp's browser tool:
5
5
  * - **launch** — spawn a (stealth-patched) browser executable,
6
+ * - **patch** — spawn the CloakBrowser Chromium (source-level C++
7
+ * fingerprint patches) via the optional `cloakbrowser` peer,
6
8
  * - **attach** — connect to an existing CDP endpoint (`cdp_url`), and
7
9
  * - **relay** — connect to the local relay server whose companion Chrome
8
10
  * extension drives the user's own tabs.
@@ -19,6 +21,8 @@
19
21
  import { Service, type Context } from '@deepseek-ai/cordis';
20
22
  import type { BrowserConfig, BrowserKind, PageObservation, ScreenshotResult } from './types.ts';
21
23
  export type { BrowserConfig, BrowserKind, BrowserKindTag, PageObservation, ObservationEntry, ScreenshotResult } from './types.ts';
24
+ /** Scratch cwd key for the scrape browser: one per kind, never touched by tool tabs. */
25
+ export declare const WEB_SCRAPE_CWD = "__dsh_web_search__";
22
26
  /** Navigation wait condition accepted by the tool (Playwright dialect). */
23
27
  export type WaitUntil = 'load' | 'domcontentloaded' | 'networkidle' | 'commit';
24
28
  /** Map omp/puppeteer-style wait conditions onto Playwright's dialect. */
@@ -29,6 +33,8 @@ export type CloseMode = 'single' | 'all' | 'kill';
29
33
  export declare class BrowserService extends Service {
30
34
  #private;
31
35
  private readonly browserPath;
36
+ private readonly usePatch;
37
+ private readonly patchOptions;
32
38
  private readonly headless;
33
39
  private readonly viewport;
34
40
  private readonly relayUrl;
@@ -47,14 +53,15 @@ export declare class BrowserService extends Service {
47
53
  private connect;
48
54
  private openConnection;
49
55
  /**
50
- * Resolve the browser kind for a session (attach/launch/relay), like omp.
51
- * @param input - optional app-path, cdp URL, or explicit relay opt-in.
56
+ * Resolve the browser kind for a session (attach/launch/patch/relay), like omp.
57
+ * @param input - optional app-path, cdp URL, patch flag, or explicit relay opt-in.
52
58
  * @returns the resolved {@link BrowserKind} to drive.
53
59
  */
54
60
  resolveKind(input: {
55
61
  path?: string;
56
62
  cdpUrl?: string;
57
63
  relay?: boolean;
64
+ patch?: boolean;
58
65
  }): BrowserKind;
59
66
  /**
60
67
  * Ensure the relay server is running for this instance (idempotent).
@@ -87,6 +94,34 @@ export declare class BrowserService extends Service {
87
94
  cwd: string;
88
95
  timeoutMs?: number;
89
96
  }): Promise<unknown>;
97
+ /**
98
+ * Scrape one URL in a dedicated browser (launch or CloakBrowser patch — never
99
+ * relay/attach, which belong to other owners). Used by credential-free web
100
+ * search engines as the challenge-fallthrough transport: optional home-page
101
+ * seeding for cookies, then navigate, optionally wait for a ready selector,
102
+ * and return the rendered HTML plus response status and final URL.
103
+ * @param url - target URL.
104
+ * @param options - home-page seed, ready selector, per-navigation timeout.
105
+ * @returns rendered HTML, HTTP status of the last navigation, final page URL.
106
+ */
107
+ fetchPageHtml(url: string, options?: {
108
+ homeUrl?: string;
109
+ ready?: {
110
+ selector: string;
111
+ timeoutMs: number;
112
+ };
113
+ timeoutMs?: number;
114
+ signal?: AbortSignal;
115
+ /** Mojeek-style ALTCHA interstitial: click its checkbox, wait for the PoW redirect to show results. */
116
+ altcha?: {
117
+ resultsSelector: string;
118
+ waitMs: number;
119
+ };
120
+ }): Promise<{
121
+ html: string;
122
+ status: number;
123
+ url: string;
124
+ }>;
90
125
  /**
91
126
  * Click an ARIA-ref (`aria-ref=e5`) or CSS selector in the named tab.
92
127
  * @param name - tab id.
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/dist/service.js CHANGED
@@ -3,6 +3,8 @@
3
3
  *
4
4
  * Three backends, mirroring omp's browser tool:
5
5
  * - **launch** — spawn a (stealth-patched) browser executable,
6
+ * - **patch** — spawn the CloakBrowser Chromium (source-level C++
7
+ * fingerprint patches) via the optional `cloakbrowser` peer,
6
8
  * - **attach** — connect to an existing CDP endpoint (`cdp_url`), and
7
9
  * - **relay** — connect to the local relay server whose companion Chrome
8
10
  * extension drives the user's own tabs.
@@ -23,6 +25,9 @@ import { captureAriaSnapshot, resolveAriaRefElement } from "./aria.js";
23
25
  import { DEFAULT_VIEWPORT, STEALTH_LAUNCH_ARGS, applyUserAgentOverride, preparePage, resolveUserAgentOverride, stealthIgnoreDefaultArgs, } from "./stealth.js";
24
26
  import { startRelayServer } from "./relay/server.js";
25
27
  import { resolveRelayKind } from "./relay/kind.js";
28
+ import { launchCloakBrowser } from "./cloak.js";
29
+ /** Scratch cwd key for the scrape browser: one per kind, never touched by tool tabs. */
30
+ export const WEB_SCRAPE_CWD = '__dsh_web_search__';
26
31
  /** Map omp/puppeteer-style wait conditions onto Playwright's dialect. */
27
32
  export function normalizeWaitUntil(value) {
28
33
  if (value === 'networkidle0' || value === 'networkidle2')
@@ -36,6 +41,8 @@ const DEFAULT_TIMEOUT_MS = 30_000;
36
41
  /** One browser connection per (cwd + kind), one tab per name. */
37
42
  export class BrowserService extends Service {
38
43
  browserPath;
44
+ usePatch;
45
+ patchOptions;
39
46
  headless;
40
47
  viewport;
41
48
  relayUrl;
@@ -47,6 +54,8 @@ export class BrowserService extends Service {
47
54
  constructor(ctx, config = {}) {
48
55
  super(ctx, 'browser');
49
56
  this.browserPath = config.browserPath;
57
+ this.usePatch = config.usePatch ?? false;
58
+ this.patchOptions = config.patchOptions ?? {};
50
59
  this.headless = config.headless ?? true;
51
60
  this.viewport = config.viewport ?? DEFAULT_VIEWPORT;
52
61
  this.relayUrl = config.relayUrl?.replace(/\/+$/, '') ?? 'http://127.0.0.1:9224';
@@ -66,8 +75,8 @@ export class BrowserService extends Service {
66
75
  return this.relay ? `http://127.0.0.1:${this.relay.port}` : this.relayUrl;
67
76
  }
68
77
  browserKeyFor(kind, cwd) {
69
- if (kind.kind === 'launch')
70
- return `launch:${cwd}`;
78
+ if (kind.kind === 'launch' || kind.kind === 'patch')
79
+ return `${kind.kind}:${cwd}`;
71
80
  return `${kind.kind}:${'cdpUrl' in kind ? kind.cdpUrl : ''}`;
72
81
  }
73
82
  async connect(kind, cwd) {
@@ -105,13 +114,20 @@ export class BrowserService extends Service {
105
114
  }
106
115
  return { kind, server, browser, headless: this.headless, cwd };
107
116
  }
117
+ if (kind.kind === 'patch') {
118
+ // CloakBrowser randomizes fingerprints per session at the C++ layer; the
119
+ // JS-level stealth scripts and UA override are deliberately NOT applied
120
+ // on this backend (they would fight the per-session randomization).
121
+ const browser = await launchCloakBrowser({ headless: this.headless, ...this.patchOptions });
122
+ return { kind, browser: browser, headless: this.headless, cwd };
123
+ }
108
124
  // attach + relay both speak Chrome CDP discovery; the relay impersonates it.
109
125
  const browser = await chromium.connectOverCDP(kind.cdpUrl);
110
126
  return { kind, browser, headless: false, cwd };
111
127
  }
112
128
  /**
113
- * Resolve the browser kind for a session (attach/launch/relay), like omp.
114
- * @param input - optional app-path, cdp URL, or explicit relay opt-in.
129
+ * Resolve the browser kind for a session (attach/launch/patch/relay), like omp.
130
+ * @param input - optional app-path, cdp URL, patch flag, or explicit relay opt-in.
115
131
  * @returns the resolved {@link BrowserKind} to drive.
116
132
  */
117
133
  resolveKind(input) {
@@ -119,6 +135,8 @@ export class BrowserService extends Service {
119
135
  return { kind: 'attach', cdpUrl: input.cdpUrl.replace(/\/+$/, '') };
120
136
  if (input.path)
121
137
  return { kind: 'launch', path: input.path };
138
+ if (input.patch ?? this.usePatch)
139
+ return { kind: 'patch' };
122
140
  const relay = resolveRelayKind({ settingEnabled: input.relay ?? false, url: this.relayUrl });
123
141
  if (relay)
124
142
  return { kind: 'relay', cdpUrl: relay.cdpUrl };
@@ -179,6 +197,65 @@ export class BrowserService extends Service {
179
197
  const tab = await this.tab(name, opts.kind, opts.cwd);
180
198
  return tab.page.evaluate(code);
181
199
  }
200
+ /**
201
+ * Scrape one URL in a dedicated browser (launch or CloakBrowser patch — never
202
+ * relay/attach, which belong to other owners). Used by credential-free web
203
+ * search engines as the challenge-fallthrough transport: optional home-page
204
+ * seeding for cookies, then navigate, optionally wait for a ready selector,
205
+ * and return the rendered HTML plus response status and final URL.
206
+ * @param url - target URL.
207
+ * @param options - home-page seed, ready selector, per-navigation timeout.
208
+ * @returns rendered HTML, HTTP status of the last navigation, final page URL.
209
+ */
210
+ async fetchPageHtml(url, options) {
211
+ const timeoutMs = options?.timeoutMs ?? 30_000;
212
+ const kind = this.usePatch
213
+ ? { kind: 'patch' }
214
+ : this.browserPath !== undefined
215
+ ? { kind: 'launch', path: this.browserPath }
216
+ : { kind: 'launch' };
217
+ // A fixed scratch cwd keeps one scraper browser (per kind) per service;
218
+ // tool tabs never collide because the tool rows use real workspace cwds.
219
+ const entry = await this.connect(kind, WEB_SCRAPE_CWD);
220
+ const context = entry.browser.contexts()[0] ?? await entry.browser.newContext();
221
+ const page = await context.newPage();
222
+ const cancel = () => { void page.close().catch(() => undefined); };
223
+ options?.signal?.addEventListener('abort', cancel, { once: true });
224
+ try {
225
+ if (options?.homeUrl !== undefined) {
226
+ await page.goto(options.homeUrl, { waitUntil: 'domcontentloaded', timeout: timeoutMs });
227
+ }
228
+ const response = await page.goto(url, { waitUntil: 'domcontentloaded', timeout: timeoutMs });
229
+ if (options?.altcha !== undefined) {
230
+ // ALTCHA renders inside an open shadow root (pierced by locators, not by
231
+ // `document.querySelector`) as a custom opacity-0 checkbox, so it is
232
+ // not actionability-visible to Playwright — force-click it (Puppeteer,
233
+ // used by omp, clicks hidden elements without such checks).
234
+ const clicked = await page
235
+ .locator('altcha-widget input[type="checkbox"]')
236
+ .first()
237
+ .click({ timeout: 5_000, force: true })
238
+ .then(() => true)
239
+ .catch(() => false);
240
+ if (clicked) {
241
+ // After the click the widget computes the proof-of-work and the page
242
+ // navigates to the real SERP; wait for the results list (best-effort,
243
+ // like omp's solveCaptcha).
244
+ await page.waitForSelector(options.altcha.resultsSelector, { timeout: options.altcha.waitMs }).catch(() => undefined);
245
+ }
246
+ }
247
+ if (options?.ready !== undefined) {
248
+ // Best-effort: a missing selector (SERP variant, challenge page) is not
249
+ // an error — the caller re-checks the rendered body via `shouldFallback`.
250
+ await page.waitForSelector(options.ready.selector, { timeout: options.ready.timeoutMs }).catch(() => undefined);
251
+ }
252
+ return { html: await page.content(), status: response?.status() ?? 0, url: page.url() };
253
+ }
254
+ finally {
255
+ options?.signal?.removeEventListener('abort', cancel);
256
+ await page.close().catch(() => undefined);
257
+ }
258
+ }
182
259
  /**
183
260
  * Click an ARIA-ref (`aria-ref=e5`) or CSS selector in the named tab.
184
261
  * @param name - tab id.
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,8 @@
6
6
  export type BrowserKind = {
7
7
  kind: 'launch';
8
8
  path?: string;
9
+ } | {
10
+ kind: 'patch';
9
11
  } | {
10
12
  kind: 'attach';
11
13
  cdpUrl: string;
@@ -40,6 +42,17 @@ export interface ScreenshotResult {
40
42
  export interface BrowserConfig {
41
43
  /** Resolvable browser executable path; empty lets Playwright find one. */
42
44
  browserPath?: string;
45
+ /** Prefer the CloakBrowser backend (`app.patch`) when no path/cdp_url/relay is requested. */
46
+ usePatch?: boolean;
47
+ /** CloakBrowser launch options (proxy / geoip / humanize passthrough). */
48
+ patchOptions?: {
49
+ /** Proxy URL passed to the Chromium (e.g. a residential proxy). */
50
+ proxy?: string;
51
+ /** Match timezone + locale to the proxy IP (needs `proxy`). */
52
+ geoip?: boolean;
53
+ /** Human-like mouse, keyboard, scroll behaviour. */
54
+ humanize?: boolean;
55
+ };
43
56
  /** Headless mode for launched browsers (default true). */
44
57
  headless?: boolean;
45
58
  /** Default viewport for launched browsers. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErC,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;AAEhD,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE;QACT,mDAAmD;QACnD,KAAK,EAAE,MAAM,CAAA;QACb,mDAAmD;QACnD,MAAM,EAAE,MAAM,CAAA;QACd,mFAAmF;QACnF,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAErC,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;AAEhD,uEAAuE;AACvE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0EAA0E;IAC1E,YAAY,CAAC,EAAE;QACb,mEAAmE;QACnE,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,+DAA+D;QAC/D,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,oDAAoD;QACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE;QACT,mDAAmD;QACnD,KAAK,EAAE,MAAM,CAAA;QACb,mDAAmD;QACnD,MAAM,EAAE,MAAM,CAAA;QACd,mFAAmF;QACnF,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hy-sde-org/dsh-browser",
3
- "version": "0.1.2-rc.1",
3
+ "version": "0.1.6-alpha.2",
4
4
  "description": "Agentic browser plumbing for DeepSeek Harness: the host ctx.browser service (launch with stealth, CDP-attach, and a local relay + companion Chrome extension driving the user's own tabs) backing the browser tool in @hy-sde-org/dsh-tool-browser — a standalone plugin with no upstream harness changes required.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -54,7 +54,8 @@
54
54
  },
55
55
  "repository": {
56
56
  "type": "git",
57
- "url": "git+https://github.com/hy-sde/dsh-browser.git"
57
+ "url": "git+https://github.com/hy-sde/dsh-plugins.git",
58
+ "directory": "dsh-browser/packages/browser/browser"
58
59
  },
59
60
  "license": "MIT",
60
61
  "dsh": {
@@ -69,11 +70,12 @@
69
70
  },
70
71
  "peerDependencies": {
71
72
  "@deepseek-ai/cordis": "^4.0.2",
72
- "@deepseek-ai/dsh-invariants": "^0.1.2-rc.1"
73
+ "@deepseek-ai/dsh-invariants": "^0.1.6-alpha.2",
74
+ "cloakbrowser": ">=0.5.0"
73
75
  },
74
76
  "devDependencies": {
75
77
  "@deepseek-ai/cordis": "^4.0.2",
76
- "@deepseek-ai/dsh-invariants": "^0.1.2-rc.1",
78
+ "@deepseek-ai/dsh-invariants": "^0.1.6-alpha.2",
77
79
  "@types/node": "^24.0.0",
78
80
  "@types/ws": "^8.5.0",
79
81
  "playwright-core": "^1.61.1",
@@ -90,6 +92,11 @@
90
92
  "cdp",
91
93
  "chrome"
92
94
  ],
95
+ "peerDependenciesMeta": {
96
+ "cloakbrowser": {
97
+ "optional": true
98
+ }
99
+ },
93
100
  "scripts": {
94
101
  "clean": "rm -rf dist",
95
102
  "build": "tsc -p tsconfig.build.json && cp -r src/assets dist/assets",