@everydaydevopsio/pilot 0.6.1 → 0.6.3
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/AGENTS.md +6 -0
- package/CHANGELOG.md +45 -0
- package/README.md +86 -9
- package/dist/browser/browser-manager.d.ts +7 -1
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/browser-manager.js +196 -40
- package/dist/browser/browser-manager.js.map +1 -1
- package/dist/browser/chrome-launcher.d.ts +13 -2
- package/dist/browser/chrome-launcher.d.ts.map +1 -1
- package/dist/browser/chrome-launcher.js +33 -4
- package/dist/browser/chrome-launcher.js.map +1 -1
- package/dist/browser/sessions.d.ts +49 -0
- package/dist/browser/sessions.d.ts.map +1 -0
- package/dist/browser/sessions.js +249 -0
- package/dist/browser/sessions.js.map +1 -0
- package/dist/browser/types.d.ts +10 -0
- package/dist/browser/types.d.ts.map +1 -1
- package/dist/cli/skill-template.d.ts +1 -1
- package/dist/cli/skill-template.d.ts.map +1 -1
- package/dist/cli/skill-template.js +1 -1
- package/dist/cli/skill-template.js.map +1 -1
- package/dist/mcp/tools/browser.d.ts.map +1 -1
- package/dist/mcp/tools/browser.js +52 -3
- package/dist/mcp/tools/browser.js.map +1 -1
- package/dist/mcp/tools/names.d.ts +1 -1
- package/dist/mcp/tools/names.d.ts.map +1 -1
- package/dist/mcp/tools/names.js +2 -0
- package/dist/mcp/tools/names.js.map +1 -1
- package/package.json +1 -1
- package/skills/pilot/SKILL.md +9 -0
- package/src/browser/browser-manager.ts +248 -41
- package/src/browser/chrome-launcher.ts +40 -4
- package/src/browser/sessions.ts +299 -0
- package/src/browser/types.ts +11 -0
- package/src/cli/skill-template.ts +1 -1
- package/src/mcp/tools/browser.ts +72 -3
- package/src/mcp/tools/names.ts +2 -0
package/AGENTS.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Repository agent instructions
|
|
2
2
|
|
|
3
|
+
## Local setup
|
|
4
|
+
|
|
5
|
+
- Run `make setup` before building, testing, or committing in a fresh clone or a new local shell environment. It installs the pinned Node and pnpm versions, project dependencies, and the `pre-commit` and `pre-push` Git hooks.
|
|
6
|
+
- Re-run `make setup` if `.nvmrc`, the `packageManager` field in `package.json`, or `.pre-commit-config.yaml` changes, or if `.git/hooks/pre-commit` or `.git/hooks/pre-push` is missing.
|
|
7
|
+
- Do not bypass the hooks with `--no-verify`; fix the reported lint, format, build, or test failure instead.
|
|
8
|
+
|
|
3
9
|
## Local Pilot MCP configuration
|
|
4
10
|
|
|
5
11
|
- Keep `.codex/config.toml` and `.mcp.json` configured to run the compiled local Pilot server with `node dist/mcp/index.js`. Do not replace the local command with the published npm package in this repository.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,50 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.3] - 2026-11-03
|
|
4
|
+
|
|
5
|
+
This release adds browser session management tools and improves Chrome startup, recovery, and shutdown reliability.
|
|
6
|
+
|
|
7
|
+
### Highlights
|
|
8
|
+
|
|
9
|
+
- **New MCP tools:** `browser_status` and `browser_stop_all` let you inspect browser session status and stop all browser sessions. Both tools are included in the tool allowlist. (#56)
|
|
10
|
+
- **More resilient startup:** Chrome startup now fails promptly if the process exits, while a longer default timeout gives slower launches more time to complete. (#53)
|
|
11
|
+
|
|
12
|
+
### Fixes
|
|
13
|
+
|
|
14
|
+
- **Safer session shutdown:** Verify the Chrome executable and recheck process identity before each signal. A browser is reported as stopped only after its exit is confirmed, and lock cleanup failures are surfaced. (#56)
|
|
15
|
+
- **Better startup recovery:** Clean up failed launches, clear launch state when Chrome cannot be spawned, and provide clearer explanations of profile conflicts. (#53, #55)
|
|
16
|
+
|
|
17
|
+
### Changes
|
|
18
|
+
|
|
19
|
+
- Strengthened tests for launch-timeout cleanup on slow machines and removal of dangling `SingletonLock` symlinks. (#55, #56)
|
|
20
|
+
- Updated `make setup` to install pre-commit hooks and corrected changelog formatting to pass CI checks. (#51, #52)
|
|
21
|
+
- Updated runtime dependencies:
|
|
22
|
+
- `@modelcontextprotocol/sdk`: 1.30.1 → 1.32.2
|
|
23
|
+
- `pino`: 10.3.1 → 10.4.0
|
|
24
|
+
- `zod`: 4.6.5 → 4.6.7
|
|
25
|
+
- Refreshed development tooling, including `ts-jest`, `globals`, and `pino-pretty`.
|
|
26
|
+
|
|
27
|
+
**Full changelog:** [0.6.2…0.6.3](../../compare/0.6.2...0.6.3)
|
|
28
|
+
|
|
29
|
+
## [0.6.2] - 2026-10-01
|
|
30
|
+
|
|
31
|
+
### Highlights
|
|
32
|
+
|
|
33
|
+
- Added release-note generation with **Castoff**. (#38; addresses #37)
|
|
34
|
+
|
|
35
|
+
### Fixes
|
|
36
|
+
|
|
37
|
+
- No standalone bug fixes were recorded in this release.
|
|
38
|
+
|
|
39
|
+
### Changes
|
|
40
|
+
|
|
41
|
+
- **Runtime dependencies:** Updated `@modelcontextprotocol/sdk` from 1.30.0 to 1.30.1 and `zod` from 4.4.3 to 4.6.5. (#36, #21, #31)
|
|
42
|
+
- **Testing:** Updated Jest from 30.4.2 to 30.5.1, alongside additional testing dependency updates. (#19, #27, #35)
|
|
43
|
+
- **Development tooling:** Updated `tsx` from 4.23.12 to 4.23.15 and `globals` from 17.11.0 to 17.12.0, alongside a grouped update to three development dependencies. (#22, #33, #28, #34)
|
|
44
|
+
- **CI:** Upgraded `actions/upload-artifact` from v6 to v7. (#26)
|
|
45
|
+
|
|
46
|
+
**Full changelog:** [0.6.1 → 0.6.2](../../compare/0.6.1...0.6.2)
|
|
47
|
+
|
|
3
48
|
## 0.6.0
|
|
4
49
|
|
|
5
50
|
Agent-oriented browser debugging and interaction release. Adds structured accessibility snapshots, element ref-based interaction, network/console/CSS inspection, file operations, performance tracing, security controls, and existing Chrome connection support.
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Use pilot to open a URL, interact with it using semantic element refs, inspect n
|
|
|
16
16
|
- **Node.js**: Use the version in `.nvmrc`. Supported: Node 22 (LTS) or 24 (Active LTS).
|
|
17
17
|
- [nvm](https://github.com/nvm-sh/nvm) (Node Version Manager)
|
|
18
18
|
- [pnpm](https://pnpm.io) package manager (managed via Corepack)
|
|
19
|
-
- [pre-commit](https://pre-commit.com) for Git hooks (
|
|
19
|
+
- [pre-commit](https://pre-commit.com) for Git hooks (installed by `make setup`)
|
|
20
20
|
|
|
21
21
|
### Install nvm
|
|
22
22
|
|
|
@@ -28,6 +28,16 @@ After installation, restart your shell (or `source` your shell profile) so the `
|
|
|
28
28
|
|
|
29
29
|
### Install dependencies
|
|
30
30
|
|
|
31
|
+
The fastest path is `make setup`, which installs nvm and pre-commit with
|
|
32
|
+
Homebrew, activates the pinned Node and pnpm versions, installs dependencies,
|
|
33
|
+
builds, and installs the `pre-commit` and `pre-push` Git hooks:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
make setup
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
To do the same steps manually:
|
|
40
|
+
|
|
31
41
|
```bash
|
|
32
42
|
nvm install # installs the version from .nvmrc (Node 24)
|
|
33
43
|
nvm use
|
|
@@ -38,9 +48,8 @@ corepack prepare --activate
|
|
|
38
48
|
|
|
39
49
|
pnpm install
|
|
40
50
|
|
|
41
|
-
#
|
|
42
|
-
pre-commit install
|
|
43
|
-
pre-commit install --hook-type pre-push
|
|
51
|
+
# Install Git hooks
|
|
52
|
+
pre-commit install --hook-type pre-commit --hook-type pre-push
|
|
44
53
|
```
|
|
45
54
|
|
|
46
55
|
Corepack ships with Node.js and uses the `packageManager` field in `package.json` to pin the pnpm version, so every contributor and CI run uses the same one.
|
|
@@ -105,6 +114,71 @@ directory is read-only, point profiles at a writable location, for example:
|
|
|
105
114
|
export XDG_DATA_HOME=/tmp/pilot-data
|
|
106
115
|
```
|
|
107
116
|
|
|
117
|
+
### When `browser_start` fails
|
|
118
|
+
|
|
119
|
+
`browser_start` waits up to `startupTimeoutMs` (default 90000) for Chrome
|
|
120
|
+
DevTools to answer. A healthy start usually takes a few seconds. If Chrome exits
|
|
121
|
+
or cannot be spawned, the call fails right away with Chrome's exit status and
|
|
122
|
+
stderr, without waiting for the timeout.
|
|
123
|
+
|
|
124
|
+
Every startup error ends with three lines:
|
|
125
|
+
|
|
126
|
+
- `Launch:` shows the Chrome executable, the profile and its directory,
|
|
127
|
+
headless or visible mode, the DevTools port, and (for visible mode on Linux)
|
|
128
|
+
the display.
|
|
129
|
+
- `Cleanup:` reports whether Pilot stopped the Chrome it launched. After a
|
|
130
|
+
failed start, Pilot stops its own Chrome and releases the profile lock, so a
|
|
131
|
+
retry with the same profile does not report that the profile is in use. If
|
|
132
|
+
Chrome did not exit, the error gives its pid so you can stop it.
|
|
133
|
+
- `Next:` suggests the most likely fix.
|
|
134
|
+
|
|
135
|
+
Recovery steps for a new desktop or server:
|
|
136
|
+
|
|
137
|
+
1. Run `pilot check` (Linux) to confirm Chrome, the display, the profile
|
|
138
|
+
directory, and loopback binding.
|
|
139
|
+
2. If startup **timed out**, Chrome is probably just slow, for example on a
|
|
140
|
+
first run with a new profile or with software rendering under Xvfb/VNC.
|
|
141
|
+
Retry with a larger `startupTimeoutMs`, such as `180000`.
|
|
142
|
+
3. If Chrome **exited** in visible mode, the display is usually missing or
|
|
143
|
+
unreachable (see above). Retry with `headless: true` to confirm.
|
|
144
|
+
4. If the profile is **already in use**, the error names the Chrome pid that
|
|
145
|
+
holds the profile lock and the host it runs on. Pilot does not track that
|
|
146
|
+
browser, so `browser_stop` reports that no browser is running and will not
|
|
147
|
+
stop it. Call `browser_status` to see every Pilot profile and which process
|
|
148
|
+
holds it. To stop it, close that Chrome, call `browser_stop_all`, or call
|
|
149
|
+
`browser_start` with a different `profileName`. Pilot removes a lock automatically only when the
|
|
150
|
+
owning process on this host is gone. It never deletes a lock held by a live
|
|
151
|
+
browser. For a lock created on another host, delete
|
|
152
|
+
`<profile dir>/SingletonLock` only after confirming that no browser on that
|
|
153
|
+
host still uses the profile.
|
|
154
|
+
|
|
155
|
+
### Browsers from other Pilot sessions
|
|
156
|
+
|
|
157
|
+
Each Pilot MCP session tracks only the browser it started. Two tools work
|
|
158
|
+
across sessions:
|
|
159
|
+
|
|
160
|
+
- `browser_status` is read-only. It reports the browser this session tracks,
|
|
161
|
+
the Pilot data directory (`$XDG_DATA_HOME/pilot`, or `~/.local/share/pilot`),
|
|
162
|
+
and each profile's lock state:
|
|
163
|
+
- `unlocked`: the profile is free.
|
|
164
|
+
- `locked`: a live process on this host holds the lock. The `pilotChrome`
|
|
165
|
+
field shows whether that process is Chrome using this profile.
|
|
166
|
+
- `stale`: the process that held the lock is gone.
|
|
167
|
+
- `locked_other_host`: the lock was created on another host.
|
|
168
|
+
- `locked_unknown`: Pilot cannot read the lock's owner.
|
|
169
|
+
- `browser_stop_all` stops this session's browser, then every Chrome on this
|
|
170
|
+
host that holds a Pilot profile lock. Before each signal, it checks that the
|
|
171
|
+
process is a Chrome or Chromium executable and that its command line has the
|
|
172
|
+
exact argument `--user-data-dir=<that profile's directory>`. A reused pid or
|
|
173
|
+
an unrelated process is never stopped. A browser is reported as stopped only
|
|
174
|
+
after it has exited, and a lock that cannot be removed is reported as failed.
|
|
175
|
+
It also removes stale locks. Locks from other hosts and locks with no readable owner
|
|
176
|
+
are reported and left in place. It can close browsers that other agents are
|
|
177
|
+
using, so confirm with the user first.
|
|
178
|
+
|
|
179
|
+
Process verification uses `ps`, so `browser_stop_all` skips every locked
|
|
180
|
+
profile on Windows.
|
|
181
|
+
|
|
108
182
|
### With Docker
|
|
109
183
|
|
|
110
184
|
To use the MCP server from a Docker container, pass `-i` so stdin stays open for stdio communication:
|
|
@@ -242,11 +316,13 @@ Or add to `.mcp.json` in your project:
|
|
|
242
316
|
|
|
243
317
|
**Browser Lifecycle:**
|
|
244
318
|
|
|
245
|
-
| Tool
|
|
246
|
-
|
|
|
247
|
-
| `browser_start`
|
|
248
|
-
| `browser_stop`
|
|
249
|
-
| `
|
|
319
|
+
| Tool | Description |
|
|
320
|
+
| ------------------ | --------------------------------------------------- |
|
|
321
|
+
| `browser_start` | Launch Chrome |
|
|
322
|
+
| `browser_stop` | Stop Chrome (or disconnect from external Chrome) |
|
|
323
|
+
| `browser_status` | List this session's browser and Pilot profile locks |
|
|
324
|
+
| `browser_stop_all` | Stop every Pilot-managed Chrome on this host |
|
|
325
|
+
| `browser_connect` | Connect to an existing Chrome with remote debugging |
|
|
250
326
|
|
|
251
327
|
**Snapshot & Find:**
|
|
252
328
|
|
|
@@ -403,6 +479,7 @@ src/
|
|
|
403
479
|
│ ├── chrome-launcher.ts # Chrome process management
|
|
404
480
|
│ ├── connection.ts # CDP connection + reconnect
|
|
405
481
|
│ ├── events.ts # CDP event listeners
|
|
482
|
+
│ ├── sessions.ts # Profile lock status and stop-all
|
|
406
483
|
│ ├── tabs.ts # Tab management
|
|
407
484
|
│ ├── types.ts # Shared types
|
|
408
485
|
│ ├── inspect/ # Snapshot, styles, element refs
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Client } from 'chrome-remote-interface';
|
|
2
2
|
import type { Config } from '../util/config.js';
|
|
3
3
|
import type { ViewportConfig } from '../viewport.js';
|
|
4
|
-
import type { BrowserEventCallback, BrowserState, LaunchOptions, TabInfo } from './types.js';
|
|
4
|
+
import type { BrowserEventCallback, BrowserState, LaunchOptions, SessionInfo, TabInfo } from './types.js';
|
|
5
5
|
export declare class BrowserManager {
|
|
6
6
|
private readonly config;
|
|
7
7
|
private client;
|
|
@@ -30,6 +30,7 @@ export declare class BrowserManager {
|
|
|
30
30
|
isConnected(): boolean;
|
|
31
31
|
isLaunched(): boolean;
|
|
32
32
|
isExternalChrome(): boolean;
|
|
33
|
+
getSessionInfo(): SessionInfo;
|
|
33
34
|
getViewportConfig(): ViewportConfig | null;
|
|
34
35
|
setViewportConfig(config: ViewportConfig): void;
|
|
35
36
|
static findChromeExecutable(override?: string): string;
|
|
@@ -40,6 +41,11 @@ export declare class BrowserManager {
|
|
|
40
41
|
headless: boolean;
|
|
41
42
|
viewport: string;
|
|
42
43
|
}>;
|
|
44
|
+
/**
|
|
45
|
+
* Stop a Chrome process whose launch failed so it does not keep holding
|
|
46
|
+
* the profile lock while this manager forgets about it.
|
|
47
|
+
*/
|
|
48
|
+
private abortLaunch;
|
|
43
49
|
connect(): Promise<void>;
|
|
44
50
|
connectExisting(opts: {
|
|
45
51
|
host?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-manager.d.ts","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-manager.d.ts","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAMtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACR,MAAM,YAAY,CAAC;AA2BpB,qBAAa,cAAc;IAoBb,OAAO,CAAC,QAAQ,CAAC,MAAM;IAnBnC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,sBAAsB,CAAqB;IACnD,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,oBAAoB,CAAyB;IACrD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,YAAY,CAAuB;gBAEd,MAAM,EAAE,MAAM;IAI3C,gBAAgB,CAAC,EAAE,EAAE,oBAAoB,GAAG,IAAI;IAIhD,OAAO,CAAC,IAAI;IAIZ,QAAQ,IAAI,YAAY;IASxB,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,OAAO;IAIrB,gBAAgB,IAAI,OAAO;IAI3B,cAAc,IAAI,WAAW;IAwB7B,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI/C,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;WAIzC,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5C,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,qBAAqB;IA6BvB,MAAM,CACV,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAyInD;;;OAGG;YACW,WAAW;IAiBnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCxB,eAAe,CAAC,IAAI,EAAE;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAyDhC,OAAO,CAAC,gBAAgB;IAWxB,kBAAkB,CAAC,SAAS,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB9C,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAI9B,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BhD,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,kBAAkB;IAOpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC/B"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { mkdirSync } from 'fs';
|
|
2
|
+
import { hostname } from 'os';
|
|
3
|
+
import { basename, join } from 'path';
|
|
2
4
|
import { getLogger } from '../util/logger.js';
|
|
3
5
|
import { resolveViewport } from '../viewport.js';
|
|
4
|
-
import { findChromeExecutable, findFreePort, isProfileLocked, launchChrome, resolveUserDataDir, waitForChromeReady, cleanupLockFiles } from './chrome-launcher.js';
|
|
6
|
+
import { findChromeExecutable, findFreePort, isProfileLocked, launchChrome, resolveUserDataDir, waitForChromeReady, cleanupLockFiles, profileLockOwner, DEFAULT_STARTUP_TIMEOUT_MS } from './chrome-launcher.js';
|
|
5
7
|
import { assertLinuxBrowserPrerequisites } from './preflight.js';
|
|
6
8
|
import { connectToChrome, enableDomains, getConnectionInfo } from './connection.js';
|
|
7
9
|
import { attachEventListeners } from './events.js';
|
|
@@ -56,6 +58,29 @@ export class BrowserManager {
|
|
|
56
58
|
isExternalChrome() {
|
|
57
59
|
return this.external;
|
|
58
60
|
}
|
|
61
|
+
getSessionInfo() {
|
|
62
|
+
if (this.external) {
|
|
63
|
+
return {
|
|
64
|
+
mode: 'external',
|
|
65
|
+
connected: this.client !== null,
|
|
66
|
+
host: this.externalHost ?? undefined,
|
|
67
|
+
cdpPort: this.externalPort ?? undefined
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
if (this.chromeProcess) {
|
|
71
|
+
return {
|
|
72
|
+
mode: 'launched',
|
|
73
|
+
connected: this.client !== null,
|
|
74
|
+
pid: this.chromeProcess.pid,
|
|
75
|
+
cdpPort: this.launchedCdpPort ?? undefined,
|
|
76
|
+
userDataDir: this.launchedUserDataDir ?? undefined,
|
|
77
|
+
profile: this.launchedUserDataDir
|
|
78
|
+
? basename(this.launchedUserDataDir)
|
|
79
|
+
: undefined
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return { mode: 'none', connected: false };
|
|
83
|
+
}
|
|
59
84
|
getViewportConfig() {
|
|
60
85
|
return this.viewportConfig;
|
|
61
86
|
}
|
|
@@ -110,7 +135,7 @@ export class BrowserManager {
|
|
|
110
135
|
const profileName = opts.profileName ?? this.config.profileName;
|
|
111
136
|
const userDataDir = resolveUserDataDir(profileName);
|
|
112
137
|
if (isProfileLocked(userDataDir)) {
|
|
113
|
-
throw new Error(
|
|
138
|
+
throw new Error(describeProfileConflict(profileName, userDataDir));
|
|
114
139
|
}
|
|
115
140
|
const viewportPreset = opts.viewport ?? this.config.viewport;
|
|
116
141
|
this.viewportConfig = resolveViewport({
|
|
@@ -140,31 +165,89 @@ export class BrowserManager {
|
|
|
140
165
|
this.launchedCdpPort = port;
|
|
141
166
|
this.launchedUserDataDir = userDataDir;
|
|
142
167
|
const stderrChunks = [];
|
|
143
|
-
this.chromeProcess
|
|
168
|
+
const proc = this.chromeProcess;
|
|
169
|
+
let spawnError = null;
|
|
170
|
+
let exitStatus = null;
|
|
171
|
+
proc.stderr?.on('data', (data) => {
|
|
144
172
|
stderrChunks.push(data.toString());
|
|
145
173
|
});
|
|
146
|
-
|
|
174
|
+
proc.on('error', (err) => {
|
|
175
|
+
spawnError = err;
|
|
176
|
+
getLogger().warn({ err, chromePath }, 'Chrome process failed to start');
|
|
177
|
+
// A failed spawn does not necessarily emit 'exit'.
|
|
178
|
+
if (this.chromeProcess === proc && proc.pid === undefined) {
|
|
179
|
+
this.chromeProcess = null;
|
|
180
|
+
this.launchedCdpPort = null;
|
|
181
|
+
this.launchedUserDataDir = null;
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
proc.on('exit', (code, signal) => {
|
|
147
185
|
const logger = getLogger();
|
|
148
186
|
const stderr = stderrChunks.join('').trim();
|
|
149
|
-
const stderrFiltered = stderr
|
|
150
|
-
|
|
151
|
-
.filter((l) => !l.includes('dbus/bus.cc'))
|
|
152
|
-
.join('\n')
|
|
153
|
-
.trim();
|
|
187
|
+
const stderrFiltered = filterChromeStderr(stderr);
|
|
188
|
+
exitStatus = signal ? `signal ${signal}` : `exit code ${code}`;
|
|
154
189
|
logger.warn({
|
|
155
190
|
code,
|
|
156
191
|
signal,
|
|
157
192
|
...(stderrFiltered && { stderr: stderrFiltered.slice(0, 1000) }),
|
|
158
193
|
...(stderr && !stderrFiltered && { stderrRaw: stderr.slice(0, 500) })
|
|
159
194
|
}, 'Chrome process exited');
|
|
160
|
-
this.chromeProcess
|
|
161
|
-
|
|
162
|
-
|
|
195
|
+
if (this.chromeProcess === proc) {
|
|
196
|
+
this.chromeProcess = null;
|
|
197
|
+
this.launchedCdpPort = null;
|
|
198
|
+
this.cleanupUserDataDir(proc.pid);
|
|
199
|
+
}
|
|
163
200
|
});
|
|
164
|
-
|
|
201
|
+
const startupTimeoutMs = opts.startupTimeoutMs ?? DEFAULT_STARTUP_TIMEOUT_MS;
|
|
202
|
+
const earlyFailure = () => {
|
|
203
|
+
if (spawnError) {
|
|
204
|
+
return new Error(`Chrome failed to start (${chromePath}): ${spawnError.message}`, { cause: spawnError });
|
|
205
|
+
}
|
|
206
|
+
if (exitStatus) {
|
|
207
|
+
const stderr = filterChromeStderr(stderrChunks.join('').trim());
|
|
208
|
+
return new Error(`Chrome exited (${exitStatus}) before DevTools became ready on port ${port}.` +
|
|
209
|
+
(stderr ? ` Chrome stderr: ${stderr.slice(-1000)}` : ''));
|
|
210
|
+
}
|
|
211
|
+
return null;
|
|
212
|
+
};
|
|
213
|
+
try {
|
|
214
|
+
await waitForChromeReady(port, startupTimeoutMs, earlyFailure);
|
|
215
|
+
}
|
|
216
|
+
catch (err) {
|
|
217
|
+
const timedOut = earlyFailure() === null;
|
|
218
|
+
const cleanup = await this.abortLaunch(proc, userDataDir);
|
|
219
|
+
throw new Error(describeLaunchFailure({
|
|
220
|
+
reason: err.message,
|
|
221
|
+
timedOut,
|
|
222
|
+
startupTimeoutMs,
|
|
223
|
+
chromePath,
|
|
224
|
+
profileName,
|
|
225
|
+
userDataDir,
|
|
226
|
+
headless,
|
|
227
|
+
port,
|
|
228
|
+
cleanup
|
|
229
|
+
}), { cause: err });
|
|
230
|
+
}
|
|
165
231
|
await this.connect();
|
|
166
232
|
return { headless, viewport: viewportPreset };
|
|
167
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Stop a Chrome process whose launch failed so it does not keep holding
|
|
236
|
+
* the profile lock while this manager forgets about it.
|
|
237
|
+
*/
|
|
238
|
+
async abortLaunch(proc, userDataDir) {
|
|
239
|
+
if (this.chromeProcess === proc) {
|
|
240
|
+
this.chromeProcess = null;
|
|
241
|
+
this.launchedCdpPort = null;
|
|
242
|
+
}
|
|
243
|
+
this.launchedUserDataDir = null;
|
|
244
|
+
const pid = proc.pid;
|
|
245
|
+
const stopped = await stopChromeProcess(proc);
|
|
246
|
+
if (stopped && pid !== undefined) {
|
|
247
|
+
cleanupLockFiles(userDataDir, pid);
|
|
248
|
+
}
|
|
249
|
+
return { pid, stopped };
|
|
250
|
+
}
|
|
168
251
|
async connect() {
|
|
169
252
|
if (this.destroyed)
|
|
170
253
|
return;
|
|
@@ -292,9 +375,9 @@ export class BrowserManager {
|
|
|
292
375
|
}, this.retryMs);
|
|
293
376
|
this.retryTimer.unref();
|
|
294
377
|
}
|
|
295
|
-
cleanupUserDataDir() {
|
|
296
|
-
if (this.launchedUserDataDir) {
|
|
297
|
-
cleanupLockFiles(this.launchedUserDataDir);
|
|
378
|
+
cleanupUserDataDir(ownerPid) {
|
|
379
|
+
if (this.launchedUserDataDir && ownerPid !== undefined) {
|
|
380
|
+
cleanupLockFiles(this.launchedUserDataDir, ownerPid);
|
|
298
381
|
}
|
|
299
382
|
this.launchedUserDataDir = null;
|
|
300
383
|
}
|
|
@@ -323,33 +406,106 @@ export class BrowserManager {
|
|
|
323
406
|
const proc = this.chromeProcess;
|
|
324
407
|
this.chromeProcess = null;
|
|
325
408
|
this.launchedCdpPort = null;
|
|
326
|
-
|
|
327
|
-
proc.
|
|
409
|
+
if (await stopChromeProcess(proc)) {
|
|
410
|
+
this.cleanupUserDataDir(proc.pid);
|
|
328
411
|
}
|
|
329
|
-
|
|
330
|
-
|
|
412
|
+
else {
|
|
413
|
+
getLogger().warn({ pid: proc.pid }, 'Chrome did not exit after SIGKILL; leaving its profile lock in place');
|
|
414
|
+
this.launchedUserDataDir = null;
|
|
331
415
|
}
|
|
332
|
-
await new Promise((resolve) => {
|
|
333
|
-
if (proc.exitCode !== null) {
|
|
334
|
-
resolve();
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
const timer = setTimeout(() => {
|
|
338
|
-
try {
|
|
339
|
-
proc.kill('SIGKILL');
|
|
340
|
-
}
|
|
341
|
-
catch {
|
|
342
|
-
// process may have already exited
|
|
343
|
-
}
|
|
344
|
-
resolve();
|
|
345
|
-
}, 5000);
|
|
346
|
-
proc.once('exit', () => {
|
|
347
|
-
clearTimeout(timer);
|
|
348
|
-
resolve();
|
|
349
|
-
});
|
|
350
|
-
});
|
|
351
|
-
this.cleanupUserDataDir();
|
|
352
416
|
}
|
|
353
417
|
}
|
|
354
418
|
}
|
|
419
|
+
function filterChromeStderr(stderr) {
|
|
420
|
+
return stderr
|
|
421
|
+
.split('\n')
|
|
422
|
+
.filter((l) => !l.includes('dbus/bus.cc'))
|
|
423
|
+
.join('\n')
|
|
424
|
+
.trim();
|
|
425
|
+
}
|
|
426
|
+
/** Terminate a Chrome process, escalating to SIGKILL. Resolves true once it has exited. */
|
|
427
|
+
async function stopChromeProcess(proc) {
|
|
428
|
+
const hasExited = () => proc.exitCode !== null || proc.signalCode !== null;
|
|
429
|
+
if (proc.pid === undefined || hasExited())
|
|
430
|
+
return true;
|
|
431
|
+
const waitForExit = (ms) => new Promise((resolve) => {
|
|
432
|
+
if (hasExited()) {
|
|
433
|
+
resolve(true);
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
const timer = setTimeout(() => {
|
|
437
|
+
proc.off('exit', onExit);
|
|
438
|
+
resolve(hasExited());
|
|
439
|
+
}, ms);
|
|
440
|
+
const onExit = () => {
|
|
441
|
+
clearTimeout(timer);
|
|
442
|
+
resolve(true);
|
|
443
|
+
};
|
|
444
|
+
proc.once('exit', onExit);
|
|
445
|
+
});
|
|
446
|
+
try {
|
|
447
|
+
proc.kill();
|
|
448
|
+
}
|
|
449
|
+
catch {
|
|
450
|
+
// process may have already exited
|
|
451
|
+
}
|
|
452
|
+
if (await waitForExit(5000))
|
|
453
|
+
return true;
|
|
454
|
+
try {
|
|
455
|
+
proc.kill('SIGKILL');
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
// process may have already exited
|
|
459
|
+
}
|
|
460
|
+
return waitForExit(2000);
|
|
461
|
+
}
|
|
462
|
+
function describeProfileConflict(profileName, userDataDir) {
|
|
463
|
+
const lockPath = join(userDataDir, 'SingletonLock');
|
|
464
|
+
const owner = profileLockOwner(userDataDir);
|
|
465
|
+
const message = [
|
|
466
|
+
`Profile "${profileName}" is already in use by another browser instance.`
|
|
467
|
+
];
|
|
468
|
+
if (owner && owner.lockHost === hostname()) {
|
|
469
|
+
message.push(`Chrome pid ${owner.pid} on this host holds ${lockPath}. This Pilot session is not tracking that browser, so browser_stop will not stop it.`, `Close that Chrome window or stop pid ${owner.pid}, or call browser_start with a different profileName.`);
|
|
470
|
+
}
|
|
471
|
+
else if (owner) {
|
|
472
|
+
message.push(`The lock ${lockPath} was created by pid ${owner.pid} on host "${owner.lockHost}", not this host ("${hostname()}"), so Pilot cannot tell whether that browser is still running.`, `Call browser_start with a different profileName. If no browser on "${owner.lockHost}" uses this profile any more, delete the lock file and retry.`);
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
message.push(`Pilot could not identify the owner of the lock in ${userDataDir}.`, `Call browser_start with a different profileName. If no Chrome is using that directory, delete its SingletonLock and lockfile and retry.`);
|
|
476
|
+
}
|
|
477
|
+
return message.join(' ');
|
|
478
|
+
}
|
|
479
|
+
function describeLaunchFailure(details) {
|
|
480
|
+
const { cleanup } = details;
|
|
481
|
+
const display = process.env.DISPLAY || process.env.WAYLAND_DISPLAY || '(not set)';
|
|
482
|
+
const launch = [
|
|
483
|
+
`chrome=${details.chromePath}`,
|
|
484
|
+
`profile="${details.profileName}" (${details.userDataDir})`,
|
|
485
|
+
`mode=${details.headless ? 'headless' : 'visible'}`,
|
|
486
|
+
`devtools port=${details.port}`,
|
|
487
|
+
...(process.platform === 'linux' && !details.headless
|
|
488
|
+
? [`display=${display}`]
|
|
489
|
+
: [])
|
|
490
|
+
].join(', ');
|
|
491
|
+
let cleanupText;
|
|
492
|
+
if (cleanup.pid === undefined) {
|
|
493
|
+
cleanupText = 'No Chrome process was left running.';
|
|
494
|
+
}
|
|
495
|
+
else if (cleanup.stopped) {
|
|
496
|
+
cleanupText = `Pilot stopped the Chrome process it launched (pid ${cleanup.pid}); profile "${details.profileName}" is free to reuse.`;
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
cleanupText = `Chrome (pid ${cleanup.pid}) did not stop and may still hold profile "${details.profileName}". Stop it (kill -9 ${cleanup.pid}) or call browser_start with a different profileName.`;
|
|
500
|
+
}
|
|
501
|
+
const nextSteps = details.timedOut
|
|
502
|
+
? `Chrome can be slow on a first run or with software rendering; retry with a larger startupTimeoutMs (this attempt used ${details.startupTimeoutMs}ms). Run \`pilot check\` to diagnose the environment.`
|
|
503
|
+
: `Run \`pilot check\` to diagnose the environment${details.headless ? '' : ', or retry with headless: true if no graphical display is available'}.`;
|
|
504
|
+
return [
|
|
505
|
+
details.reason,
|
|
506
|
+
`Launch: ${launch}.`,
|
|
507
|
+
`Cleanup: ${cleanupText}`,
|
|
508
|
+
`Next: ${nextSteps}`
|
|
509
|
+
].join('\n');
|
|
510
|
+
}
|
|
355
511
|
//# sourceMappingURL=browser-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-manager.js","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-manager.js","sourceRoot":"","sources":["../../src/browser/browser-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,8 @@ export declare function isProfileLocked(userDataDir: string): boolean;
|
|
|
13
13
|
export declare function findChromeExecutable(override?: string): string;
|
|
14
14
|
export declare function findFreePort(): Promise<number>;
|
|
15
15
|
export declare function formatPortBindError(error: NodeJS.ErrnoException): Error;
|
|
16
|
-
export declare
|
|
16
|
+
export declare const DEFAULT_STARTUP_TIMEOUT_MS = 90000;
|
|
17
|
+
export declare function waitForChromeReady(port: number, timeoutMs?: number, earlyFailure?: () => Error | null): Promise<void>;
|
|
17
18
|
export interface ChromeLaunchResult {
|
|
18
19
|
process: ChildProcess;
|
|
19
20
|
port: number;
|
|
@@ -27,5 +28,15 @@ export declare function launchChrome(opts: {
|
|
|
27
28
|
windowWidth: number;
|
|
28
29
|
windowHeight: number;
|
|
29
30
|
}): ChildProcess;
|
|
30
|
-
export declare function
|
|
31
|
+
export declare function profileLockOwner(userDataDir: string): {
|
|
32
|
+
pid: number;
|
|
33
|
+
lockHost: string;
|
|
34
|
+
} | null;
|
|
35
|
+
/**
|
|
36
|
+
* Remove the profile lock files left by a Chrome process Pilot launched.
|
|
37
|
+
* A SingletonLock that names a different process is left alone: if Chrome
|
|
38
|
+
* handed off to another instance already using the profile, that lock
|
|
39
|
+
* belongs to the live browser. Returns false when a lock was left in place.
|
|
40
|
+
*/
|
|
41
|
+
export declare function cleanupLockFiles(userDataDir: string, ownerPid: number): boolean;
|
|
31
42
|
//# sourceMappingURL=chrome-launcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome-launcher.d.ts","sourceRoot":"","sources":["../../src/browser/chrome-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAOzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,eAAe,QAAgC,CAAC;AAE7D,wBAAgB,eAAe,IAAI,eAAe,CAejD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAS9D;AAeD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAc1C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD;AAkBD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CA8B5D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAiC9D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAWpD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG,KAAK,CAOvE;
|
|
1
|
+
{"version":3,"file":"chrome-launcher.d.ts","sourceRoot":"","sources":["../../src/browser/chrome-launcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAOzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,eAAe,QAAgC,CAAC;AAE7D,wBAAgB,eAAe,IAAI,eAAe,CAejD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAS9D;AAeD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAc1C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD;AAkBD,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CA8B5D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAiC9D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAWpD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,GAAG,KAAK,CAOvE;AAMD,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,SAA6B,EACtC,YAAY,CAAC,EAAE,MAAM,KAAK,GAAG,IAAI,GAChC,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,YAAY,CAkDf;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAkBT"}
|