@hy-sde-org/dsh-browser 0.1.1-rc.2 → 0.1.2-rc.1
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/LICENSE +4 -5
- package/README.md +1 -1
- package/dist/aria-bundle.d.ts +1 -1
- package/dist/aria-bundle.js +1 -1
- package/dist/aria.d.ts +2 -2
- package/dist/aria.js +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/orphan-registry.d.ts +71 -0
- package/dist/orphan-registry.d.ts.map +1 -0
- package/dist/orphan-registry.js +238 -0
- package/dist/orphan-registry.js.map +1 -0
- package/dist/relay/index.d.ts +2 -2
- package/dist/relay/index.js +2 -2
- package/dist/relay/kind.d.ts +1 -1
- package/dist/relay/kind.js +1 -1
- package/dist/relay/protocol.d.ts +1 -1
- package/dist/relay/protocol.js +1 -1
- package/dist/relay/server.d.ts +1 -2
- package/dist/relay/server.d.ts.map +1 -1
- package/dist/relay/server.js +1 -2
- package/dist/relay/server.js.map +1 -1
- package/dist/service.d.ts +3 -2
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +49 -7
- package/dist/service.js.map +1 -1
- package/dist/stealth-scripts.d.ts +2 -2
- package/dist/stealth.d.ts +1 -1
- package/dist/stealth.js +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
package/LICENSE
CHANGED
|
@@ -2,11 +2,10 @@ MIT License
|
|
|
2
2
|
|
|
3
3
|
Copyright (c) 2026 hy-sde
|
|
4
4
|
|
|
5
|
-
This repository is a port of the oh-my-pi
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
under the same MIT license with their original copyright held by their
|
|
5
|
+
This repository is a port of the oh-my-pi (omp) browser tool surface —
|
|
6
|
+
stealth, relay/CDP-attach, ARIA observations — onto the DeepSeek Harness
|
|
7
|
+
`ctx.browser` service contract. The ported portions are distributed under
|
|
8
|
+
the same MIT license with their original copyright held by their
|
|
10
9
|
respective authors:
|
|
11
10
|
|
|
12
11
|
Copyright (c) 2025 Mario Zechner
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
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.
|
|
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).
|
|
4
4
|
|
|
5
5
|
## What it does
|
|
6
6
|
|
package/dist/aria-bundle.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Playwright (Microsoft, Apache-2.0) ARIA-snapshot sources bundled to one CJS
|
|
3
3
|
* string by oh-my-pi; the `[ref=eN]` anchors are written straight into the page
|
|
4
4
|
* and resolve through `resolveAriaRef`. Generated — regenerate from omp
|
|
5
|
-
* `
|
|
5
|
+
* `coding-agent/src/tools/browser/aria/aria-snapshot.bundle.txt`.
|
|
6
6
|
*/
|
|
7
7
|
/** The bundled CJS source, evaluated in the page's main world. */
|
|
8
8
|
export declare const ariaSnapshotBundle: string;
|
package/dist/aria-bundle.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Playwright (Microsoft, Apache-2.0) ARIA-snapshot sources bundled to one CJS
|
|
3
3
|
* string by oh-my-pi; the `[ref=eN]` anchors are written straight into the page
|
|
4
4
|
* and resolve through `resolveAriaRef`. Generated — regenerate from omp
|
|
5
|
-
* `
|
|
5
|
+
* `coding-agent/src/tools/browser/aria/aria-snapshot.bundle.txt`.
|
|
6
6
|
*/
|
|
7
7
|
/** The bundled CJS source, evaluated in the page's main world. */
|
|
8
8
|
export const ariaSnapshotBundle = `// @generated by scripts/generate-aria-snapshot.ts from Playwright v1.61.0
|
package/dist/aria.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ARIA snapshot + ref resolution for the browser service.
|
|
3
3
|
*
|
|
4
|
-
* Port of omp's `aria/aria-snapshot.ts` (MIT, see
|
|
5
|
-
*
|
|
4
|
+
* Port of omp's `aria/aria-snapshot.ts` (MIT, see LICENSE): the bundled
|
|
5
|
+
* Playwright ARIA-snapshot sources
|
|
6
6
|
* (Apache-2.0, Microsoft) run in the page's MAIN world where their `[ref=eN]`
|
|
7
7
|
* ids live; a snapshot is cheap and addresses elements model-side. The page
|
|
8
8
|
* bundle is Playwright's, so the snapshot dialect matches what Playwright
|
package/dist/aria.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ARIA snapshot + ref resolution for the browser service.
|
|
3
3
|
*
|
|
4
|
-
* Port of omp's `aria/aria-snapshot.ts` (MIT, see
|
|
5
|
-
*
|
|
4
|
+
* Port of omp's `aria/aria-snapshot.ts` (MIT, see LICENSE): the bundled
|
|
5
|
+
* Playwright ARIA-snapshot sources
|
|
6
6
|
* (Apache-2.0, Microsoft) run in the page's MAIN world where their `[ref=eN]`
|
|
7
7
|
* ids live; a snapshot is cheap and addresses elements model-side. The page
|
|
8
8
|
* bundle is Playwright's, so the snapshot dialect matches what Playwright
|
package/dist/index.d.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* user's own tabs via the companion Chrome extension) that the browser tool
|
|
5
5
|
* in `@hy-sde-org/dsh-tool-browser` resolves.
|
|
6
6
|
*
|
|
7
|
-
* Port of omp (oh-my-pi)'s browser tool —
|
|
8
|
-
*
|
|
7
|
+
* Port of omp (oh-my-pi)'s browser tool — with stealth + relay/CDP-attach
|
|
8
|
+
* (see LICENSE). The service holds no durable state and
|
|
9
9
|
* owns its browser process(es) per session, so it mounts in the base bundle
|
|
10
10
|
* alongside `ctx.git` / `ctx.memory`; the model-facing tools resolve it from
|
|
11
11
|
* a preset row.
|
package/dist/index.js
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* user's own tabs via the companion Chrome extension) that the browser tool
|
|
5
5
|
* in `@hy-sde-org/dsh-tool-browser` resolves.
|
|
6
6
|
*
|
|
7
|
-
* Port of omp (oh-my-pi)'s browser tool —
|
|
8
|
-
*
|
|
7
|
+
* Port of omp (oh-my-pi)'s browser tool — with stealth + relay/CDP-attach
|
|
8
|
+
* (see LICENSE). The service holds no durable state and
|
|
9
9
|
* owns its browser process(es) per session, so it mounts in the base bundle
|
|
10
10
|
* alongside `ctx.git` / `ctx.memory`; the model-facing tools resolve it from
|
|
11
11
|
* a preset row.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable ownership registry for browser processes this host launched.
|
|
3
|
+
*
|
|
4
|
+
* The DSH harness spawns Chromium in-process (`chromium.launch`) and closes it
|
|
5
|
+
* with the service (`stop`). That works for graceful shutdown but not for an
|
|
6
|
+
* abnormal host death (crash, SIGKILL, cleanup timeout): the launched Chromium
|
|
7
|
+
* children are reparented to PID 1 and keep running forever, accumulating into
|
|
8
|
+
* multi-GB leaked browser processes. This is the exact orphan class oh-my-pi
|
|
9
|
+
* fixed for its shared broker Chromium (#10022 / `orphan-registry.ts`); the
|
|
10
|
+
* fork has no shared broker, so the registry below records the OS PID of every
|
|
11
|
+
* browser *this host* spawned, and any later host process can reap browsers
|
|
12
|
+
* whose recorded owner is gone.
|
|
13
|
+
*
|
|
14
|
+
* Ownership is authoritative in the safe direction: a browser is reaped only
|
|
15
|
+
* when its owner PID reports `ESRCH` (definitively dead). A live PID is never
|
|
16
|
+
* reaped, so a running host's browsers cannot be yanked out from under it; the
|
|
17
|
+
* worst case (recycled PID) leaves an orphan uncollected rather than killing a
|
|
18
|
+
* live page. Ported from oh-my-pi `orphan-registry.ts` (MIT), adapted from
|
|
19
|
+
* per-target to per-process records because each fork `launch` owns a whole
|
|
20
|
+
* browser, not one page target in a shared one.
|
|
21
|
+
* @module @hy-sde-org/dsh-browser/orphan-registry
|
|
22
|
+
*/
|
|
23
|
+
/** Registry directory: user temp (survives host death, writable without hosts colliding). */
|
|
24
|
+
export declare function orphanRegistryDir(): string;
|
|
25
|
+
/** Record that this process launched browser with OS pid `browserPid`. */
|
|
26
|
+
export declare function recordOwnedBrowser(browserPid: number, dirOverride?: string): Promise<void>;
|
|
27
|
+
/** Drop `browserPid` from this process's ownership file (closed the normal way). */
|
|
28
|
+
export declare function forgetOwnedBrowser(browserPid: number, dirOverride?: string): Promise<void>;
|
|
29
|
+
/** True when `pid` names a live process; non-`ESRCH` probe failures are treated as alive (safe direction). */
|
|
30
|
+
export declare function isPidAlive(pid: number): boolean;
|
|
31
|
+
/** Options for {@link collectOrphanBrowsers}; the defaults hit the real registry, the seams are for tests. */
|
|
32
|
+
export interface CollectOrphanOptions {
|
|
33
|
+
/** Registry dir override (tests use a unique temp dir). */
|
|
34
|
+
dir?: string;
|
|
35
|
+
/** Wall clock; injectable for deterministic grace-window tests. */
|
|
36
|
+
now?: () => number;
|
|
37
|
+
/** PID liveness probe; injectable so tests need no real subprocesses. */
|
|
38
|
+
isAlive?: (pid: number) => boolean;
|
|
39
|
+
/** Grace window in ms before a dead owner's records are eligible. */
|
|
40
|
+
graceMs?: number;
|
|
41
|
+
}
|
|
42
|
+
/** Browsers belonging to one dead process, kept grouped so partial failures remain retryable. */
|
|
43
|
+
export interface OrphanOwner {
|
|
44
|
+
file: string;
|
|
45
|
+
pid: number;
|
|
46
|
+
updatedAt: number;
|
|
47
|
+
browserPids: number[];
|
|
48
|
+
}
|
|
49
|
+
/** Orphan-scan result grouped by durable ownership file. */
|
|
50
|
+
export interface OrphanScan {
|
|
51
|
+
owners: OrphanOwner[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Scan the registry for browser pids whose owning host process is gone.
|
|
55
|
+
* Returns one entry per dead owner so a reaper can retain only pids whose
|
|
56
|
+
* termination was not confirmed. This process's own file and every live
|
|
57
|
+
* owner's file are left untouched.
|
|
58
|
+
*/
|
|
59
|
+
export declare function collectOrphanBrowsers(opts?: CollectOrphanOptions): Promise<OrphanScan>;
|
|
60
|
+
/** Terminate one orphaned browser process; true when the pid is confirmed gone. */
|
|
61
|
+
export declare function terminateOrphanBrowser(pid: number): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Reap browser processes whose owning host is gone. Each owner file is removed
|
|
64
|
+
* only after every pid is resolved; partial failures atomically retain the
|
|
65
|
+
* unresolved ids for the next sweep to retry. Failures are logged-silently,
|
|
66
|
+
* never thrown, so cleanup cannot block browser open.
|
|
67
|
+
*/
|
|
68
|
+
export declare function reapOrphanBrowsers(opts?: CollectOrphanOptions): Promise<number>;
|
|
69
|
+
/** Test-only reset of the in-process ownership state. */
|
|
70
|
+
export declare function resetOrphanRegistryForTest(): void;
|
|
71
|
+
//# sourceMappingURL=orphan-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orphan-registry.d.ts","sourceRoot":"","sources":["../src/orphan-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAsBH,6FAA6F;AAC7F,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAmDD,0EAA0E;AAC1E,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAShG;AAED,oFAAoF;AACpF,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhG;AAED,8GAA8G;AAC9G,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED,8GAA8G;AAC9G,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,yEAAyE;IACzE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IAClC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,iGAAiG;AACjG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyChG;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAY3D;AAmBD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBzF;AAED,yDAAyD;AACzD,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable ownership registry for browser processes this host launched.
|
|
3
|
+
*
|
|
4
|
+
* The DSH harness spawns Chromium in-process (`chromium.launch`) and closes it
|
|
5
|
+
* with the service (`stop`). That works for graceful shutdown but not for an
|
|
6
|
+
* abnormal host death (crash, SIGKILL, cleanup timeout): the launched Chromium
|
|
7
|
+
* children are reparented to PID 1 and keep running forever, accumulating into
|
|
8
|
+
* multi-GB leaked browser processes. This is the exact orphan class oh-my-pi
|
|
9
|
+
* fixed for its shared broker Chromium (#10022 / `orphan-registry.ts`); the
|
|
10
|
+
* fork has no shared broker, so the registry below records the OS PID of every
|
|
11
|
+
* browser *this host* spawned, and any later host process can reap browsers
|
|
12
|
+
* whose recorded owner is gone.
|
|
13
|
+
*
|
|
14
|
+
* Ownership is authoritative in the safe direction: a browser is reaped only
|
|
15
|
+
* when its owner PID reports `ESRCH` (definitively dead). A live PID is never
|
|
16
|
+
* reaped, so a running host's browsers cannot be yanked out from under it; the
|
|
17
|
+
* worst case (recycled PID) leaves an orphan uncollected rather than killing a
|
|
18
|
+
* live page. Ported from oh-my-pi `orphan-registry.ts` (MIT), adapted from
|
|
19
|
+
* per-target to per-process records because each fork `launch` owns a whole
|
|
20
|
+
* browser, not one page target in a shared one.
|
|
21
|
+
* @module @hy-sde-org/dsh-browser/orphan-registry
|
|
22
|
+
*/
|
|
23
|
+
import * as fs from 'node:fs/promises';
|
|
24
|
+
import * as path from 'node:path';
|
|
25
|
+
import { tmpdir } from 'node:os';
|
|
26
|
+
/**
|
|
27
|
+
* Reap only records whose owner has been dead AND untouched for this long.
|
|
28
|
+
* The PID probe is already authoritative; the grace window is a conservative
|
|
29
|
+
* guard against clock skew and PID-reuse races, and keeps a just-crashed
|
|
30
|
+
* host's very fresh records around briefly in case it is being restarted.
|
|
31
|
+
*/
|
|
32
|
+
const DEFAULT_GRACE_MS = 15_000;
|
|
33
|
+
/** Registry directory: user temp (survives host death, writable without hosts colliding). */
|
|
34
|
+
export function orphanRegistryDir() {
|
|
35
|
+
return path.join(tmpdir(), 'dsh-browser-orphans');
|
|
36
|
+
}
|
|
37
|
+
/** Resolve the registry dir, honoring an injectable override (tests use a unique temp dir). */
|
|
38
|
+
function resolveRegistryDir(override) {
|
|
39
|
+
return override ?? orphanRegistryDir();
|
|
40
|
+
}
|
|
41
|
+
/** In-process set of browser pids this host launched, keyed by registry dir. */
|
|
42
|
+
const ownedByDir = new Map();
|
|
43
|
+
/** Per-registry-dir write serialization so concurrent record/forget can't tear the file. */
|
|
44
|
+
const writeChains = new Map();
|
|
45
|
+
function ownershipFilePath(dir, pid) {
|
|
46
|
+
return path.join(dir, `${pid}.json`);
|
|
47
|
+
}
|
|
48
|
+
/** Serialize a write against others for the same registry dir. */
|
|
49
|
+
function chain(dir, task) {
|
|
50
|
+
const prev = writeChains.get(dir) ?? Promise.resolve();
|
|
51
|
+
const next = prev.then(task, task);
|
|
52
|
+
writeChains.set(dir, next.catch(() => undefined));
|
|
53
|
+
return next;
|
|
54
|
+
}
|
|
55
|
+
/** Persist (or, when empty, remove) this process's ownership file for a registry dir. */
|
|
56
|
+
async function flush(dir) {
|
|
57
|
+
const owned = ownedByDir.get(dir);
|
|
58
|
+
const file = ownershipFilePath(dir, process.pid);
|
|
59
|
+
if (!owned || owned.size === 0) {
|
|
60
|
+
await fs.rm(file, { force: true }).catch(() => undefined);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const record = {
|
|
64
|
+
pid: process.pid,
|
|
65
|
+
updatedAt: Date.now(),
|
|
66
|
+
browserPids: [...owned],
|
|
67
|
+
};
|
|
68
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
69
|
+
try {
|
|
70
|
+
await fs.mkdir(dir, { recursive: true });
|
|
71
|
+
await fs.writeFile(tmp, JSON.stringify(record), 'utf8');
|
|
72
|
+
await fs.rename(tmp, file);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
await fs.rm(tmp, { force: true }).catch(() => undefined);
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** Record that this process launched browser with OS pid `browserPid`. */
|
|
80
|
+
export async function recordOwnedBrowser(browserPid, dirOverride) {
|
|
81
|
+
const dir = resolveRegistryDir(dirOverride);
|
|
82
|
+
let owned = ownedByDir.get(dir);
|
|
83
|
+
if (!owned) {
|
|
84
|
+
owned = new Set();
|
|
85
|
+
ownedByDir.set(dir, owned);
|
|
86
|
+
}
|
|
87
|
+
owned.add(browserPid);
|
|
88
|
+
await chain(dir, () => flush(dir)).catch(() => { });
|
|
89
|
+
}
|
|
90
|
+
/** Drop `browserPid` from this process's ownership file (closed the normal way). */
|
|
91
|
+
export async function forgetOwnedBrowser(browserPid, dirOverride) {
|
|
92
|
+
const dir = resolveRegistryDir(dirOverride);
|
|
93
|
+
const owned = ownedByDir.get(dir);
|
|
94
|
+
if (!owned?.delete(browserPid))
|
|
95
|
+
return;
|
|
96
|
+
await chain(dir, () => flush(dir)).catch(() => { });
|
|
97
|
+
}
|
|
98
|
+
/** True when `pid` names a live process; non-`ESRCH` probe failures are treated as alive (safe direction). */
|
|
99
|
+
export function isPidAlive(pid) {
|
|
100
|
+
try {
|
|
101
|
+
process.kill(pid, 0);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
return error.code !== 'ESRCH';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Scan the registry for browser pids whose owning host process is gone.
|
|
110
|
+
* Returns one entry per dead owner so a reaper can retain only pids whose
|
|
111
|
+
* termination was not confirmed. This process's own file and every live
|
|
112
|
+
* owner's file are left untouched.
|
|
113
|
+
*/
|
|
114
|
+
export async function collectOrphanBrowsers(opts = {}) {
|
|
115
|
+
const now = opts.now ?? Date.now;
|
|
116
|
+
const isAlive = opts.isAlive ?? isPidAlive;
|
|
117
|
+
const graceMs = opts.graceMs ?? DEFAULT_GRACE_MS;
|
|
118
|
+
const dir = resolveRegistryDir(opts.dir);
|
|
119
|
+
let entries;
|
|
120
|
+
try {
|
|
121
|
+
entries = await fs.readdir(dir);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (error.code === 'ENOENT')
|
|
125
|
+
return { owners: [] };
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
128
|
+
const owners = [];
|
|
129
|
+
const nowMs = now();
|
|
130
|
+
for (const entry of entries) {
|
|
131
|
+
if (!entry.endsWith('.json'))
|
|
132
|
+
continue;
|
|
133
|
+
const file = path.join(dir, entry);
|
|
134
|
+
let raw;
|
|
135
|
+
try {
|
|
136
|
+
raw = await fs.readFile(file, 'utf8');
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
continue; // torn or malformed file; a live owner will rewrite it
|
|
140
|
+
}
|
|
141
|
+
let record;
|
|
142
|
+
try {
|
|
143
|
+
record = JSON.parse(raw);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (typeof record.pid !== 'number' || !Array.isArray(record.browserPids))
|
|
149
|
+
continue;
|
|
150
|
+
if (record.pid === process.pid)
|
|
151
|
+
continue; // our own file
|
|
152
|
+
if (isAlive(record.pid))
|
|
153
|
+
continue; // owner still running
|
|
154
|
+
if (nowMs - record.updatedAt < graceMs)
|
|
155
|
+
continue; // conservative grace
|
|
156
|
+
owners.push({
|
|
157
|
+
file,
|
|
158
|
+
pid: record.pid,
|
|
159
|
+
updatedAt: record.updatedAt,
|
|
160
|
+
browserPids: record.browserPids.filter(browserPid => typeof browserPid === 'number'),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
return { owners };
|
|
164
|
+
}
|
|
165
|
+
/** Terminate one orphaned browser process; true when the pid is confirmed gone. */
|
|
166
|
+
export function terminateOrphanBrowser(pid) {
|
|
167
|
+
// Terminate the recorded browser process itself. Chrome cleans up its own
|
|
168
|
+
// renderer/GPU children when its main process dies, so the direct pid is
|
|
169
|
+
// the correct target — never the process group, which here is the NEW host's
|
|
170
|
+
// own group (Playwright does not spawn browsers detached).
|
|
171
|
+
try {
|
|
172
|
+
process.kill(pid, 'SIGKILL');
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// ESRCH: already gone, which is the outcome we wanted anyway.
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
/** Atomically retain unresolved pids, or remove an ownership file once all are resolved. */
|
|
181
|
+
async function updateOwnershipFile(owner, browserPids) {
|
|
182
|
+
if (browserPids.length === 0) {
|
|
183
|
+
await fs.rm(owner.file, { force: true });
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const tmp = `${owner.file}.${process.pid}.tmp`;
|
|
187
|
+
try {
|
|
188
|
+
const record = { pid: owner.pid, updatedAt: owner.updatedAt, browserPids };
|
|
189
|
+
await fs.writeFile(tmp, JSON.stringify(record), 'utf8');
|
|
190
|
+
await fs.rename(tmp, owner.file);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
await fs.rm(tmp, { force: true }).catch(() => undefined);
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Reap browser processes whose owning host is gone. Each owner file is removed
|
|
199
|
+
* only after every pid is resolved; partial failures atomically retain the
|
|
200
|
+
* unresolved ids for the next sweep to retry. Failures are logged-silently,
|
|
201
|
+
* never thrown, so cleanup cannot block browser open.
|
|
202
|
+
*/
|
|
203
|
+
export async function reapOrphanBrowsers(opts = {}) {
|
|
204
|
+
let scan;
|
|
205
|
+
try {
|
|
206
|
+
scan = await collectOrphanBrowsers(opts);
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return 0;
|
|
210
|
+
}
|
|
211
|
+
let reaped = 0;
|
|
212
|
+
for (const owner of scan.owners) {
|
|
213
|
+
const retained = [];
|
|
214
|
+
for (const browserPid of owner.browserPids) {
|
|
215
|
+
if (terminateOrphanBrowser(browserPid)) {
|
|
216
|
+
reaped++;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
retained.push(browserPid);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (retained.length === owner.browserPids.length)
|
|
223
|
+
continue;
|
|
224
|
+
try {
|
|
225
|
+
await updateOwnershipFile(owner, retained);
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// best effort; the next sweep retries
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return reaped;
|
|
232
|
+
}
|
|
233
|
+
/** Test-only reset of the in-process ownership state. */
|
|
234
|
+
export function resetOrphanRegistryForTest() {
|
|
235
|
+
ownedByDir.clear();
|
|
236
|
+
writeChains.clear();
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=orphan-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orphan-registry.js","sourceRoot":"","sources":["../src/orphan-registry.ts"],"names":[],"mappings":"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"}
|
package/dist/relay/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Local relay server + wire protocol for driving the user's own Chrome tabs
|
|
3
3
|
* via the companion MV3 extension (assets under src/assets).
|
|
4
4
|
*
|
|
5
|
-
* Ported from omp (oh-my-pi, MIT — see
|
|
6
|
-
*
|
|
5
|
+
* Ported from omp (oh-my-pi, MIT — see LICENSE).
|
|
6
|
+
* The server impersonates Chrome's CDP discovery endpoint
|
|
7
7
|
* (`/json/version`, `/json`, `WS /cdp`) and bridges it to the extension's
|
|
8
8
|
* `chrome.debugger` over `WS /ext`; `bridge.ts` multiplexes every downstream
|
|
9
9
|
* CDP connection over the extension's single debugger attachment per tab.
|
package/dist/relay/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Local relay server + wire protocol for driving the user's own Chrome tabs
|
|
3
3
|
* via the companion MV3 extension (assets under src/assets).
|
|
4
4
|
*
|
|
5
|
-
* Ported from omp (oh-my-pi, MIT — see
|
|
6
|
-
*
|
|
5
|
+
* Ported from omp (oh-my-pi, MIT — see LICENSE).
|
|
6
|
+
* The server impersonates Chrome's CDP discovery endpoint
|
|
7
7
|
* (`/json/version`, `/json`, `WS /cdp`) and bridges it to the extension's
|
|
8
8
|
* `chrome.debugger` over `WS /ext`; `bridge.ts` multiplexes every downstream
|
|
9
9
|
* CDP connection over the extension's single debugger attachment per tab.
|
package/dist/relay/kind.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* impersonates Chrome's CDP discovery endpoint, so the whole attached-browser
|
|
6
6
|
* machinery (registry, tab registry) applies unchanged.
|
|
7
7
|
*
|
|
8
|
-
* Ported from oh-my-pi (MIT — see
|
|
8
|
+
* Ported from oh-my-pi (MIT — see LICENSE).
|
|
9
9
|
* @module @hy-sde-org/dsh-browser/relay/kind
|
|
10
10
|
*/
|
|
11
11
|
export interface RelayKind {
|
package/dist/relay/kind.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* impersonates Chrome's CDP discovery endpoint, so the whole attached-browser
|
|
6
6
|
* machinery (registry, tab registry) applies unchanged.
|
|
7
7
|
*
|
|
8
|
-
* Ported from oh-my-pi (MIT — see
|
|
8
|
+
* Ported from oh-my-pi (MIT — see LICENSE).
|
|
9
9
|
* @module @hy-sde-org/dsh-browser/relay/kind
|
|
10
10
|
*/
|
|
11
11
|
/** Default endpoint of the in-process relay server. */
|
package/dist/relay/protocol.d.ts
CHANGED
package/dist/relay/protocol.js
CHANGED
package/dist/relay/server.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP + WebSocket server for the browser relay (Node port of omp's
|
|
3
|
-
* `server.ts`, which used Bun's server API — MIT, see
|
|
4
|
-
* browser tool with relay).
|
|
3
|
+
* `server.ts`, which used Bun's server API — MIT, see LICENSE).
|
|
5
4
|
*
|
|
6
5
|
* Impersonates Chrome's CDP discovery endpoint so any CDP client (Playwright
|
|
7
6
|
* `connectOverCDP`) can connect with a plain browser URL:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/relay/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/relay/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,OAAO,EAAE,WAAW,EAAoB,MAAM,aAAa,CAAA;AAE3D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+FAA+F;IAC/F,KAAK,CAAC,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CAChE;AAED,8BAA8B;AAC9B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,IAAI,IAAI,CAAA;CACb;AAgCD,2EAA2E;AAC3E,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAmHrF;AAED,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/relay/server.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP + WebSocket server for the browser relay (Node port of omp's
|
|
3
|
-
* `server.ts`, which used Bun's server API — MIT, see
|
|
4
|
-
* browser tool with relay).
|
|
3
|
+
* `server.ts`, which used Bun's server API — MIT, see LICENSE).
|
|
5
4
|
*
|
|
6
5
|
* Impersonates Chrome's CDP discovery endpoint so any CDP client (Playwright
|
|
7
6
|
* `connectOverCDP`) can connect with a plain browser URL:
|
package/dist/relay/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/relay/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/relay/server.ts"],"names":[],"mappings":"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"}
|
package/dist/service.d.ts
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
* browser connection is shared across tabs. The service owns no durable state
|
|
12
12
|
* and is conversation/session-scoped by the plugin row that mounts it.
|
|
13
13
|
*
|
|
14
|
-
* Port of oh-my-pi's browser
|
|
15
|
-
*
|
|
14
|
+
* Port of oh-my-pi's browser — stealth plus relay/CDP-attach (see LICENSE).
|
|
15
|
+
* Model-facing surface lives in
|
|
16
16
|
* @hy-sde-org/dsh-tool-browser.
|
|
17
17
|
* @module @hy-sde-org/dsh-browser/service
|
|
18
18
|
*/
|
|
@@ -27,6 +27,7 @@ export declare function normalizeWaitUntil(value: string | undefined): WaitUntil
|
|
|
27
27
|
export type CloseMode = 'single' | 'all' | 'kill';
|
|
28
28
|
/** One browser connection per (cwd + kind), one tab per name. */
|
|
29
29
|
export declare class BrowserService extends Service {
|
|
30
|
+
#private;
|
|
30
31
|
private readonly browserPath;
|
|
31
32
|
private readonly headless;
|
|
32
33
|
private readonly viewport;
|
package/dist/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
CHANGED
|
@@ -11,13 +11,14 @@
|
|
|
11
11
|
* browser connection is shared across tabs. The service owns no durable state
|
|
12
12
|
* and is conversation/session-scoped by the plugin row that mounts it.
|
|
13
13
|
*
|
|
14
|
-
* Port of oh-my-pi's browser
|
|
15
|
-
*
|
|
14
|
+
* Port of oh-my-pi's browser — stealth plus relay/CDP-attach (see LICENSE).
|
|
15
|
+
* Model-facing surface lives in
|
|
16
16
|
* @hy-sde-org/dsh-tool-browser.
|
|
17
17
|
* @module @hy-sde-org/dsh-browser/service
|
|
18
18
|
*/
|
|
19
19
|
import { Service } from '@deepseek-ai/cordis';
|
|
20
20
|
import { chromium } from 'playwright-core';
|
|
21
|
+
import { forgetOwnedBrowser, reapOrphanBrowsers, recordOwnedBrowser } from "./orphan-registry.js";
|
|
21
22
|
import { captureAriaSnapshot, resolveAriaRefElement } from "./aria.js";
|
|
22
23
|
import { DEFAULT_VIEWPORT, STEALTH_LAUNCH_ARGS, applyUserAgentOverride, preparePage, resolveUserAgentOverride, stealthIgnoreDefaultArgs, } from "./stealth.js";
|
|
23
24
|
import { startRelayServer } from "./relay/server.js";
|
|
@@ -51,6 +52,11 @@ export class BrowserService extends Service {
|
|
|
51
52
|
this.relayUrl = config.relayUrl?.replace(/\/+$/, '') ?? 'http://127.0.0.1:9224';
|
|
52
53
|
this.relayToken = config.relayToken;
|
|
53
54
|
this.timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
55
|
+
// Boot-time reap: a previously crashed/killed host leaves its spawned
|
|
56
|
+
// Chromium behind (reparented to PID 1). Sweep the ownership registry for
|
|
57
|
+
// browsers whose recorded owner is gone before opening anything new.
|
|
58
|
+
// Fire-and-forget: cleanup must never block browser open.
|
|
59
|
+
void reapOrphanBrowsers().catch(() => { });
|
|
54
60
|
}
|
|
55
61
|
/**
|
|
56
62
|
* The relay endpoint this instance serves (created lazily in relay kind).
|
|
@@ -82,9 +88,22 @@ export class BrowserService extends Service {
|
|
|
82
88
|
args: [...STEALTH_LAUNCH_ARGS],
|
|
83
89
|
ignoreDefaultArgs: stealthIgnoreDefaultArgs(executablePath),
|
|
84
90
|
};
|
|
85
|
-
|
|
91
|
+
// launchServer (not bare launch): the returned server owns the real OS
|
|
92
|
+
// process, exposing its pid for the orphan registry and giving us a
|
|
93
|
+
// definitive kill handle. The connected Browser still serves pages, and
|
|
94
|
+
// newBrowserCDPSession (UA override) works over the connection.
|
|
95
|
+
const server = await chromium.launchServer(launchOptions);
|
|
96
|
+
const browser = await chromium.connect(server.wsEndpoint());
|
|
86
97
|
void applyUserAgentOverride(browser, await resolveUserAgentOverride(browser));
|
|
87
|
-
|
|
98
|
+
// Record our own spawned browser in the orphan registry so a later host
|
|
99
|
+
// can reap it if THIS process dies before closing it. `launch` pids only
|
|
100
|
+
// (attach/relay browsers belong to other owners and must never be
|
|
101
|
+
// touched by our reap sweep).
|
|
102
|
+
const launchedPid = server.process().pid;
|
|
103
|
+
if (typeof launchedPid === 'number' && Number.isInteger(launchedPid)) {
|
|
104
|
+
void recordOwnedBrowser(launchedPid).catch(() => { });
|
|
105
|
+
}
|
|
106
|
+
return { kind, server, browser, headless: this.headless, cwd };
|
|
88
107
|
}
|
|
89
108
|
// attach + relay both speak Chrome CDP discovery; the relay impersonates it.
|
|
90
109
|
const browser = await chromium.connectOverCDP(kind.cdpUrl);
|
|
@@ -219,7 +238,8 @@ export class BrowserService extends Service {
|
|
|
219
238
|
this.tabs.delete(tabName);
|
|
220
239
|
}
|
|
221
240
|
if (opts.kill && entry) {
|
|
222
|
-
await entry
|
|
241
|
+
await this.#closeBrowser(entry);
|
|
242
|
+
this.#releaseBrowser(entry);
|
|
223
243
|
this.browsers.delete(this.browserKeyFor(opts.kind, opts.cwd));
|
|
224
244
|
}
|
|
225
245
|
return;
|
|
@@ -230,10 +250,29 @@ export class BrowserService extends Service {
|
|
|
230
250
|
void tab.page.close().catch(() => { });
|
|
231
251
|
this.tabs.delete(name);
|
|
232
252
|
if (opts.kill && entry) {
|
|
233
|
-
void entry
|
|
253
|
+
void this.#closeBrowser(entry);
|
|
254
|
+
this.#releaseBrowser(entry);
|
|
234
255
|
this.browsers.delete(this.browserKeyFor(opts.kind, opts.cwd));
|
|
235
256
|
}
|
|
236
257
|
}
|
|
258
|
+
/** Close a browser: for launch-kind, kill the real OS process; otherwise close the connection. */
|
|
259
|
+
async #closeBrowser(entry) {
|
|
260
|
+
if (entry.server) {
|
|
261
|
+
// Server.close terminates the launched Chromium process — a definitive
|
|
262
|
+
// kill even if the page layer wedged. The connected Browser's own close
|
|
263
|
+
// would only drop the connection.
|
|
264
|
+
await entry.server.close().catch(() => { });
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
await entry.browser.close().catch(() => { });
|
|
268
|
+
}
|
|
269
|
+
/** Drop a closed browser from the orphan registry (we closed it ourselves, so it is not an orphan). */
|
|
270
|
+
#releaseBrowser(entry) {
|
|
271
|
+
const launchedPid = entry.server?.process().pid;
|
|
272
|
+
if (typeof launchedPid === 'number' && Number.isInteger(launchedPid)) {
|
|
273
|
+
void forgetOwnedBrowser(launchedPid).catch(() => { });
|
|
274
|
+
}
|
|
275
|
+
}
|
|
237
276
|
/**
|
|
238
277
|
* Screenshot the named tab to a PNG file; returns the written path.
|
|
239
278
|
* @param name - tab id.
|
|
@@ -272,7 +311,10 @@ export class BrowserService extends Service {
|
|
|
272
311
|
/** Close every browser connection and stop the relay (cleanup on ctx dispose). */
|
|
273
312
|
stop() {
|
|
274
313
|
for (const entry of this.browsers.values()) {
|
|
275
|
-
|
|
314
|
+
// release from the orphan registry first: a graceful ctx dispose means
|
|
315
|
+
// WE are closing these, so no later host should treat them as orphans.
|
|
316
|
+
this.#releaseBrowser(entry);
|
|
317
|
+
void this.#closeBrowser(entry);
|
|
276
318
|
}
|
|
277
319
|
this.browsers.clear();
|
|
278
320
|
this.tabs.clear();
|
package/dist/service.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Stealth init scripts ported verbatim from oh-my-pi (MIT — see
|
|
2
|
+
* Stealth init scripts ported verbatim from oh-my-pi (MIT — see LICENSE).
|
|
3
3
|
* Each script runs in every new document; together they hide Playwright/Puppeteer
|
|
4
4
|
* fingerprints: navigator.webdriver, automation UA + client hints, sourceURL
|
|
5
5
|
* tampering, fonts, WebGL, canvas/audio, plugins, hardware, codecs, workers, locale.
|
|
6
|
-
* Generated — regenerate from omp `
|
|
6
|
+
* Generated — regenerate from omp `coding-agent/src/tools/puppeteer/*.txt`.
|
|
7
7
|
*/
|
|
8
8
|
import type { Page } from 'playwright-core';
|
|
9
9
|
/** Run every stealth script in a freshly created page; call before navigation. */
|
package/dist/stealth.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stealth browser launch + user-agent spoofing, ported from oh-my-pi's
|
|
3
|
-
* `
|
|
3
|
+
* `coding-agent/src/tools/browser/launch.ts` (MIT, see LICENSE).
|
|
4
4
|
*
|
|
5
5
|
* Puppeteer's `--enable-automation` flag sets `navigator.webdriver=true` and
|
|
6
6
|
* shows the "controlled by automated software" infobar. Playwright's default
|
package/dist/stealth.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stealth browser launch + user-agent spoofing, ported from oh-my-pi's
|
|
3
|
-
* `
|
|
3
|
+
* `coding-agent/src/tools/browser/launch.ts` (MIT, see LICENSE).
|
|
4
4
|
*
|
|
5
5
|
* Puppeteer's `--enable-automation` flag sets `navigator.webdriver=true` and
|
|
6
6
|
* shows the "controlled by automated software" infobar. Playwright's default
|
package/dist/types.d.ts
CHANGED
|
@@ -44,8 +44,11 @@ export interface BrowserConfig {
|
|
|
44
44
|
headless?: boolean;
|
|
45
45
|
/** Default viewport for launched browsers. */
|
|
46
46
|
viewport?: {
|
|
47
|
+
/** Viewport width in CSS pixels (default 1280). */
|
|
47
48
|
width: number;
|
|
49
|
+
/** Viewport height in CSS pixels (default 720). */
|
|
48
50
|
height: number;
|
|
51
|
+
/** Device scale factor — values above 1 simulate high-DPI displays (default 1). */
|
|
49
52
|
deviceScaleFactor?: number;
|
|
50
53
|
};
|
|
51
54
|
/** Relay endpoint (default `http://127.0.0.1:9224`). */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hy-sde-org/dsh-browser",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2-rc.1",
|
|
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",
|
|
@@ -63,17 +63,17 @@
|
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
66
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
67
67
|
"playwright-core": "^1.61.1",
|
|
68
68
|
"ws": "^8.21.0"
|
|
69
69
|
},
|
|
70
70
|
"peerDependencies": {
|
|
71
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
72
|
-
"@deepseek-ai/dsh-invariants": "^0.1.
|
|
71
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
72
|
+
"@deepseek-ai/dsh-invariants": "^0.1.2-rc.1"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
|
-
"@deepseek-ai/cordis": "^4.0.
|
|
76
|
-
"@deepseek-ai/dsh-invariants": "^0.1.
|
|
75
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
76
|
+
"@deepseek-ai/dsh-invariants": "^0.1.2-rc.1",
|
|
77
77
|
"@types/node": "^24.0.0",
|
|
78
78
|
"@types/ws": "^8.5.0",
|
|
79
79
|
"playwright-core": "^1.61.1",
|