@ai-ecoverse/slicc-browsers 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -9
- package/catalog.json +23 -2
- package/corpus.json +559 -0
- package/package.json +1 -1
- package/schema/browsers.schema.json +9 -3
- package/schema/catalog.schema.json +38 -5
- package/schema/corpus.schema.json +7 -2
package/README.md
CHANGED
|
@@ -66,7 +66,7 @@ Every feature builds for `wasm32-wasip1`.
|
|
|
66
66
|
- `windows?`: `roots` (names from `platforms.windows.roots`, searched in order) and `executables` (each tried under each root); `dataRoot` and `dataDir`, the default user-data dir; `startMenuInternet?`, the browser's key names under the `StartMenuInternet` registry keys.
|
|
67
67
|
- `linux?`: `bins` (names on `PATH`), `desktopIds` (`.desktop` file names without the suffix), `flatpak?` (the app id), `snap?` (the snap name), `snapDataDir?` (the user-data dir under `~/snap/<snap>/common`), `configDir` (the user-data dir under the config dir, also under `~/.var/app/<flatpak>/config` for a flatpak), and `debs` (dpkg package names for the version).
|
|
68
68
|
- `electron`: `macosApps` (known Electron apps by bundle id, with display names), `debugBlocked` (app names that block remote debugging; they're listed with `debugSupport: "disabled"` and never launched), and `idPrefix` (`electron:`, followed by the slug of the name: lower case, runs of other characters as one `-`).
|
|
69
|
-
- `rank`: `tiers`, 1 to
|
|
69
|
+
- `rank`: `tiers`, 1 to 6: `sevenOpen` (an endpoint with a seven tab), `endpoint` (any other endpoint), `chrome` (installed `chromeId`), `chromium` (other installed Chromium browsers), `electron` (installed Electron apps), `six` (an endpoint in SLICC six's profile, with or without a seven tab; see [SLICC six's profiles](#slicc-sixs-profiles)).
|
|
70
70
|
- `discovery`:
|
|
71
71
|
- `activePortFile` (`DevToolsActivePort`): its first line is the port (1 to 65535) and its second the browser's websocket path, which starts with `/`. A file without both is ignored. A file is live only when its port answers `/json/version` with a `webSocketDebuggerUrl` whose path is that websocket path; otherwise it's stale and ignored. When the port accepts connections but serves no `/json/version`, the endpoint is listed as `wsOnly`, with `ws://127.0.0.1:<port><path>`;
|
|
72
72
|
- `probePorts` (9222 to 9229, probed by `slicc` only);
|
|
@@ -82,7 +82,10 @@ Every feature builds for `wasm32-wasip1`.
|
|
|
82
82
|
- `discardExceptions`: where the site pattern and the extra origins' hosts go, as a `list` of strings or as a `chrome-time-map`, a map from site to the time it was added (microseconds since 1601-01-01 UTC, as a decimal string);
|
|
83
83
|
- `cleanExit`: values that mark the last exit clean;
|
|
84
84
|
- `form` says where a key comes from: `six` (SLICC six's keys) or `chrome-154` (what Chrome 154 reads).
|
|
85
|
-
- `profiles`: SLICC profiles live in `<config dir>/<root>/<name>`, and a snap's in `~/snap/<snap>/common/<snapRoot>/<name>`. `legacyRoot` is the old root,
|
|
85
|
+
- `profiles`: SLICC profiles live in `<config dir>/<root>/<name>`, and a snap's in `~/snap/<snap>/common/<snapRoot>/<name>`. `legacyRoot` is the old root, never scanned; on macOS's case-insensitive volume it is SLICC six's root too. `sixProfilePattern` matches six's profile names, case-insensitively. `namePattern` is a valid profile name. `six` describes SLICC six's Chrome profiles (see [SLICC six's profiles](#slicc-sixs-profiles)):
|
|
86
|
+
- `roots`: six's profile root per OS (`macos`, `linux`, `windows`), a `base` location followed by the `path` segments. The base is its `env` when that is set and not empty (any value, as six takes it), else `home` under the home dir.
|
|
87
|
+
- `defaultName` (`browser-coding-agent-chrome`), `defaultPort` (5710) and `portSuffix` (`-{port}`): six's profile for its serve port `<port>` is `<root>/<defaultName>`, with `portSuffix` added for any port other than `defaultPort`.
|
|
88
|
+
- `userDataDirEnv` (`SLICC_USER_DATA_DIR`): when set, its value, trimmed of whitespace, is six's profile for every port, unless it is empty.
|
|
86
89
|
- `launch`: `chromiumArgs` (with `{profile}` for the profile dir), then the seven flags, then `headless` with `--headless`. Electron apps get `electron.portFlag` with the first free port from `electron.minPort` up that isn't in `electron.reservedPorts`.
|
|
87
90
|
- `platforms`: the config dir per OS, the Windows roots, and the Windows registry keys. A location is the environment variable `env` when it's set (on Linux only an absolute path counts), else `absolute`, else `home` under the home dir. `registry`: under each of `hives`, every subkey of each `startMenuInternet` key, with its `openCommand` default value, and the default value of `appPaths\<name>` for each of `appPathNames`.
|
|
88
91
|
|
|
@@ -93,13 +96,40 @@ The process scan finds browsers started with a debugging port by something else:
|
|
|
93
96
|
- **What's skipped:** pid 0, the scanning process itself, and commands whose first token is a wrapper. The first token is the quoted string when the command starts with a quote. A wrapper is a token whose base name, without `.exe`, `.cmd` or `.bat`, is one of `wrappers`, case-insensitively. A command with no executable before its first `-` token is skipped too.
|
|
94
97
|
- **The port** comes from the first `--remote-debugging-port` followed by `=` or whitespace and then digits. A port above 65535 drops the process.
|
|
95
98
|
- **The dir** is the value of `--user-data-dir` at the start of a token, followed by `=` or by whitespace (which is skipped). A value that starts with one of `valueQuotes` (`"` or `'`) runs to the matching quote. Any other value runs up to the first whitespace that is followed by `valueStop` (`--`), or to the end of the command, without trailing whitespace. So `--user-data-dir=/Users/me/Library/Application Support/x --no-first-run` gives `/Users/me/Library/Application Support/x`. A value that would start with `--` is empty.
|
|
96
|
-
- **Port 0** means the port is in the dir's `DevToolsActivePort`, checked like any other. With no dir, or a dir under the legacy profile root (a `slicc` segment followed by `profiles`, case-insensitively), the process is skipped.
|
|
99
|
+
- **Port 0** means the port is in the dir's `DevToolsActivePort`, checked like any other. With no dir, or a dir under the legacy profile root (a `slicc` segment followed by `profiles`, case-insensitively) that isn't one of [six's profile dirs](#slicc-sixs-profiles), the process is skipped.
|
|
97
100
|
- **Any other port** is probed on `127.0.0.1`. An endpoint from the process scan has `source: "process"` and `userDataDir` set to the dir when there is one.
|
|
98
101
|
- **Tests** must fake the process list: never scan the real one in a test.
|
|
99
102
|
|
|
103
|
+
## SLICC six's profiles
|
|
104
|
+
|
|
105
|
+
SLICC six launches Chrome in a profile of its own, and slicc-cli can use that profile in place (`slicc --profile six`). Discovery never chooses it: its endpoints are listed, marked and ranked last.
|
|
106
|
+
|
|
107
|
+
| | macOS | Linux | Windows |
|
|
108
|
+
| --- | --- | --- | --- |
|
|
109
|
+
| six's root | `~/Library/Application Support/Slicc/profiles` | `$XDG_STATE_HOME/slicc/profiles`, else `~/.local/state/slicc/profiles` | `%LOCALAPPDATA%\Slicc\profiles`, else `~\AppData\Local\Slicc\profiles` |
|
|
110
|
+
|
|
111
|
+
Taken from [ai-ecoverse/slicc](https://github.com/ai-ecoverse/slicc) at `65c5a79b4` (v6.247.17-8):
|
|
112
|
+
|
|
113
|
+
| what | where |
|
|
114
|
+
| --- | --- |
|
|
115
|
+
| the root per OS | `packages/node-server/src/chrome-launch.ts:119-136` (`resolveProfilesDir`); `packages/swift-server/Sources/Browser/ChromeLauncher.swift:314-322` (macOS only) |
|
|
116
|
+
| `browser-coding-agent-chrome` | `chrome-launch.ts:27`; `ChromeLauncher.swift:5` |
|
|
117
|
+
| the `-<port>` suffix for a serve port other than 5710 | `chrome-launch.ts:147`; `ChromeLauncher.swift:6`, `:323` |
|
|
118
|
+
| `SLICC_USER_DATA_DIR`, trimmed | `chrome-launch.ts:143-146` (node-server only) |
|
|
119
|
+
| six's own `--remote-debugging-port` (9222 by default) | `chrome-launch.ts:283`, `packages/node-server/src/runtime-flags.ts:47`; `ChromeLauncher.swift:213` |
|
|
120
|
+
|
|
121
|
+
**Six's profile dirs** are the dirs in six's root whose name matches `sixProfilePattern` case-insensitively, and the `SLICC_USER_DATA_DIR` dir. A dir found anywhere is six's when it is one of them: the paths are compared case-insensitively, with `/` and `\` alike, and after resolving symlinks where the program can (so a symlink to six's profile, or a symlinked root, is six's too).
|
|
122
|
+
|
|
123
|
+
**Discovery** marks an endpoint `six: true` when one of its sources found it in six's profile:
|
|
124
|
+
- `DevToolsActivePort` in each of six's profile dirs, checked like any other. No other dir in six's root is read.
|
|
125
|
+
- The process list: a process whose `--user-data-dir` is six's. With port 0 its `DevToolsActivePort` is read, which the legacy-root rule would otherwise skip.
|
|
126
|
+
- Merging: an endpoint is six's when any source that found it, and whose checks passed, is six's. So a port probe hit or a `--cdp` URL that the process list maps to six's profile is six's, while a stale `DevToolsActivePort` in six's profile marks nothing. Its `userDataDir` is six's dir when the source that wins has none.
|
|
127
|
+
|
|
128
|
+
A six endpoint has tier `six`, whatever its seven tabs. **A program never chooses it by itself**: a default choice, an "attach to the best" rule, or a non-interactive mode skips it. Only an explicit request for six's profile unlocks it, such as `slicc --profile six` or picking it in a picker.
|
|
129
|
+
|
|
100
130
|
## Output schema 1
|
|
101
131
|
|
|
102
|
-
`schema/browsers.schema.json` describes `slicc browsers --json`, which `playwright-cli list --json` also prints. [slicc-cli's README](https://github.com/ai-ecoverse/slicc-cli#slicc-browsers---json---cdp-url---no-bundle-scan) is the authoritative spec for it; this schema is a copy and follows it. Fields can be added; `source` is one of `devtools-active-port`, `flag`, `probe` and `process`.
|
|
132
|
+
`schema/browsers.schema.json` describes `slicc browsers --json`, which `playwright-cli list --json` also prints. [slicc-cli's README](https://github.com/ai-ecoverse/slicc-cli#slicc-browsers---json---cdp-url---no-bundle-scan) is the authoritative spec for it; this schema is a copy and follows it. Fields can be added; `source` is one of `devtools-active-port`, `flag`, `probe` and `process`. `tier` is 1 to 6, and `six: true` marks an endpoint in SLICC six's profile (tier 6).
|
|
103
133
|
|
|
104
134
|
## The corpus
|
|
105
135
|
|
|
@@ -107,15 +137,16 @@ Each case is a fake machine: a home tree, `DevToolsActivePort` files, fake `/jso
|
|
|
107
137
|
|
|
108
138
|
**`case.json`:**
|
|
109
139
|
- `description`, and `os?`: the OSes the case runs on (`darwin`, `linux`, `windows`; default all).
|
|
110
|
-
- `needs`: what a program must support to run the case: `user-data-dirs` (`DevToolsActivePort` in browsers' default user-data dirs), `seven-profiles` (in the profile roots), `flag` (`--cdp` URLs), `process`, `probe` (port probes, `slicc` only), `origins` (extra seven origins), `installed` (ranking installed browsers). A program skips a case that needs something it doesn't do.
|
|
140
|
+
- `needs`: what a program must support to run the case: `user-data-dirs` (`DevToolsActivePort` in browsers' default user-data dirs), `seven-profiles` (in the profile roots), `flag` (`--cdp` URLs), `process`, `probe` (port probes, `slicc` only), `origins` (extra seven origins), `installed` (ranking installed browsers), `six` (finding and marking SLICC six's profiles). A program skips a case that needs something it doesn't do.
|
|
111
141
|
- `env?`: environment variables for discovery, which sees nothing else from the real environment.
|
|
112
142
|
- `files?`: file contents by path. Every path starts with a token.
|
|
113
143
|
- `cdp?`, `origins?`, `probePorts?`: `--cdp` URLs, extra seven origins, and the ports to probe.
|
|
114
144
|
- `processes?`: `{ "pid", "command" }`, or `{ "self": true, "command" }` for the scanning process, whose pid the harness fills in.
|
|
115
145
|
- `http?`: fake servers by `host:port`. `localhost` and `[::1]` are `127.0.0.1`. A listed port accepts TCP connections. `/json/version` answers 200 with `version`, `/json/list` (and `/json`) with `list`. A missing body, or any other path, answers 404. An unlisted port refuses connections.
|
|
116
146
|
- `installed?`: installed browsers in the shape of output schema 1's `installed`, ranked along with the endpoints.
|
|
147
|
+
- `auto`: exactly in the cases that need `six`, the id of the first entry in `expected.json` that isn't six's, or `null` when every entry is. A program that chooses without being asked must choose no entry before it, and never a six entry.
|
|
117
148
|
|
|
118
|
-
**Tokens.** `{home}` (the fake home), `{config}` (the config dir), `{sevenProfiles}` (the profile root) and `{userData:<id>}` (the browser's first default user-data dir on this OS) stand for directories. In `files`, `env`, `cdp`, process commands and `expected.json`, a token and the path characters after it (up to whitespace, `"`, `'` or `,`) become a path on the OS under test, with `\` on Windows. The token values come from `catalog.json`, with the case's `env`.
|
|
149
|
+
**Tokens.** `{home}` (the fake home), `{config}` (the config dir), `{sevenProfiles}` (the profile root), `{sixProfiles}` (SLICC six's root) and `{userData:<id>}` (the browser's first default user-data dir on this OS) stand for directories. In `files`, `env`, `cdp`, process commands and `expected.json`, a token and the path characters after it (up to whitespace, `"`, `'` or `,`) become a path on the OS under test, with `\` on Windows. The token values come from `catalog.json`, with the case's `env`.
|
|
119
150
|
|
|
120
151
|
**Never 9222 to 9229.** A developer's own Chrome listens there. The corpus schema refuses those ports, `npm run validate` refuses them anywhere in the corpus, and the fakes never serve them.
|
|
121
152
|
|
|
@@ -161,13 +192,13 @@ for case in corpus().cases {
|
|
|
161
192
|
}
|
|
162
193
|
```
|
|
163
194
|
|
|
164
|
-
`Layout` also gives `Config`, `SevenProfiles`, `UserDataDirs(id)`, `Token(name)` and `Expand(text)` (Rust: `config`, `seven_profiles`, `user_data_dirs`, `token`, `expand`). Their results for a few homes are pinned in `test/integration/layout.json`, which the Go and Rust tests both check.
|
|
195
|
+
`Layout` also gives `Config`, `SevenProfiles`, `SixProfiles`, `UserDataDirs(id)`, `Token(name)` and `Expand(text)` (Rust: `config`, `seven_profiles`, `six_profiles`, `user_data_dirs`, `token`, `expand`). Their results for a few homes are pinned in `test/integration/layout.json`, which the Go and Rust tests both check.
|
|
165
196
|
|
|
166
197
|
## Development
|
|
167
198
|
|
|
168
199
|
Go 1.26, Rust stable with `wasm32-wasip1`, Node ≥ 24.
|
|
169
200
|
- `npm run corpus` regenerates `corpus.json` from `corpus/`; the pre-commit hook and CI fail when it's stale.
|
|
170
|
-
- `npm run validate` checks `catalog.json` and `corpus.json` against the schemas, plus what a schema can't say: unique ids, bundle ids and names, known Windows roots, rising tiers, compiling patterns, known tokens, tier order and `
|
|
201
|
+
- `npm run validate` checks `catalog.json` and `corpus.json` against the schemas, plus what a schema can't say: unique ids, bundle ids and names, known Windows roots, rising tiers, compiling patterns, known tokens, tier order, `sevenOpen`, `six` and `auto` in each `expected.json`, and no port from 9222 to 9229.
|
|
171
202
|
- `npm run lint`: the slicc lint tools (Biome, no comments, no unit tests in git, `AGENTS.md`), `gofmt`, `go mod tidy -diff`, `go vet`, golangci-lint, `cargo fmt --check` and clippy.
|
|
172
203
|
- `npm test`: `validate`, the Go tests in `test/integration/`, and `cargo test --all-features`.
|
|
173
204
|
- `npm run build`: the Go module, the crate (also for `wasm32-wasip1`), and `npm pack --dry-run`.
|
|
@@ -181,7 +212,7 @@ semantic-release cuts one version from `main` for all three packages (`.github/w
|
|
|
181
212
|
2. **npm:** with the repository variable `SLICC_BROWSERS_NPM_PUBLISH` set to `true`, the package is stamped with the version and published through npm trusted publishing (OIDC, with provenance). A version that is already on npm is skipped.
|
|
182
213
|
3. **crates.io:** with the repository variable `SLICC_BROWSERS_CRATES_PUBLISH` set to `true`, `Cargo.toml` is stamped with the version and `cargo publish` runs with a short-lived token from crates.io trusted publishing (`rust-lang/crates-io-auth-action`). A version that is already on crates.io is skipped.
|
|
183
214
|
|
|
184
|
-
A run started by hand
|
|
215
|
+
A run started by hand publishes what's missing without a new release: `gh workflow run release.yml --ref main` when `main`'s head has its tag, or `gh workflow run release.yml --ref main -f tag=vX.Y.Z` for any existing tag.
|
|
185
216
|
|
|
186
217
|
**Go module versions.** A pushed tag is the release: `proxy.golang.org` caches it and `sum.golang.org` records its hash for good. Never move or delete a pushed tag; retract a bad version in `go.mod` and release anew. A `BREAKING CHANGE` needs a `/vN` module path first.
|
|
187
218
|
|
package/catalog.json
CHANGED
|
@@ -580,7 +580,8 @@
|
|
|
580
580
|
"endpoint": 2,
|
|
581
581
|
"chrome": 3,
|
|
582
582
|
"chromium": 4,
|
|
583
|
-
"electron": 5
|
|
583
|
+
"electron": 5,
|
|
584
|
+
"six": 6
|
|
584
585
|
},
|
|
585
586
|
"chromeId": "chrome"
|
|
586
587
|
},
|
|
@@ -705,7 +706,27 @@
|
|
|
705
706
|
"snapRoot": ["slicc", "seven-profiles"],
|
|
706
707
|
"legacyRoot": ["slicc", "profiles"],
|
|
707
708
|
"sixProfilePattern": "^browser-coding-agent-chrome(-[0-9]+)?$",
|
|
708
|
-
"namePattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$"
|
|
709
|
+
"namePattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
|
|
710
|
+
"six": {
|
|
711
|
+
"roots": {
|
|
712
|
+
"macos": {
|
|
713
|
+
"base": { "home": ["Library", "Application Support"] },
|
|
714
|
+
"path": ["Slicc", "profiles"]
|
|
715
|
+
},
|
|
716
|
+
"linux": {
|
|
717
|
+
"base": { "env": "XDG_STATE_HOME", "home": [".local", "state"] },
|
|
718
|
+
"path": ["slicc", "profiles"]
|
|
719
|
+
},
|
|
720
|
+
"windows": {
|
|
721
|
+
"base": { "env": "LOCALAPPDATA", "home": ["AppData", "Local"] },
|
|
722
|
+
"path": ["Slicc", "profiles"]
|
|
723
|
+
}
|
|
724
|
+
},
|
|
725
|
+
"defaultName": "browser-coding-agent-chrome",
|
|
726
|
+
"defaultPort": 5710,
|
|
727
|
+
"portSuffix": "-{port}",
|
|
728
|
+
"userDataDirEnv": "SLICC_USER_DATA_DIR"
|
|
729
|
+
}
|
|
709
730
|
},
|
|
710
731
|
"launch": {
|
|
711
732
|
"chromiumArgs": [
|
package/corpus.json
CHANGED
|
@@ -2127,6 +2127,565 @@
|
|
|
2127
2127
|
]
|
|
2128
2128
|
}
|
|
2129
2129
|
},
|
|
2130
|
+
{
|
|
2131
|
+
"name": "six-flag",
|
|
2132
|
+
"case": {
|
|
2133
|
+
"description": "A --cdp URL is still six's when the process list maps its port to six's profile: the flag wins as the source, and the endpoint keeps six's userDataDir",
|
|
2134
|
+
"needs": [
|
|
2135
|
+
"six",
|
|
2136
|
+
"process",
|
|
2137
|
+
"flag"
|
|
2138
|
+
],
|
|
2139
|
+
"cdp": [
|
|
2140
|
+
"127.0.0.1:9341"
|
|
2141
|
+
],
|
|
2142
|
+
"processes": [
|
|
2143
|
+
{
|
|
2144
|
+
"pid": 401,
|
|
2145
|
+
"command": "/opt/google/chrome/chrome --remote-debugging-port=9341 --user-data-dir={sixProfiles}/browser-coding-agent-chrome"
|
|
2146
|
+
}
|
|
2147
|
+
],
|
|
2148
|
+
"http": {
|
|
2149
|
+
"127.0.0.1:9341": {
|
|
2150
|
+
"version": {
|
|
2151
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2152
|
+
"Protocol-Version": "1.3",
|
|
2153
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2154
|
+
"V8-Version": "15.4.79.1",
|
|
2155
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2156
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9341/devtools/browser/z1"
|
|
2157
|
+
},
|
|
2158
|
+
"list": []
|
|
2159
|
+
}
|
|
2160
|
+
},
|
|
2161
|
+
"auto": null
|
|
2162
|
+
},
|
|
2163
|
+
"expected": {
|
|
2164
|
+
"schema": 1,
|
|
2165
|
+
"minChromium": 116,
|
|
2166
|
+
"entries": [
|
|
2167
|
+
{
|
|
2168
|
+
"id": "cdp:127.0.0.1:9341",
|
|
2169
|
+
"kind": "endpoint",
|
|
2170
|
+
"tier": 6,
|
|
2171
|
+
"name": "Chrome",
|
|
2172
|
+
"version": "154.0.8037.98",
|
|
2173
|
+
"endpoint": {
|
|
2174
|
+
"cdp": "http://127.0.0.1:9341",
|
|
2175
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9341/devtools/browser/z1",
|
|
2176
|
+
"name": "Chrome",
|
|
2177
|
+
"version": "154.0.8037.98",
|
|
2178
|
+
"product": "Chrome/154.0.8037.98",
|
|
2179
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2180
|
+
"source": "flag",
|
|
2181
|
+
"userDataDir": "{sixProfiles}/browser-coding-agent-chrome",
|
|
2182
|
+
"six": true,
|
|
2183
|
+
"sevenOpen": false,
|
|
2184
|
+
"sevenTabs": []
|
|
2185
|
+
}
|
|
2186
|
+
}
|
|
2187
|
+
]
|
|
2188
|
+
}
|
|
2189
|
+
},
|
|
2190
|
+
{
|
|
2191
|
+
"name": "six-probe",
|
|
2192
|
+
"case": {
|
|
2193
|
+
"description": "A port probe hit that the process list maps to six's profile is six's; a probe hit the process list doesn't know ranks as usual",
|
|
2194
|
+
"needs": [
|
|
2195
|
+
"six",
|
|
2196
|
+
"process",
|
|
2197
|
+
"probe"
|
|
2198
|
+
],
|
|
2199
|
+
"probePorts": [
|
|
2200
|
+
9331,
|
|
2201
|
+
9332
|
|
2202
|
+
],
|
|
2203
|
+
"processes": [
|
|
2204
|
+
{
|
|
2205
|
+
"pid": 301,
|
|
2206
|
+
"command": "/opt/google/chrome/chrome --remote-debugging-port=9331 --user-data-dir={sixProfiles}/browser-coding-agent-chrome"
|
|
2207
|
+
}
|
|
2208
|
+
],
|
|
2209
|
+
"http": {
|
|
2210
|
+
"127.0.0.1:9331": {
|
|
2211
|
+
"version": {
|
|
2212
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2213
|
+
"Protocol-Version": "1.3",
|
|
2214
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2215
|
+
"V8-Version": "15.4.79.1",
|
|
2216
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2217
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9331/devtools/browser/y1"
|
|
2218
|
+
},
|
|
2219
|
+
"list": [
|
|
2220
|
+
{
|
|
2221
|
+
"id": "S1",
|
|
2222
|
+
"type": "page",
|
|
2223
|
+
"url": "https://lars.sliccy.ai/",
|
|
2224
|
+
"title": "seven",
|
|
2225
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1/devtools/page/S1"
|
|
2226
|
+
}
|
|
2227
|
+
]
|
|
2228
|
+
},
|
|
2229
|
+
"127.0.0.1:9332": {
|
|
2230
|
+
"version": {
|
|
2231
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2232
|
+
"Protocol-Version": "1.3",
|
|
2233
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2234
|
+
"V8-Version": "15.4.79.1",
|
|
2235
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2236
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9332/devtools/browser/y2"
|
|
2237
|
+
},
|
|
2238
|
+
"list": []
|
|
2239
|
+
}
|
|
2240
|
+
},
|
|
2241
|
+
"auto": "cdp:127.0.0.1:9332"
|
|
2242
|
+
},
|
|
2243
|
+
"expected": {
|
|
2244
|
+
"schema": 1,
|
|
2245
|
+
"minChromium": 116,
|
|
2246
|
+
"entries": [
|
|
2247
|
+
{
|
|
2248
|
+
"id": "cdp:127.0.0.1:9332",
|
|
2249
|
+
"kind": "endpoint",
|
|
2250
|
+
"tier": 2,
|
|
2251
|
+
"name": "Chrome",
|
|
2252
|
+
"version": "154.0.8037.98",
|
|
2253
|
+
"endpoint": {
|
|
2254
|
+
"cdp": "http://127.0.0.1:9332",
|
|
2255
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9332/devtools/browser/y2",
|
|
2256
|
+
"name": "Chrome",
|
|
2257
|
+
"version": "154.0.8037.98",
|
|
2258
|
+
"product": "Chrome/154.0.8037.98",
|
|
2259
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2260
|
+
"source": "probe",
|
|
2261
|
+
"sevenOpen": false,
|
|
2262
|
+
"sevenTabs": []
|
|
2263
|
+
}
|
|
2264
|
+
},
|
|
2265
|
+
{
|
|
2266
|
+
"id": "cdp:127.0.0.1:9331",
|
|
2267
|
+
"kind": "endpoint",
|
|
2268
|
+
"tier": 6,
|
|
2269
|
+
"name": "Chrome",
|
|
2270
|
+
"version": "154.0.8037.98",
|
|
2271
|
+
"endpoint": {
|
|
2272
|
+
"cdp": "http://127.0.0.1:9331",
|
|
2273
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9331/devtools/browser/y1",
|
|
2274
|
+
"name": "Chrome",
|
|
2275
|
+
"version": "154.0.8037.98",
|
|
2276
|
+
"product": "Chrome/154.0.8037.98",
|
|
2277
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2278
|
+
"source": "process",
|
|
2279
|
+
"userDataDir": "{sixProfiles}/browser-coding-agent-chrome",
|
|
2280
|
+
"six": true,
|
|
2281
|
+
"sevenOpen": true,
|
|
2282
|
+
"sevenTabs": [
|
|
2283
|
+
{
|
|
2284
|
+
"id": "S1",
|
|
2285
|
+
"url": "https://lars.sliccy.ai/",
|
|
2286
|
+
"title": "seven"
|
|
2287
|
+
}
|
|
2288
|
+
]
|
|
2289
|
+
}
|
|
2290
|
+
}
|
|
2291
|
+
]
|
|
2292
|
+
}
|
|
2293
|
+
},
|
|
2294
|
+
{
|
|
2295
|
+
"name": "six-process-scan",
|
|
2296
|
+
"case": {
|
|
2297
|
+
"description": "A process whose --user-data-dir is one of six's profiles is six's: with a port, and with port 0 through the profile's DevToolsActivePort; other processes rank as usual and come first",
|
|
2298
|
+
"needs": [
|
|
2299
|
+
"six",
|
|
2300
|
+
"process"
|
|
2301
|
+
],
|
|
2302
|
+
"files": {
|
|
2303
|
+
"{sixProfiles}/browser-coding-agent-chrome-5711/DevToolsActivePort": "9322\n/devtools/browser/x8\n"
|
|
2304
|
+
},
|
|
2305
|
+
"processes": [
|
|
2306
|
+
{
|
|
2307
|
+
"pid": 201,
|
|
2308
|
+
"command": "/opt/google/chrome/chrome --remote-debugging-port=9321 --user-data-dir={sixProfiles}/browser-coding-agent-chrome --no-first-run"
|
|
2309
|
+
},
|
|
2310
|
+
{
|
|
2311
|
+
"pid": 202,
|
|
2312
|
+
"command": "/opt/google/chrome/chrome --remote-debugging-port=0 --user-data-dir={sixProfiles}/browser-coding-agent-chrome-5711"
|
|
2313
|
+
},
|
|
2314
|
+
{
|
|
2315
|
+
"pid": 203,
|
|
2316
|
+
"command": "/opt/google/chrome/chrome --remote-debugging-port=9323 --user-data-dir={home}/tmp/pw"
|
|
2317
|
+
}
|
|
2318
|
+
],
|
|
2319
|
+
"http": {
|
|
2320
|
+
"127.0.0.1:9321": {
|
|
2321
|
+
"version": {
|
|
2322
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2323
|
+
"Protocol-Version": "1.3",
|
|
2324
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2325
|
+
"V8-Version": "15.4.79.1",
|
|
2326
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2327
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9321/devtools/browser/x7"
|
|
2328
|
+
},
|
|
2329
|
+
"list": [
|
|
2330
|
+
{
|
|
2331
|
+
"id": "S1",
|
|
2332
|
+
"type": "page",
|
|
2333
|
+
"url": "https://lars.sliccy.ai/",
|
|
2334
|
+
"title": "seven",
|
|
2335
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1/devtools/page/S1"
|
|
2336
|
+
}
|
|
2337
|
+
]
|
|
2338
|
+
},
|
|
2339
|
+
"127.0.0.1:9322": {
|
|
2340
|
+
"version": {
|
|
2341
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2342
|
+
"Protocol-Version": "1.3",
|
|
2343
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2344
|
+
"V8-Version": "15.4.79.1",
|
|
2345
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2346
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9322/devtools/browser/x8"
|
|
2347
|
+
},
|
|
2348
|
+
"list": []
|
|
2349
|
+
},
|
|
2350
|
+
"127.0.0.1:9323": {
|
|
2351
|
+
"version": {
|
|
2352
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2353
|
+
"Protocol-Version": "1.3",
|
|
2354
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2355
|
+
"V8-Version": "15.4.79.1",
|
|
2356
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2357
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9323/devtools/browser/x9"
|
|
2358
|
+
},
|
|
2359
|
+
"list": []
|
|
2360
|
+
}
|
|
2361
|
+
},
|
|
2362
|
+
"auto": "cdp:127.0.0.1:9323"
|
|
2363
|
+
},
|
|
2364
|
+
"expected": {
|
|
2365
|
+
"schema": 1,
|
|
2366
|
+
"minChromium": 116,
|
|
2367
|
+
"entries": [
|
|
2368
|
+
{
|
|
2369
|
+
"id": "cdp:127.0.0.1:9323",
|
|
2370
|
+
"kind": "endpoint",
|
|
2371
|
+
"tier": 2,
|
|
2372
|
+
"name": "Chrome",
|
|
2373
|
+
"version": "154.0.8037.98",
|
|
2374
|
+
"endpoint": {
|
|
2375
|
+
"cdp": "http://127.0.0.1:9323",
|
|
2376
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9323/devtools/browser/x9",
|
|
2377
|
+
"name": "Chrome",
|
|
2378
|
+
"version": "154.0.8037.98",
|
|
2379
|
+
"product": "Chrome/154.0.8037.98",
|
|
2380
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2381
|
+
"source": "process",
|
|
2382
|
+
"userDataDir": "{home}/tmp/pw",
|
|
2383
|
+
"sevenOpen": false,
|
|
2384
|
+
"sevenTabs": []
|
|
2385
|
+
}
|
|
2386
|
+
},
|
|
2387
|
+
{
|
|
2388
|
+
"id": "cdp:127.0.0.1:9321",
|
|
2389
|
+
"kind": "endpoint",
|
|
2390
|
+
"tier": 6,
|
|
2391
|
+
"name": "Chrome",
|
|
2392
|
+
"version": "154.0.8037.98",
|
|
2393
|
+
"endpoint": {
|
|
2394
|
+
"cdp": "http://127.0.0.1:9321",
|
|
2395
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9321/devtools/browser/x7",
|
|
2396
|
+
"name": "Chrome",
|
|
2397
|
+
"version": "154.0.8037.98",
|
|
2398
|
+
"product": "Chrome/154.0.8037.98",
|
|
2399
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2400
|
+
"source": "process",
|
|
2401
|
+
"userDataDir": "{sixProfiles}/browser-coding-agent-chrome",
|
|
2402
|
+
"six": true,
|
|
2403
|
+
"sevenOpen": true,
|
|
2404
|
+
"sevenTabs": [
|
|
2405
|
+
{
|
|
2406
|
+
"id": "S1",
|
|
2407
|
+
"url": "https://lars.sliccy.ai/",
|
|
2408
|
+
"title": "seven"
|
|
2409
|
+
}
|
|
2410
|
+
]
|
|
2411
|
+
}
|
|
2412
|
+
},
|
|
2413
|
+
{
|
|
2414
|
+
"id": "cdp:127.0.0.1:9322",
|
|
2415
|
+
"kind": "endpoint",
|
|
2416
|
+
"tier": 6,
|
|
2417
|
+
"name": "Chrome",
|
|
2418
|
+
"version": "154.0.8037.98",
|
|
2419
|
+
"endpoint": {
|
|
2420
|
+
"cdp": "http://127.0.0.1:9322",
|
|
2421
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9322/devtools/browser/x8",
|
|
2422
|
+
"name": "Chrome",
|
|
2423
|
+
"version": "154.0.8037.98",
|
|
2424
|
+
"product": "Chrome/154.0.8037.98",
|
|
2425
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2426
|
+
"source": "devtools-active-port",
|
|
2427
|
+
"userDataDir": "{sixProfiles}/browser-coding-agent-chrome-5711",
|
|
2428
|
+
"six": true,
|
|
2429
|
+
"sevenOpen": false,
|
|
2430
|
+
"sevenTabs": []
|
|
2431
|
+
}
|
|
2432
|
+
}
|
|
2433
|
+
]
|
|
2434
|
+
}
|
|
2435
|
+
},
|
|
2436
|
+
{
|
|
2437
|
+
"name": "six-profile-scan",
|
|
2438
|
+
"case": {
|
|
2439
|
+
"description": "DevToolsActivePort in six's profiles (the default name and its -<port> variants, matched case-insensitively) gives endpoints marked six, in the last tier even with a seven tab open, after installed browsers; other names in six's root are never read, and nothing is chosen from six's profiles without being asked",
|
|
2440
|
+
"needs": [
|
|
2441
|
+
"six",
|
|
2442
|
+
"installed"
|
|
2443
|
+
],
|
|
2444
|
+
"files": {
|
|
2445
|
+
"{sixProfiles}/browser-coding-agent-chrome/DevToolsActivePort": "9311\n/devtools/browser/x1\n",
|
|
2446
|
+
"{sixProfiles}/BROWSER-Coding-Agent-Chrome-5720/DevToolsActivePort": "9312\n/devtools/browser/x2\n",
|
|
2447
|
+
"{sixProfiles}/leader/DevToolsActivePort": "9313\n/devtools/browser/x3\n",
|
|
2448
|
+
"{sixProfiles}/browser-coding-agent-chrome-old/DevToolsActivePort": "9314\n/devtools/browser/x4\n"
|
|
2449
|
+
},
|
|
2450
|
+
"http": {
|
|
2451
|
+
"127.0.0.1:9311": {
|
|
2452
|
+
"version": {
|
|
2453
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2454
|
+
"Protocol-Version": "1.3",
|
|
2455
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2456
|
+
"V8-Version": "15.4.79.1",
|
|
2457
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2458
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9311/devtools/browser/x1"
|
|
2459
|
+
},
|
|
2460
|
+
"list": [
|
|
2461
|
+
{
|
|
2462
|
+
"id": "S1",
|
|
2463
|
+
"type": "page",
|
|
2464
|
+
"url": "https://lars.sliccy.ai/",
|
|
2465
|
+
"title": "seven",
|
|
2466
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1/devtools/page/S1"
|
|
2467
|
+
}
|
|
2468
|
+
]
|
|
2469
|
+
},
|
|
2470
|
+
"127.0.0.1:9312": {
|
|
2471
|
+
"version": {
|
|
2472
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2473
|
+
"Protocol-Version": "1.3",
|
|
2474
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2475
|
+
"V8-Version": "15.4.79.1",
|
|
2476
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2477
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9312/devtools/browser/x2"
|
|
2478
|
+
},
|
|
2479
|
+
"list": []
|
|
2480
|
+
},
|
|
2481
|
+
"127.0.0.1:9313": {
|
|
2482
|
+
"version": {
|
|
2483
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2484
|
+
"Protocol-Version": "1.3",
|
|
2485
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2486
|
+
"V8-Version": "15.4.79.1",
|
|
2487
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2488
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9313/devtools/browser/x3"
|
|
2489
|
+
},
|
|
2490
|
+
"list": []
|
|
2491
|
+
},
|
|
2492
|
+
"127.0.0.1:9314": {
|
|
2493
|
+
"version": {
|
|
2494
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2495
|
+
"Protocol-Version": "1.3",
|
|
2496
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2497
|
+
"V8-Version": "15.4.79.1",
|
|
2498
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2499
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9314/devtools/browser/x4"
|
|
2500
|
+
},
|
|
2501
|
+
"list": []
|
|
2502
|
+
}
|
|
2503
|
+
},
|
|
2504
|
+
"installed": [
|
|
2505
|
+
{
|
|
2506
|
+
"id": "chrome",
|
|
2507
|
+
"name": "Google Chrome",
|
|
2508
|
+
"engine": "chromium",
|
|
2509
|
+
"channel": "stable",
|
|
2510
|
+
"version": "154.0.8037.98",
|
|
2511
|
+
"path": "/opt/google/chrome/google-chrome",
|
|
2512
|
+
"executable": "/opt/google/chrome/google-chrome",
|
|
2513
|
+
"debugSupport": "supported"
|
|
2514
|
+
}
|
|
2515
|
+
],
|
|
2516
|
+
"auto": "chrome"
|
|
2517
|
+
},
|
|
2518
|
+
"expected": {
|
|
2519
|
+
"schema": 1,
|
|
2520
|
+
"minChromium": 116,
|
|
2521
|
+
"entries": [
|
|
2522
|
+
{
|
|
2523
|
+
"id": "chrome",
|
|
2524
|
+
"kind": "installed",
|
|
2525
|
+
"tier": 3,
|
|
2526
|
+
"name": "Google Chrome",
|
|
2527
|
+
"version": "154.0.8037.98",
|
|
2528
|
+
"installed": {
|
|
2529
|
+
"id": "chrome",
|
|
2530
|
+
"name": "Google Chrome",
|
|
2531
|
+
"engine": "chromium",
|
|
2532
|
+
"channel": "stable",
|
|
2533
|
+
"version": "154.0.8037.98",
|
|
2534
|
+
"path": "/opt/google/chrome/google-chrome",
|
|
2535
|
+
"executable": "/opt/google/chrome/google-chrome",
|
|
2536
|
+
"debugSupport": "supported"
|
|
2537
|
+
}
|
|
2538
|
+
},
|
|
2539
|
+
{
|
|
2540
|
+
"id": "cdp:127.0.0.1:9311",
|
|
2541
|
+
"kind": "endpoint",
|
|
2542
|
+
"tier": 6,
|
|
2543
|
+
"name": "Chrome",
|
|
2544
|
+
"version": "154.0.8037.98",
|
|
2545
|
+
"endpoint": {
|
|
2546
|
+
"cdp": "http://127.0.0.1:9311",
|
|
2547
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9311/devtools/browser/x1",
|
|
2548
|
+
"name": "Chrome",
|
|
2549
|
+
"version": "154.0.8037.98",
|
|
2550
|
+
"product": "Chrome/154.0.8037.98",
|
|
2551
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2552
|
+
"source": "devtools-active-port",
|
|
2553
|
+
"userDataDir": "{sixProfiles}/browser-coding-agent-chrome",
|
|
2554
|
+
"six": true,
|
|
2555
|
+
"sevenOpen": true,
|
|
2556
|
+
"sevenTabs": [
|
|
2557
|
+
{
|
|
2558
|
+
"id": "S1",
|
|
2559
|
+
"url": "https://lars.sliccy.ai/",
|
|
2560
|
+
"title": "seven"
|
|
2561
|
+
}
|
|
2562
|
+
]
|
|
2563
|
+
}
|
|
2564
|
+
},
|
|
2565
|
+
{
|
|
2566
|
+
"id": "cdp:127.0.0.1:9312",
|
|
2567
|
+
"kind": "endpoint",
|
|
2568
|
+
"tier": 6,
|
|
2569
|
+
"name": "Chrome",
|
|
2570
|
+
"version": "154.0.8037.98",
|
|
2571
|
+
"endpoint": {
|
|
2572
|
+
"cdp": "http://127.0.0.1:9312",
|
|
2573
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9312/devtools/browser/x2",
|
|
2574
|
+
"name": "Chrome",
|
|
2575
|
+
"version": "154.0.8037.98",
|
|
2576
|
+
"product": "Chrome/154.0.8037.98",
|
|
2577
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2578
|
+
"source": "devtools-active-port",
|
|
2579
|
+
"userDataDir": "{sixProfiles}/BROWSER-Coding-Agent-Chrome-5720",
|
|
2580
|
+
"six": true,
|
|
2581
|
+
"sevenOpen": false,
|
|
2582
|
+
"sevenTabs": []
|
|
2583
|
+
}
|
|
2584
|
+
}
|
|
2585
|
+
]
|
|
2586
|
+
}
|
|
2587
|
+
},
|
|
2588
|
+
{
|
|
2589
|
+
"name": "six-user-data-dir",
|
|
2590
|
+
"case": {
|
|
2591
|
+
"description": "SLICC_USER_DATA_DIR, trimmed, is six's profile too, next to the ones in six's root; when every entry is six's, nothing is chosen without being asked",
|
|
2592
|
+
"needs": [
|
|
2593
|
+
"six"
|
|
2594
|
+
],
|
|
2595
|
+
"env": {
|
|
2596
|
+
"SLICC_USER_DATA_DIR": " {home}/elsewhere/six-chrome "
|
|
2597
|
+
},
|
|
2598
|
+
"files": {
|
|
2599
|
+
"{home}/elsewhere/six-chrome/DevToolsActivePort": "9315\n/devtools/browser/x5\n",
|
|
2600
|
+
"{sixProfiles}/browser-coding-agent-chrome/DevToolsActivePort": "9316\n/devtools/browser/x6\n"
|
|
2601
|
+
},
|
|
2602
|
+
"http": {
|
|
2603
|
+
"127.0.0.1:9315": {
|
|
2604
|
+
"version": {
|
|
2605
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2606
|
+
"Protocol-Version": "1.3",
|
|
2607
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2608
|
+
"V8-Version": "15.4.79.1",
|
|
2609
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2610
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9315/devtools/browser/x5"
|
|
2611
|
+
},
|
|
2612
|
+
"list": [
|
|
2613
|
+
{
|
|
2614
|
+
"id": "S1",
|
|
2615
|
+
"type": "page",
|
|
2616
|
+
"url": "https://lars.sliccy.ai/",
|
|
2617
|
+
"title": "seven",
|
|
2618
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1/devtools/page/S1"
|
|
2619
|
+
}
|
|
2620
|
+
]
|
|
2621
|
+
},
|
|
2622
|
+
"127.0.0.1:9316": {
|
|
2623
|
+
"version": {
|
|
2624
|
+
"Browser": "Chrome/154.0.8037.98",
|
|
2625
|
+
"Protocol-Version": "1.3",
|
|
2626
|
+
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2627
|
+
"V8-Version": "15.4.79.1",
|
|
2628
|
+
"WebKit-Version": "537.36 (@a1b2c3)",
|
|
2629
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9316/devtools/browser/x6"
|
|
2630
|
+
},
|
|
2631
|
+
"list": []
|
|
2632
|
+
}
|
|
2633
|
+
},
|
|
2634
|
+
"auto": null
|
|
2635
|
+
},
|
|
2636
|
+
"expected": {
|
|
2637
|
+
"schema": 1,
|
|
2638
|
+
"minChromium": 116,
|
|
2639
|
+
"entries": [
|
|
2640
|
+
{
|
|
2641
|
+
"id": "cdp:127.0.0.1:9315",
|
|
2642
|
+
"kind": "endpoint",
|
|
2643
|
+
"tier": 6,
|
|
2644
|
+
"name": "Chrome",
|
|
2645
|
+
"version": "154.0.8037.98",
|
|
2646
|
+
"endpoint": {
|
|
2647
|
+
"cdp": "http://127.0.0.1:9315",
|
|
2648
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9315/devtools/browser/x5",
|
|
2649
|
+
"name": "Chrome",
|
|
2650
|
+
"version": "154.0.8037.98",
|
|
2651
|
+
"product": "Chrome/154.0.8037.98",
|
|
2652
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2653
|
+
"source": "devtools-active-port",
|
|
2654
|
+
"userDataDir": "{home}/elsewhere/six-chrome",
|
|
2655
|
+
"six": true,
|
|
2656
|
+
"sevenOpen": true,
|
|
2657
|
+
"sevenTabs": [
|
|
2658
|
+
{
|
|
2659
|
+
"id": "S1",
|
|
2660
|
+
"url": "https://lars.sliccy.ai/",
|
|
2661
|
+
"title": "seven"
|
|
2662
|
+
}
|
|
2663
|
+
]
|
|
2664
|
+
}
|
|
2665
|
+
},
|
|
2666
|
+
{
|
|
2667
|
+
"id": "cdp:127.0.0.1:9316",
|
|
2668
|
+
"kind": "endpoint",
|
|
2669
|
+
"tier": 6,
|
|
2670
|
+
"name": "Chrome",
|
|
2671
|
+
"version": "154.0.8037.98",
|
|
2672
|
+
"endpoint": {
|
|
2673
|
+
"cdp": "http://127.0.0.1:9316",
|
|
2674
|
+
"webSocketDebuggerUrl": "ws://127.0.0.1:9316/devtools/browser/x6",
|
|
2675
|
+
"name": "Chrome",
|
|
2676
|
+
"version": "154.0.8037.98",
|
|
2677
|
+
"product": "Chrome/154.0.8037.98",
|
|
2678
|
+
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/154.0.8037.98 Safari/537.36",
|
|
2679
|
+
"source": "devtools-active-port",
|
|
2680
|
+
"userDataDir": "{sixProfiles}/browser-coding-agent-chrome",
|
|
2681
|
+
"six": true,
|
|
2682
|
+
"sevenOpen": false,
|
|
2683
|
+
"sevenTabs": []
|
|
2684
|
+
}
|
|
2685
|
+
}
|
|
2686
|
+
]
|
|
2687
|
+
}
|
|
2688
|
+
},
|
|
2130
2689
|
{
|
|
2131
2690
|
"name": "stale-active-port",
|
|
2132
2691
|
"case": {
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"properties": {
|
|
18
18
|
"id": { "$ref": "#/$defs/text" },
|
|
19
19
|
"kind": { "enum": ["endpoint", "installed"] },
|
|
20
|
-
"tier": { "type": "integer", "minimum": 1, "maximum":
|
|
20
|
+
"tier": { "type": "integer", "minimum": 1, "maximum": 6 },
|
|
21
21
|
"name": { "type": "string" },
|
|
22
22
|
"version": { "$ref": "#/$defs/text" },
|
|
23
23
|
"endpoint": { "$ref": "#/$defs/endpoint" },
|
|
@@ -28,10 +28,15 @@
|
|
|
28
28
|
"properties": {
|
|
29
29
|
"kind": { "const": "endpoint" },
|
|
30
30
|
"id": { "type": "string", "pattern": "^cdp:" },
|
|
31
|
-
"tier": { "enum": [1, 2] }
|
|
31
|
+
"tier": { "enum": [1, 2, 6] }
|
|
32
32
|
},
|
|
33
33
|
"required": ["endpoint"],
|
|
34
|
-
"not": { "required": ["installed"] }
|
|
34
|
+
"not": { "required": ["installed"] },
|
|
35
|
+
"if": { "properties": { "tier": { "const": 6 } } },
|
|
36
|
+
"then": { "properties": { "endpoint": { "type": "object", "required": ["six"] } } },
|
|
37
|
+
"else": {
|
|
38
|
+
"properties": { "endpoint": { "type": "object", "not": { "required": ["six"] } } }
|
|
39
|
+
}
|
|
35
40
|
},
|
|
36
41
|
{
|
|
37
42
|
"properties": {
|
|
@@ -68,6 +73,7 @@
|
|
|
68
73
|
"userDataDir": { "$ref": "#/$defs/text" },
|
|
69
74
|
"profile": { "$ref": "#/$defs/text" },
|
|
70
75
|
"wsOnly": { "const": true },
|
|
76
|
+
"six": { "const": true },
|
|
71
77
|
"sevenOpen": { "type": "boolean" },
|
|
72
78
|
"sevenTabs": { "type": "array", "items": { "$ref": "#/$defs/tab" } }
|
|
73
79
|
}
|
|
@@ -54,13 +54,14 @@
|
|
|
54
54
|
"tiers": {
|
|
55
55
|
"type": "object",
|
|
56
56
|
"additionalProperties": false,
|
|
57
|
-
"required": ["sevenOpen", "endpoint", "chrome", "chromium", "electron"],
|
|
57
|
+
"required": ["sevenOpen", "endpoint", "chrome", "chromium", "electron", "six"],
|
|
58
58
|
"properties": {
|
|
59
59
|
"sevenOpen": { "$ref": "#/$defs/tier" },
|
|
60
60
|
"endpoint": { "$ref": "#/$defs/tier" },
|
|
61
61
|
"chrome": { "$ref": "#/$defs/tier" },
|
|
62
62
|
"chromium": { "$ref": "#/$defs/tier" },
|
|
63
|
-
"electron": { "$ref": "#/$defs/tier" }
|
|
63
|
+
"electron": { "$ref": "#/$defs/tier" },
|
|
64
|
+
"six": { "$ref": "#/$defs/tier" }
|
|
64
65
|
}
|
|
65
66
|
},
|
|
66
67
|
"chromeId": { "$ref": "#/$defs/id" }
|
|
@@ -171,13 +172,35 @@
|
|
|
171
172
|
"profiles": {
|
|
172
173
|
"type": "object",
|
|
173
174
|
"additionalProperties": false,
|
|
174
|
-
"required": ["root", "snapRoot", "legacyRoot", "sixProfilePattern", "namePattern"],
|
|
175
|
+
"required": ["root", "snapRoot", "legacyRoot", "sixProfilePattern", "namePattern", "six"],
|
|
175
176
|
"properties": {
|
|
176
177
|
"root": { "$ref": "#/$defs/segments" },
|
|
177
178
|
"snapRoot": { "$ref": "#/$defs/segments" },
|
|
178
179
|
"legacyRoot": { "$ref": "#/$defs/segments" },
|
|
179
180
|
"sixProfilePattern": { "type": "string", "format": "regex" },
|
|
180
|
-
"namePattern": { "type": "string", "format": "regex" }
|
|
181
|
+
"namePattern": { "type": "string", "format": "regex" },
|
|
182
|
+
"six": {
|
|
183
|
+
"description": "SLICC six's Chrome profiles, used in place and never written to.",
|
|
184
|
+
"type": "object",
|
|
185
|
+
"additionalProperties": false,
|
|
186
|
+
"required": ["roots", "defaultName", "defaultPort", "portSuffix", "userDataDirEnv"],
|
|
187
|
+
"properties": {
|
|
188
|
+
"roots": {
|
|
189
|
+
"type": "object",
|
|
190
|
+
"additionalProperties": false,
|
|
191
|
+
"required": ["macos", "linux", "windows"],
|
|
192
|
+
"properties": {
|
|
193
|
+
"macos": { "$ref": "#/$defs/sixRoot" },
|
|
194
|
+
"linux": { "$ref": "#/$defs/sixRoot" },
|
|
195
|
+
"windows": { "$ref": "#/$defs/sixRoot" }
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
"defaultName": { "$ref": "#/$defs/name" },
|
|
199
|
+
"defaultPort": { "$ref": "#/$defs/port" },
|
|
200
|
+
"portSuffix": { "type": "string", "pattern": "\\{port\\}" },
|
|
201
|
+
"userDataDirEnv": { "$ref": "#/$defs/name" }
|
|
202
|
+
}
|
|
203
|
+
}
|
|
181
204
|
}
|
|
182
205
|
},
|
|
183
206
|
"launch": {
|
|
@@ -253,7 +276,7 @@
|
|
|
253
276
|
},
|
|
254
277
|
"port": { "type": "integer", "minimum": 1, "maximum": 65535 },
|
|
255
278
|
"ports": { "type": "array", "items": { "$ref": "#/$defs/port" } },
|
|
256
|
-
"tier": { "type": "integer", "minimum": 1, "maximum":
|
|
279
|
+
"tier": { "type": "integer", "minimum": 1, "maximum": 6 },
|
|
257
280
|
"form": { "enum": ["six", "chrome-154"] },
|
|
258
281
|
"pref": {
|
|
259
282
|
"type": "object",
|
|
@@ -265,6 +288,16 @@
|
|
|
265
288
|
"form": { "$ref": "#/$defs/form" }
|
|
266
289
|
}
|
|
267
290
|
},
|
|
291
|
+
"sixRoot": {
|
|
292
|
+
"description": "A base location, then path segments under it.",
|
|
293
|
+
"type": "object",
|
|
294
|
+
"additionalProperties": false,
|
|
295
|
+
"required": ["base", "path"],
|
|
296
|
+
"properties": {
|
|
297
|
+
"base": { "$ref": "#/$defs/location" },
|
|
298
|
+
"path": { "$ref": "#/$defs/segments" }
|
|
299
|
+
}
|
|
300
|
+
},
|
|
268
301
|
"location": {
|
|
269
302
|
"description": "An environment variable, else a dir under the home dir or an absolute path.",
|
|
270
303
|
"type": "object",
|
|
@@ -46,7 +46,8 @@
|
|
|
46
46
|
"process",
|
|
47
47
|
"probe",
|
|
48
48
|
"origins",
|
|
49
|
-
"installed"
|
|
49
|
+
"installed",
|
|
50
|
+
"six"
|
|
50
51
|
]
|
|
51
52
|
}
|
|
52
53
|
},
|
|
@@ -55,7 +56,7 @@
|
|
|
55
56
|
"type": "object",
|
|
56
57
|
"propertyNames": {
|
|
57
58
|
"type": "string",
|
|
58
|
-
"pattern": "^\\{(home|config|sevenProfiles|userData:[a-z0-9-]+)\\}/[^\\\\]+$"
|
|
59
|
+
"pattern": "^\\{(home|config|sevenProfiles|sixProfiles|userData:[a-z0-9-]+)\\}/[^\\\\]+$"
|
|
59
60
|
},
|
|
60
61
|
"additionalProperties": { "type": "string" }
|
|
61
62
|
},
|
|
@@ -99,6 +100,10 @@
|
|
|
99
100
|
"installed": {
|
|
100
101
|
"type": "array",
|
|
101
102
|
"items": { "$ref": "browsers.schema.json#/$defs/installed" }
|
|
103
|
+
},
|
|
104
|
+
"auto": {
|
|
105
|
+
"description": "With needs six: the id of the first entry that isn't six's, or null.",
|
|
106
|
+
"type": ["string", "null"]
|
|
102
107
|
}
|
|
103
108
|
}
|
|
104
109
|
}
|