Skip to content

Commit 79d7f48

Browse files
authored
Merge branch 'main' into hypeship/cli-managed-auth-health-controls
2 parents 9a7b8bf + 9583d23 commit 79d7f48

32 files changed

Lines changed: 2764 additions & 1531 deletions

.github/workflows/fix-ci.yaml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ jobs:
2020
steps:
2121
- name: Generate app token
2222
id: app-token
23-
uses: actions/create-github-app-token@v1
23+
uses: actions/create-github-app-token@v3
2424
with:
2525
app-id: ${{ secrets.ADMIN_APP_ID }}
2626
private-key: ${{ secrets.ADMIN_APP_PRIVATE_KEY }}
2727

2828
- name: Checkout repository
29-
uses: actions/checkout@v4
29+
uses: actions/checkout@v6
3030
with:
3131
token: ${{ steps.app-token.outputs.token }}
3232
fetch-depth: 0
@@ -36,13 +36,20 @@ jobs:
3636
curl https://cursor.com/install -fsS | bash
3737
echo "$HOME/.cursor/bin" >> $GITHUB_PATH
3838
39+
- name: Enable Cursor Max Mode
40+
run: |
41+
CFG_DIR="$HOME/.cursor"
42+
mkdir -p "$CFG_DIR"
43+
echo '{"maxMode": true}' > "$CFG_DIR/cli-config.json"
44+
echo "CURSOR_CONFIG_DIR=$CFG_DIR" >> "$GITHUB_ENV"
45+
3946
- name: Configure git identity
4047
run: |
4148
git config user.name "kernel-internal[bot]"
4249
git config user.email "260533166+kernel-internal[bot]@users.noreply.github.com"
4350
4451
- name: Setup Go
45-
uses: actions/setup-go@v5
52+
uses: actions/setup-go@v6
4653
with:
4754
go-version-file: 'go.mod'
4855

@@ -102,4 +109,4 @@ jobs:
102109
- Avoid duplicate comments - update existing bot comments
103110
- If no actionable fix is possible, make no changes and post no comment
104111
- PR comments must ONLY include the PR creation link, no manual merge instructions
105-
" --model ${{ secrets.CURSOR_PREFERRED_MODEL }} --force --output-format=text
112+
" --model ${{ vars.CURSOR_PREFERRED_MODEL }} --force --output-format=text

.github/workflows/release.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,25 @@ jobs:
1515
steps:
1616
- name: Generate app token
1717
id: app-token
18-
uses: actions/create-github-app-token@v1
18+
uses: actions/create-github-app-token@v3
1919
with:
2020
app-id: ${{ secrets.ADMIN_APP_ID }}
2121
private-key: ${{ secrets.ADMIN_APP_PRIVATE_KEY }}
2222
repositories: cli,homebrew-tap
2323

2424
- name: Checkout
25-
uses: actions/checkout@v4
25+
uses: actions/checkout@v6
2626
with:
2727
fetch-depth: 0
2828

2929
- name: Set up Go
30-
uses: actions/setup-go@v5
30+
uses: actions/setup-go@v6
3131
with:
3232
go-version-file: "go.mod"
3333
cache: true
3434

3535
- name: Set up Node.js
36-
uses: actions/setup-node@v4
36+
uses: actions/setup-node@v6
3737
with:
3838
node-version: '20'
3939
registry-url: 'https://registry.npmjs.org'
@@ -45,7 +45,7 @@ jobs:
4545
run: make clean-templates
4646

4747
- name: Run GoReleaser
48-
uses: goreleaser/goreleaser-action@v6
48+
uses: goreleaser/goreleaser-action@v7
4949
with:
5050
distribution: goreleaser-pro
5151
version: '~> v2'

.github/workflows/test.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ jobs:
1515

1616
steps:
1717
- name: Checkout code
18-
uses: actions/checkout@v4
18+
uses: actions/checkout@v6
1919

2020
- name: Set up Go
21-
uses: actions/setup-go@v5
21+
uses: actions/setup-go@v6
2222
with:
2323
go-version-file: "go.mod"
2424
cache: true

README.md

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ Commands with JSON output support:
130130
- **Deploy**: `deploy` (JSONL streaming), `history`
131131
- **Invoke**: `invoke` (JSONL streaming), `history`
132132
- **Browser Sub-commands**: `replays list/start`, `process exec/spawn`, `fs file-info/list-files`
133+
- **Browser NDJSON streaming**: `telemetry stream`
133134

134135
### Authentication
135136

@@ -204,20 +205,38 @@ Commands with JSON output support:
204205
### Browser Management
205206

206207
- `kernel browsers list` - List running browsers
208+
- `--query <q>` - Search by name, session ID, profile ID, proxy ID, or pool name
209+
- `--tag <KEY=VALUE>` - Filter by tag, repeatable; a session must match every pair
207210
- `--output json`, `-o json` - Output raw JSON array
208211
- `kernel browsers create` - Create a new browser session
209212
- `-s, --stealth` - Launch browser in stealth mode to avoid detection
210213
- `-H, --headless` - Launch browser without GUI access
211214
- `--kiosk` - Launch browser in kiosk mode
212215
- `--start-url <url>` - Initial page to open on launch
213-
- `--pool-id <id>` - Acquire a browser from the specified pool (mutually exclusive with --pool-name; ignores other session flags)
216+
- `--name <name>` - Optional unique name for the session (used to find it later by name; can be changed with `browsers update --name`)
217+
- `--tag <KEY=VALUE>` - Set a tag on the session, repeatable; up to 50 pairs
218+
- `--pool-id <id>` - Acquire a browser from the specified pool (mutually exclusive with --pool-name; ignores other session flags). `--name`/`--tag` still apply to the acquired session.
214219
- `--pool-name <name>` - Acquire a browser from the pool name (mutually exclusive with --pool-id; ignores other session flags)
220+
- `--telemetry=all` - Enable telemetry for all categories
221+
- `--telemetry=off` - Disable telemetry
222+
- `--telemetry=<list>` - Per-category config, e.g. `--telemetry=network=on,page=off`
223+
- `--chrome-policy <json>` - Custom Chrome enterprise policy as a JSON object. Kernel-managed policies (extensions, proxy, automation) are rejected server-side.
224+
- `--chrome-policy-file <path>` - Read the Chrome enterprise policy from a file (use `-` for stdin). Mutually exclusive with `--chrome-policy`.
215225
- `--output json`, `-o json` - Output raw JSON object
216226
- _Note: When a pool is specified, omit other session configuration flags—pool settings determine profile, proxy, viewport, etc._
217-
- `kernel browsers delete <id>` - Delete a browser
218-
- `kernel browsers view <id>` - Get live view URL for a browser
227+
- `kernel browsers delete <id-or-name>` - Delete a browser by ID or name
228+
- `kernel browsers view <id-or-name>` - Get live view URL for a browser by ID or name
219229
- `--output json`, `-o json` - Output JSON with liveViewUrl
220-
- `kernel browsers get <id>` - Get detailed browser session info
230+
- `kernel browsers get <id-or-name>` - Get detailed browser session info by ID or name
231+
- `--output json`, `-o json` - Output raw JSON object
232+
- `kernel browsers update <id-or-name>` - Update a running browser session by ID or name
233+
- `--name <name>` - Set a new unique name for the session (mutually exclusive with `--clear-name`)
234+
- `--clear-name` - Clear the session name
235+
- `--tag <KEY=VALUE>` - Set a tag, repeatable; up to 50 pairs. Replaces the entire tag set (not merged); mutually exclusive with `--clear-tags`
236+
- `--clear-tags` - Remove all tags from the session
237+
- `--telemetry=all` - Enable telemetry for all categories
238+
- `--telemetry=off` - Disable telemetry
239+
- `--telemetry=<list>` - Per-category config, e.g. `--telemetry=network=on,page=off`
221240
- `--output json`, `-o json` - Output raw JSON object
222241
- `kernel browsers curl <id> <url>` - Make HTTP requests through a browser session's Chrome network stack
223242
- `-X, --request <method>` - HTTP method (default: GET; defaults to POST when `--data` is set)
@@ -245,16 +264,19 @@ Commands with JSON output support:
245264
- `--timeout <seconds>` - Idle timeout for browsers acquired from the pool
246265
- `--stealth`, `--headless`, `--kiosk` - Default pool configuration
247266
- `--profile-id`, `--profile-name`, `--save-changes`, `--proxy-id`, `--start-url`, `--extension`, `--viewport` - Same semantics as `kernel browsers create`
267+
- `--chrome-policy <json>` / `--chrome-policy-file <path>` - Custom Chrome enterprise policy applied to every browser in the pool, as a JSON object or from a file (`-` for stdin). Same semantics as `kernel browsers create`.
248268
- `--output json`, `-o json` - Output raw JSON object
249269
- `kernel browser-pools get <id-or-name>` - Get pool details
250270
- `--output json`, `-o json` - Output raw JSON object
251271
- `kernel browser-pools update <id-or-name>` - Update pool configuration
252-
- Same flags as create plus `--clear-start-url` (remove the pool's start URL) and `--discard-all-idle` (discard all idle browsers and refill)
272+
- Same flags as create plus `--clear-start-url` (remove the pool's start URL) and `--discard-all-idle` (discard all idle browsers and refill). An empty `--chrome-policy '{}'` is ignored and does not clear an existing policy; recreate the pool to remove one.
253273
- `--output json`, `-o json` - Output raw JSON object
254274
- `kernel browser-pools delete <id-or-name>` - Delete a pool
255275
- `--force` - Force delete even if browsers are leased
256276
- `kernel browser-pools acquire <id-or-name>` - Acquire a browser from the pool
257277
- `--timeout <seconds>` - Acquire timeout before returning 204
278+
- `--name <name>` - Optional name for the acquired session (applies to this lease; cleared on release)
279+
- `--tag <KEY=VALUE>` - Set a tag on the acquired session, repeatable; applies to this lease
258280
- `--output json`, `-o json` - Output raw JSON object
259281
- `kernel browser-pools release <id-or-name>` - Release a browser back to the pool
260282
- `--session-id <id>` - Browser session ID to release (required)
@@ -281,6 +303,23 @@ Commands with JSON output support:
281303
- `kernel browsers replays download <id> <replay-id>` - Download a replay video
282304
- `-f, --output-file <path>` - Output file path for the replay video
283305

306+
### Browser Telemetry
307+
308+
Telemetry config is a sub-field of the browser session. Use `browsers create` or `browsers update` to enable, disable, or configure it, and `browsers get` to inspect the current state.
309+
310+
- Enable the default set: `kernel browsers update <id> --telemetry=all`
311+
- Disable: `kernel browsers update <id> --telemetry=off`
312+
- Capture specific categories: `kernel browsers update <id> --telemetry=console,network` (any of: `console`, `network`, `page`, `interaction`, `control`, `connection`, `system`, `screenshot`, `captcha`)
313+
314+
Per-category updates are partial — only categories you name are changed; others retain their current state. `--telemetry=all` and `--telemetry=off` reset the entire config.
315+
316+
- `kernel browsers telemetry stream <id>` - Stream live telemetry events (NDJSON with `-o json`)
317+
- `--categories <list>` - Filter by event category (`console`, `network`, `page`, `interaction`, `control`, `connection`, `system`, `screenshot`, `captcha`, `monitor`)
318+
- `--types <list>` - Filter by event type (e.g. `network_response`, `console_error`)
319+
- `--seq <n>` - Resume after sequence number N (Last-Event-ID); replays events with `seq > N`. Omit to stream from now.
320+
- `-o, --output json` - Output newline-delimited JSON envelopes
321+
- Default output: tab-separated `<time>\t[<category>]\t<type>`, e.g. `15:04:05 [network] network_response`
322+
284323
### Browser Process Control
285324

286325
- `kernel browsers process exec <id> [--] [command...]` - Execute a command synchronously
@@ -431,10 +470,9 @@ Commands with JSON output support:
431470
- `--country <code>` - ISO 3166 country code or "EU" (location-based types)
432471
- `--city <name>` - City name (no spaces, e.g. sanfrancisco) (residential, mobile; requires `--country`)
433472
- `--state <code>` - Two-letter state code (residential, mobile)
434-
- `--zip <zip>` - US ZIP code (residential, mobile)
435-
- `--asn <asn>` - Autonomous system number (e.g., AS15169) (residential, mobile)
473+
- `--zip <zip>` - US ZIP code (residential)
474+
- `--asn <asn>` - Autonomous system number (e.g., AS15169) (residential)
436475
- `--os <os>` - Operating system: windows, macos, android (residential)
437-
- `--carrier <carrier>` - Mobile carrier (mobile)
438476
- `--host <host>` - Proxy host (custom; required)
439477
- `--port <port>` - Proxy port (custom; required)
440478
- `--username <username>` - Username for proxy authentication (custom)
@@ -626,6 +664,10 @@ kernel browsers create --kiosk
626664
# Create a browser with a profile for session state
627665
kernel browsers create --profile-name my-profile
628666

667+
# Create a browser with a custom Chrome enterprise policy
668+
kernel browsers create --chrome-policy '{"BookmarkBarEnabled": false}'
669+
kernel browsers create --chrome-policy-file policy.json
670+
629671
# Delete a browser
630672
kernel browsers delete browser123
631673

@@ -755,8 +797,8 @@ kernel proxies create --type custom --host proxy.example.com --port 8080 --usern
755797
# Create a residential proxy with location and OS
756798
kernel proxies create --type residential --country US --city sanfrancisco --state CA --zip 94107 --asn AS15169 --os windows --name "SF Residential"
757799

758-
# Create a mobile proxy with carrier
759-
kernel proxies create --type mobile --country US --carrier verizon --name "US Mobile"
800+
# Create a mobile proxy
801+
kernel proxies create --type mobile --country US --city sanfrancisco --name "US Mobile"
760802

761803
# Get proxy details
762804
kernel proxies get prx_123

0 commit comments

Comments
 (0)