@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 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 memory surface (retain / recall /
6
- reflect / memory_edit / learn and the durable project-scoped local memory
7
- backend) onto the DeepSeek Harness `ctx.memory` service contract — see
8
- port_omp.md item 4 in the hy-sde fork. The ported portions are distributed
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.1-rc.2` 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 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
 
@@ -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
- * `packages/coding-agent/src/tools/browser/aria/aria-snapshot.bundle.txt`.
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;
@@ -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
- * `packages/coding-agent/src/tools/browser/aria/aria-snapshot.bundle.txt`.
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 port_omp.md item: browser
5
- * tool with relay): the bundled Playwright ARIA-snapshot sources
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 port_omp.md item: browser
5
- * tool with relay): the bundled Playwright ARIA-snapshot sources
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 — see port_omp.md item: browser tool
8
- * with stealth + relay/CDP-attach. The service holds no durable state and
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 — see port_omp.md item: browser tool
8
- * with stealth + relay/CDP-attach. The service holds no durable state and
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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"}
@@ -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 port_omp.md item: browser tool with
6
- * relay). The server impersonates Chrome's CDP discovery endpoint
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.
@@ -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 port_omp.md item: browser tool with
6
- * relay). The server impersonates Chrome's CDP discovery endpoint
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.
@@ -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 port_omp.md item: browser tool with relay).
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 {
@@ -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 port_omp.md item: browser tool with relay).
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. */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Ported from oh-my-pi (MIT — see port_omp.md item: browser tool with relay).
2
+ * Ported from oh-my-pi (MIT — see LICENSE).
3
3
  */
4
4
  /**
5
5
  * Wire protocol between the relay server and the Chrome extension.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Ported from oh-my-pi (MIT — see port_omp.md item: browser tool with relay).
2
+ * Ported from oh-my-pi (MIT — see LICENSE).
3
3
  */
4
4
  /**
5
5
  * Wire protocol between the relay server and the Chrome extension.
@@ -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 port_omp.md item:
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;;;;;;;;;;;;;;;;;;;;GAoBG;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"}
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"}
@@ -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 port_omp.md item:
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.js","sourceRoot":"","sources":["../../src/relay/server.ts"],"names":[],"mappings":"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"}
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 (see port_omp.md item: browser tool with
15
- * stealth + relay/CDP-attach). Model-facing surface lives in
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;
@@ -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
@@ -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 (see port_omp.md item: browser tool with
15
- * stealth + relay/CDP-attach). Model-facing surface lives in
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
- const browser = await chromium.launch(launchOptions);
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
- return { kind, browser, headless: this.headless, cwd };
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.browser.close().catch(() => { });
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.browser.close().catch(() => { });
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
- void entry.browser.close().catch(() => { });
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();
@@ -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 port_omp.md).
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 `packages/coding-agent/src/tools/puppeteer/*.txt`.
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
- * `packages/coding-agent/src/tools/browser/launch.ts` (MIT, see port_omp.md).
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
- * `packages/coding-agent/src/tools/browser/launch.ts` (MIT, see port_omp.md).
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`). */
@@ -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;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE,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,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.1-rc.2",
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.1",
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.1",
72
- "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2"
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.1",
76
- "@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
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",