browse 0.7.2 → 0.7.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.
Files changed (3) hide show
  1. package/README.md +31 -48
  2. package/oclif.manifest.json +430 -430
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,16 +1,17 @@
1
1
  # Browse CLI
2
2
 
3
- The Browserbase CLI is being rebuilt as the `browse` command.
4
-
5
- This branch is the oclif migration base for the new CLI surface. Browserbase cloud API commands are available under `browse cloud`, and the first native browser driver commands are available at the top level.
6
-
7
- ## Installation
3
+ > Single CLI your AI agents need to access the internet reliably.
8
4
 
9
5
  ```bash
10
6
  npm install -g browse
11
7
  ```
12
8
 
13
- Requires Node.js 20.19+ or 22.12+.
9
+ ## Main features:
10
+ 1. **Browser interactions** — Navigate tricky and complex websites with `browse click`, `browse mouse scroll`, `browse type`, `browse select`, and 20+ more DOM manipulation commands.
11
+ 2. **Web skills catalog** — `browse` is the official CLI for [browse.sh](https://browse.sh), the largest open web catalog. Your agent can run `browse skills add apartments.com` to learn how to use that website and APIs.
12
+ 3. **Rich debugging** — Arm your agents with network, console, and other web telemetry.
13
+ 4. **Cloud features** — Optionally use Browserbase cloud features, such as loading cookies via saved [Contexts](https://docs.browserbase.com/platform/browser/core-features/contexts), using [Verified Browsers](https://www.browserbase.com/verified), and the [Fetch and Search APIs](https://www.browserbase.com/search).
14
+
14
15
 
15
16
  ## Driver Commands
16
17
 
@@ -35,13 +36,31 @@ browse status
35
36
  browse stop
36
37
  ```
37
38
 
38
- Driver commands auto-start the hidden daemon when needed and print structured JSON by default for agent-friendly consumption. Semantic element commands accept refs from `browse snapshot`, XPath, or selectors. Raw viewport input lives under `browse mouse`.
39
-
40
39
  Use `--local`, `--remote`, `--auto-connect`, or `--cdp <url|port>` per command to choose the browser target. Use `--target-id <id>` with `--cdp` when attaching to a specific CDP target. Driver commands use `BROWSERBASE_API_KEY` for remote Browserbase sessions.
41
40
 
41
+ [!NOTE]
42
42
  Security note: `browse network on` writes request/response headers and bodies to a local owner-only capture directory. These files can include cookies, authorization headers, and other secrets, so use network capture only on trusted machines and run `browse network clear` when done.
43
43
 
44
- ## Cloud Commands
44
+ ## Open Web Skills Catalog
45
+
46
+ Your CLI can directly use [browse.sh](https://browse.sh), the largest open-source catalog of skills to reliably perform any task on the internet. For example, find a specialized skill to navigate `apartments.com` and reduce your agent time and token costs drastically.
47
+
48
+
49
+ ```bash
50
+ browse skills install
51
+ browse skills list
52
+ browse skills find reviews
53
+ browse skills find yelp.com/extract-reviews
54
+ browse skills add yelp.com/extract-reviews
55
+ browse skills add mcdonalds.order.online/order-delivery-42q71n
56
+ ```
57
+
58
+ `browse skills install` installs the bundled `browse` CLI skill from this package.
59
+ `browse skills list` lists the public Browse.sh skill catalog.
60
+ `browse skills find` searches the public Browse.sh skill catalog by slug, domain, title, description, category, alias, or tag.
61
+ `browse skills add` installs catalog skills from `browserbase/browse.sh` or generated skills from Browserbase-hosted public storage.
62
+
63
+ ## Browserbase Cloud Commands
45
64
 
46
65
  ```bash
47
66
  browse --help
@@ -70,6 +89,9 @@ browse cloud search <query>
70
89
 
71
90
  ## Functions Commands
72
91
 
92
+ Browserbase [Functions](https://docs.browserbase.com/platform/runtime/overview) let you deploy browser agents or automation scripts directly onto Browserbase’s infrastructure. Start in your local environment, configure agents or write browser scripts, test them instantly, and deploy directly as cloud functions invokable as APIs.
93
+
94
+
73
95
  ```bash
74
96
  browse functions init my-function
75
97
  browse functions dev index.ts
@@ -78,42 +100,3 @@ browse functions publish index.ts --dry-run
78
100
  browse functions invoke <function-id> --params '{"url":"https://example.com"}'
79
101
  browse functions invoke --check-status <invocation-id>
80
102
  ```
81
-
82
- Functions commands use `BROWSERBASE_API_KEY` for Browserbase API access. Generated projects import `defineFn` from `@browserbasehq/sdk-functions`.
83
-
84
- `browse functions dev` binds to loopback by default and only allows browser CORS requests from loopback origins.
85
-
86
- ## Skills
87
-
88
- ```bash
89
- browse skills install
90
- browse skills list
91
- browse skills find reviews
92
- browse skills find yelp.com/extract-reviews
93
- browse skills add yelp.com/extract-reviews
94
- browse skills add mcdonalds.order.online/order-delivery-42q71n
95
- ```
96
-
97
- `browse skills install` installs the bundled `browse` CLI skill from this package.
98
- `browse skills list` lists the public Browse.sh skill catalog.
99
- `browse skills find` searches the public Browse.sh skill catalog by slug, domain, title, description, category, alias, or tag.
100
- `browse skills add` installs catalog skills from `browserbase/browse.sh` or generated skills from Browserbase-hosted public storage.
101
-
102
- Set `BROWSE_SKILLS_API_BASE_URL` to test catalog discovery or generated skill file discovery against a staging Browse.sh API endpoint. Set `BROWSE_SKILLS_BLOB_BASE_URL` to test direct Blob fallback downloads.
103
-
104
- Auth and manual daemon start are intentionally not implemented in this branch.
105
-
106
- ## Development
107
-
108
- ```bash
109
- bun install
110
- bun run prepare
111
- bun run cli -- --help
112
- bun run lint
113
- bun run build
114
- bun run test
115
- ```
116
-
117
- ## License
118
-
119
- This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
@@ -2644,213 +2644,25 @@
2644
2644
  "publish.js"
2645
2645
  ]
2646
2646
  },
2647
- "skills:add": {
2648
- "aliases": [],
2649
- "args": {
2650
- "skill": {
2651
- "description": "Skill id in the form <domain>/<task>.",
2652
- "name": "skill",
2653
- "required": true
2654
- }
2655
- },
2656
- "description": "Install a browser automation skill.",
2657
- "examples": [
2658
- "browse skills add yelp.com/extract-reviews",
2659
- "browse skills add mcdonalds.order.online/order-delivery-42q71n"
2660
- ],
2661
- "flags": {},
2662
- "hasDynamicHelp": false,
2663
- "hiddenAliases": [],
2664
- "id": "skills:add",
2665
- "pluginAlias": "browse",
2666
- "pluginName": "browse",
2667
- "pluginType": "core",
2668
- "strict": true,
2669
- "isESM": true,
2670
- "relativePath": [
2671
- "dist",
2672
- "commands",
2673
- "skills",
2674
- "add.js"
2675
- ]
2676
- },
2677
- "skills:find": {
2647
+ "mouse:click": {
2678
2648
  "aliases": [],
2679
2649
  "args": {
2680
- "query": {
2681
- "description": "Skill slug or search query.",
2682
- "name": "query",
2650
+ "x": {
2651
+ "description": "Viewport x coordinate.",
2652
+ "name": "x",
2683
2653
  "required": true
2684
- }
2685
- },
2686
- "description": "Find Browse.sh catalog skills by slug, domain, title, description, category, alias, or tag.",
2687
- "examples": [
2688
- "browse skills find yelp",
2689
- "browse skills find reviews",
2690
- "browse skills find yelp.com/extract-reviews",
2691
- "browse skills find travel --limit 5",
2692
- "browse skills find \"restaurant reviews\" --json"
2693
- ],
2694
- "flags": {
2695
- "format": {
2696
- "description": "Output format. Defaults to table in a terminal and JSON when piped.",
2697
- "name": "format",
2698
- "hasDynamicHelp": false,
2699
- "helpValue": "<format>",
2700
- "multiple": false,
2701
- "options": [
2702
- "table",
2703
- "json"
2704
- ],
2705
- "type": "option"
2706
- },
2707
- "json": {
2708
- "description": "Print raw JSON output.",
2709
- "name": "json",
2710
- "allowNo": false,
2711
- "type": "boolean"
2712
2654
  },
2713
- "wide": {
2714
- "description": "Show full table values without truncation.",
2715
- "name": "wide",
2716
- "allowNo": false,
2717
- "type": "boolean"
2718
- },
2719
- "all": {
2720
- "description": "Show all matching skills in table output.",
2721
- "name": "all",
2722
- "allowNo": false,
2723
- "type": "boolean"
2724
- },
2725
- "limit": {
2726
- "description": "Maximum matching skills to show in table output.",
2727
- "name": "limit",
2728
- "default": 25,
2729
- "hasDynamicHelp": false,
2730
- "helpValue": "<count>",
2731
- "multiple": false,
2732
- "type": "option"
2733
- }
2734
- },
2735
- "hasDynamicHelp": false,
2736
- "hiddenAliases": [],
2737
- "id": "skills:find",
2738
- "pluginAlias": "browse",
2739
- "pluginName": "browse",
2740
- "pluginType": "core",
2741
- "strict": true,
2742
- "isESM": true,
2743
- "relativePath": [
2744
- "dist",
2745
- "commands",
2746
- "skills",
2747
- "find.js"
2748
- ]
2749
- },
2750
- "skills:install": {
2751
- "aliases": [],
2752
- "args": {},
2753
- "description": "Install the bundled browse CLI skill.",
2754
- "examples": [
2755
- "browse skills install"
2756
- ],
2757
- "flags": {},
2758
- "hasDynamicHelp": false,
2759
- "hiddenAliases": [],
2760
- "id": "skills:install",
2761
- "pluginAlias": "browse",
2762
- "pluginName": "browse",
2763
- "pluginType": "core",
2764
- "strict": true,
2765
- "isESM": true,
2766
- "relativePath": [
2767
- "dist",
2768
- "commands",
2769
- "skills",
2770
- "install.js"
2771
- ]
2772
- },
2773
- "skills:list": {
2774
- "aliases": [],
2775
- "args": {},
2776
- "description": "List Browse.sh catalog skills.",
2777
- "examples": [
2778
- "browse skills list",
2779
- "browse skills list --limit 10",
2780
- "browse skills list --all",
2781
- "browse skills list --json"
2782
- ],
2783
- "flags": {
2784
- "format": {
2785
- "description": "Output format. Defaults to table in a terminal and JSON when piped.",
2786
- "name": "format",
2787
- "hasDynamicHelp": false,
2788
- "helpValue": "<format>",
2789
- "multiple": false,
2790
- "options": [
2791
- "table",
2792
- "json"
2793
- ],
2794
- "type": "option"
2795
- },
2796
- "json": {
2797
- "description": "Print raw JSON output.",
2798
- "name": "json",
2799
- "allowNo": false,
2800
- "type": "boolean"
2801
- },
2802
- "wide": {
2803
- "description": "Show full table values without truncation.",
2804
- "name": "wide",
2805
- "allowNo": false,
2806
- "type": "boolean"
2807
- },
2808
- "all": {
2809
- "description": "Show all returned skills in table output.",
2810
- "name": "all",
2811
- "allowNo": false,
2812
- "type": "boolean"
2813
- },
2814
- "limit": {
2815
- "description": "Maximum skills to show in table output.",
2816
- "name": "limit",
2817
- "default": 25,
2818
- "hasDynamicHelp": false,
2819
- "helpValue": "<count>",
2820
- "multiple": false,
2821
- "type": "option"
2822
- }
2823
- },
2824
- "hasDynamicHelp": false,
2825
- "hiddenAliases": [],
2826
- "id": "skills:list",
2827
- "pluginAlias": "browse",
2828
- "pluginName": "browse",
2829
- "pluginType": "core",
2830
- "strict": true,
2831
- "isESM": true,
2832
- "relativePath": [
2833
- "dist",
2834
- "commands",
2835
- "skills",
2836
- "list.js"
2837
- ]
2838
- },
2839
- "tab:close": {
2840
- "aliases": [],
2841
- "args": {
2842
- "tab": {
2843
- "description": "Optional tab index or targetId. Prefer targetId from `browse tab list` when indices may change.",
2844
- "name": "tab",
2845
- "required": false
2655
+ "y": {
2656
+ "description": "Viewport y coordinate.",
2657
+ "name": "y",
2658
+ "required": true
2846
2659
  }
2847
2660
  },
2848
- "description": "Close a tab by index or targetId. Without an argument, closes the active tab. Prefer targetId for stability.",
2661
+ "description": "Click raw viewport coordinates in the active page.",
2849
2662
  "examples": [
2850
- "browse tab close",
2851
- "browse tab close 1",
2852
- "browse tab close <target-id>",
2853
- "browse tab close <target-id> --session research"
2663
+ "browse mouse click 240 320",
2664
+ "browse mouse click 240 320 --button right",
2665
+ "browse mouse click 240 320 --click-count 2 --return-xpath"
2854
2666
  ],
2855
2667
  "flags": {
2856
2668
  "auto-connect": {
@@ -2907,11 +2719,40 @@
2907
2719
  "helpValue": "<target-id>",
2908
2720
  "multiple": false,
2909
2721
  "type": "option"
2722
+ },
2723
+ "button": {
2724
+ "description": "Mouse button to use.",
2725
+ "name": "button",
2726
+ "default": "left",
2727
+ "hasDynamicHelp": false,
2728
+ "helpValue": "<button>",
2729
+ "multiple": false,
2730
+ "options": [
2731
+ "left",
2732
+ "middle",
2733
+ "right"
2734
+ ],
2735
+ "type": "option"
2736
+ },
2737
+ "click-count": {
2738
+ "description": "Number of clicks to send.",
2739
+ "name": "click-count",
2740
+ "default": 1,
2741
+ "hasDynamicHelp": false,
2742
+ "helpValue": "<count>",
2743
+ "multiple": false,
2744
+ "type": "option"
2745
+ },
2746
+ "return-xpath": {
2747
+ "description": "Include the XPath under the coordinate when the driver can return it.",
2748
+ "name": "return-xpath",
2749
+ "allowNo": false,
2750
+ "type": "boolean"
2910
2751
  }
2911
2752
  },
2912
2753
  "hasDynamicHelp": false,
2913
2754
  "hiddenAliases": [],
2914
- "id": "tab:close",
2755
+ "id": "mouse:click",
2915
2756
  "pluginAlias": "browse",
2916
2757
  "pluginName": "browse",
2917
2758
  "pluginType": "core",
@@ -2920,17 +2761,39 @@
2920
2761
  "relativePath": [
2921
2762
  "dist",
2922
2763
  "commands",
2923
- "tab",
2924
- "close.js"
2764
+ "mouse",
2765
+ "click.js"
2925
2766
  ]
2926
2767
  },
2927
- "tab:list": {
2768
+ "mouse:drag": {
2928
2769
  "aliases": [],
2929
- "args": {},
2930
- "description": "List tabs in the active browser session, including stable targetIds.",
2770
+ "args": {
2771
+ "fromX": {
2772
+ "description": "Starting viewport x coordinate.",
2773
+ "name": "fromX",
2774
+ "required": true
2775
+ },
2776
+ "fromY": {
2777
+ "description": "Starting viewport y coordinate.",
2778
+ "name": "fromY",
2779
+ "required": true
2780
+ },
2781
+ "toX": {
2782
+ "description": "Ending viewport x coordinate.",
2783
+ "name": "toX",
2784
+ "required": true
2785
+ },
2786
+ "toY": {
2787
+ "description": "Ending viewport y coordinate.",
2788
+ "name": "toY",
2789
+ "required": true
2790
+ }
2791
+ },
2792
+ "description": "Drag from one raw viewport coordinate to another.",
2931
2793
  "examples": [
2932
- "browse tab list",
2933
- "browse tab list --session research"
2794
+ "browse mouse drag 100 100 400 400",
2795
+ "browse mouse drag 100 100 400 400 --steps 20 --delay 10",
2796
+ "browse mouse drag 100 100 400 400 --return-xpath"
2934
2797
  ],
2935
2798
  "flags": {
2936
2799
  "auto-connect": {
@@ -2987,11 +2850,49 @@
2987
2850
  "helpValue": "<target-id>",
2988
2851
  "multiple": false,
2989
2852
  "type": "option"
2853
+ },
2854
+ "button": {
2855
+ "description": "Mouse button to use.",
2856
+ "name": "button",
2857
+ "default": "left",
2858
+ "hasDynamicHelp": false,
2859
+ "helpValue": "<button>",
2860
+ "multiple": false,
2861
+ "options": [
2862
+ "left",
2863
+ "middle",
2864
+ "right"
2865
+ ],
2866
+ "type": "option"
2867
+ },
2868
+ "delay": {
2869
+ "description": "Delay between drag steps in milliseconds.",
2870
+ "name": "delay",
2871
+ "default": 0,
2872
+ "hasDynamicHelp": false,
2873
+ "helpValue": "<ms>",
2874
+ "multiple": false,
2875
+ "type": "option"
2876
+ },
2877
+ "return-xpath": {
2878
+ "description": "Include the XPath under the start/end coordinates when the driver can return it.",
2879
+ "name": "return-xpath",
2880
+ "allowNo": false,
2881
+ "type": "boolean"
2882
+ },
2883
+ "steps": {
2884
+ "description": "Number of intermediate drag steps.",
2885
+ "name": "steps",
2886
+ "default": 10,
2887
+ "hasDynamicHelp": false,
2888
+ "helpValue": "<steps>",
2889
+ "multiple": false,
2890
+ "type": "option"
2990
2891
  }
2991
2892
  },
2992
2893
  "hasDynamicHelp": false,
2993
2894
  "hiddenAliases": [],
2994
- "id": "tab:list",
2895
+ "id": "mouse:drag",
2995
2896
  "pluginAlias": "browse",
2996
2897
  "pluginName": "browse",
2997
2898
  "pluginType": "core",
@@ -3000,24 +2901,29 @@
3000
2901
  "relativePath": [
3001
2902
  "dist",
3002
2903
  "commands",
3003
- "tab",
3004
- "list.js"
2904
+ "mouse",
2905
+ "drag.js"
3005
2906
  ]
3006
2907
  },
3007
- "tab:new": {
2908
+ "mouse:hover": {
3008
2909
  "aliases": [],
3009
2910
  "args": {
3010
- "url": {
3011
- "description": "Optional URL to open in the new tab.",
3012
- "name": "url",
3013
- "required": false
2911
+ "x": {
2912
+ "description": "Viewport x coordinate.",
2913
+ "name": "x",
2914
+ "required": true
2915
+ },
2916
+ "y": {
2917
+ "description": "Viewport y coordinate.",
2918
+ "name": "y",
2919
+ "required": true
3014
2920
  }
3015
2921
  },
3016
- "description": "Open a new tab and make it active.",
2922
+ "description": "Move the mouse to raw viewport coordinates in the active page.",
3017
2923
  "examples": [
3018
- "browse tab new",
3019
- "browse tab new https://example.com",
3020
- "browse tab new https://example.com --session research"
2924
+ "browse mouse hover 240 320",
2925
+ "browse mouse hover 240 320 --return-xpath",
2926
+ "browse mouse hover 240 320 --session research"
3021
2927
  ],
3022
2928
  "flags": {
3023
2929
  "auto-connect": {
@@ -3074,11 +2980,17 @@
3074
2980
  "helpValue": "<target-id>",
3075
2981
  "multiple": false,
3076
2982
  "type": "option"
2983
+ },
2984
+ "return-xpath": {
2985
+ "description": "Include the XPath under the coordinate when the driver can return it.",
2986
+ "name": "return-xpath",
2987
+ "allowNo": false,
2988
+ "type": "boolean"
3077
2989
  }
3078
2990
  },
3079
2991
  "hasDynamicHelp": false,
3080
2992
  "hiddenAliases": [],
3081
- "id": "tab:new",
2993
+ "id": "mouse:hover",
3082
2994
  "pluginAlias": "browse",
3083
2995
  "pluginName": "browse",
3084
2996
  "pluginType": "core",
@@ -3087,25 +2999,39 @@
3087
2999
  "relativePath": [
3088
3000
  "dist",
3089
3001
  "commands",
3090
- "tab",
3091
- "new.js"
3002
+ "mouse",
3003
+ "hover.js"
3092
3004
  ]
3093
3005
  },
3094
- "tab:switch": {
3006
+ "mouse:scroll": {
3095
3007
  "aliases": [],
3096
3008
  "args": {
3097
- "tab": {
3098
- "description": "Tab index or targetId. Prefer targetId from `browse tab list` when indices may change.",
3099
- "name": "tab",
3009
+ "x": {
3010
+ "description": "Viewport x coordinate.",
3011
+ "name": "x",
3012
+ "required": true
3013
+ },
3014
+ "y": {
3015
+ "description": "Viewport y coordinate.",
3016
+ "name": "y",
3017
+ "required": true
3018
+ },
3019
+ "deltaX": {
3020
+ "description": "Horizontal scroll delta.",
3021
+ "name": "deltaX",
3022
+ "required": true
3023
+ },
3024
+ "deltaY": {
3025
+ "description": "Vertical scroll delta.",
3026
+ "name": "deltaY",
3100
3027
  "required": true
3101
3028
  }
3102
3029
  },
3103
- "description": "Switch the active tab by index or targetId. Prefer targetId from `browse tab list` for stable agent workflows.",
3030
+ "description": "Scroll from raw viewport coordinates in the active page.",
3104
3031
  "examples": [
3105
- "browse tab list",
3106
- "browse tab switch 1",
3107
- "browse tab switch <target-id>",
3108
- "browse tab switch <target-id> --session research"
3032
+ "browse mouse scroll 400 500 0 600",
3033
+ "browse mouse scroll 400 500 0 -600",
3034
+ "browse mouse scroll 400 500 0 600 --return-xpath"
3109
3035
  ],
3110
3036
  "flags": {
3111
3037
  "auto-connect": {
@@ -3162,11 +3088,17 @@
3162
3088
  "helpValue": "<target-id>",
3163
3089
  "multiple": false,
3164
3090
  "type": "option"
3091
+ },
3092
+ "return-xpath": {
3093
+ "description": "Include the XPath under the coordinate when the driver can return it.",
3094
+ "name": "return-xpath",
3095
+ "allowNo": false,
3096
+ "type": "boolean"
3165
3097
  }
3166
3098
  },
3167
3099
  "hasDynamicHelp": false,
3168
3100
  "hiddenAliases": [],
3169
- "id": "tab:switch",
3101
+ "id": "mouse:scroll",
3170
3102
  "pluginAlias": "browse",
3171
3103
  "pluginName": "browse",
3172
3104
  "pluginType": "core",
@@ -3175,8 +3107,8 @@
3175
3107
  "relativePath": [
3176
3108
  "dist",
3177
3109
  "commands",
3178
- "tab",
3179
- "switch.js"
3110
+ "mouse",
3111
+ "scroll.js"
3180
3112
  ]
3181
3113
  },
3182
3114
  "network:clear": {
@@ -3449,45 +3381,237 @@
3449
3381
  "allowNo": false,
3450
3382
  "type": "boolean"
3451
3383
  },
3452
- "headless": {
3453
- "description": "Run managed local sessions in headless mode.",
3454
- "name": "headless",
3384
+ "headless": {
3385
+ "description": "Run managed local sessions in headless mode.",
3386
+ "name": "headless",
3387
+ "allowNo": false,
3388
+ "type": "boolean"
3389
+ },
3390
+ "local": {
3391
+ "description": "Use a managed local browser session.",
3392
+ "name": "local",
3393
+ "allowNo": false,
3394
+ "type": "boolean"
3395
+ },
3396
+ "remote": {
3397
+ "description": "Use a remote Browserbase browser session.",
3398
+ "name": "remote",
3399
+ "allowNo": false,
3400
+ "type": "boolean"
3401
+ },
3402
+ "session": {
3403
+ "char": "s",
3404
+ "description": "Named browser session to use. Defaults to BROWSE_SESSION or default.",
3405
+ "name": "session",
3406
+ "hasDynamicHelp": false,
3407
+ "helpValue": "<name>",
3408
+ "multiple": false,
3409
+ "type": "option"
3410
+ },
3411
+ "target-id": {
3412
+ "description": "Select a specific CDP target when attaching to an existing browser.",
3413
+ "name": "target-id",
3414
+ "hasDynamicHelp": false,
3415
+ "helpValue": "<target-id>",
3416
+ "multiple": false,
3417
+ "type": "option"
3418
+ }
3419
+ },
3420
+ "hasDynamicHelp": false,
3421
+ "hiddenAliases": [],
3422
+ "id": "network:path",
3423
+ "pluginAlias": "browse",
3424
+ "pluginName": "browse",
3425
+ "pluginType": "core",
3426
+ "strict": true,
3427
+ "isESM": true,
3428
+ "relativePath": [
3429
+ "dist",
3430
+ "commands",
3431
+ "network",
3432
+ "path.js"
3433
+ ]
3434
+ },
3435
+ "skills:add": {
3436
+ "aliases": [],
3437
+ "args": {
3438
+ "skill": {
3439
+ "description": "Skill id in the form <domain>/<task>.",
3440
+ "name": "skill",
3441
+ "required": true
3442
+ }
3443
+ },
3444
+ "description": "Install a browser automation skill.",
3445
+ "examples": [
3446
+ "browse skills add yelp.com/extract-reviews",
3447
+ "browse skills add mcdonalds.order.online/order-delivery-42q71n"
3448
+ ],
3449
+ "flags": {},
3450
+ "hasDynamicHelp": false,
3451
+ "hiddenAliases": [],
3452
+ "id": "skills:add",
3453
+ "pluginAlias": "browse",
3454
+ "pluginName": "browse",
3455
+ "pluginType": "core",
3456
+ "strict": true,
3457
+ "isESM": true,
3458
+ "relativePath": [
3459
+ "dist",
3460
+ "commands",
3461
+ "skills",
3462
+ "add.js"
3463
+ ]
3464
+ },
3465
+ "skills:find": {
3466
+ "aliases": [],
3467
+ "args": {
3468
+ "query": {
3469
+ "description": "Skill slug or search query.",
3470
+ "name": "query",
3471
+ "required": true
3472
+ }
3473
+ },
3474
+ "description": "Find Browse.sh catalog skills by slug, domain, title, description, category, alias, or tag.",
3475
+ "examples": [
3476
+ "browse skills find yelp",
3477
+ "browse skills find reviews",
3478
+ "browse skills find yelp.com/extract-reviews",
3479
+ "browse skills find travel --limit 5",
3480
+ "browse skills find \"restaurant reviews\" --json"
3481
+ ],
3482
+ "flags": {
3483
+ "format": {
3484
+ "description": "Output format. Defaults to table in a terminal and JSON when piped.",
3485
+ "name": "format",
3486
+ "hasDynamicHelp": false,
3487
+ "helpValue": "<format>",
3488
+ "multiple": false,
3489
+ "options": [
3490
+ "table",
3491
+ "json"
3492
+ ],
3493
+ "type": "option"
3494
+ },
3495
+ "json": {
3496
+ "description": "Print raw JSON output.",
3497
+ "name": "json",
3498
+ "allowNo": false,
3499
+ "type": "boolean"
3500
+ },
3501
+ "wide": {
3502
+ "description": "Show full table values without truncation.",
3503
+ "name": "wide",
3504
+ "allowNo": false,
3505
+ "type": "boolean"
3506
+ },
3507
+ "all": {
3508
+ "description": "Show all matching skills in table output.",
3509
+ "name": "all",
3510
+ "allowNo": false,
3511
+ "type": "boolean"
3512
+ },
3513
+ "limit": {
3514
+ "description": "Maximum matching skills to show in table output.",
3515
+ "name": "limit",
3516
+ "default": 25,
3517
+ "hasDynamicHelp": false,
3518
+ "helpValue": "<count>",
3519
+ "multiple": false,
3520
+ "type": "option"
3521
+ }
3522
+ },
3523
+ "hasDynamicHelp": false,
3524
+ "hiddenAliases": [],
3525
+ "id": "skills:find",
3526
+ "pluginAlias": "browse",
3527
+ "pluginName": "browse",
3528
+ "pluginType": "core",
3529
+ "strict": true,
3530
+ "isESM": true,
3531
+ "relativePath": [
3532
+ "dist",
3533
+ "commands",
3534
+ "skills",
3535
+ "find.js"
3536
+ ]
3537
+ },
3538
+ "skills:install": {
3539
+ "aliases": [],
3540
+ "args": {},
3541
+ "description": "Install the bundled browse CLI skill.",
3542
+ "examples": [
3543
+ "browse skills install"
3544
+ ],
3545
+ "flags": {},
3546
+ "hasDynamicHelp": false,
3547
+ "hiddenAliases": [],
3548
+ "id": "skills:install",
3549
+ "pluginAlias": "browse",
3550
+ "pluginName": "browse",
3551
+ "pluginType": "core",
3552
+ "strict": true,
3553
+ "isESM": true,
3554
+ "relativePath": [
3555
+ "dist",
3556
+ "commands",
3557
+ "skills",
3558
+ "install.js"
3559
+ ]
3560
+ },
3561
+ "skills:list": {
3562
+ "aliases": [],
3563
+ "args": {},
3564
+ "description": "List Browse.sh catalog skills.",
3565
+ "examples": [
3566
+ "browse skills list",
3567
+ "browse skills list --limit 10",
3568
+ "browse skills list --all",
3569
+ "browse skills list --json"
3570
+ ],
3571
+ "flags": {
3572
+ "format": {
3573
+ "description": "Output format. Defaults to table in a terminal and JSON when piped.",
3574
+ "name": "format",
3575
+ "hasDynamicHelp": false,
3576
+ "helpValue": "<format>",
3577
+ "multiple": false,
3578
+ "options": [
3579
+ "table",
3580
+ "json"
3581
+ ],
3582
+ "type": "option"
3583
+ },
3584
+ "json": {
3585
+ "description": "Print raw JSON output.",
3586
+ "name": "json",
3455
3587
  "allowNo": false,
3456
3588
  "type": "boolean"
3457
3589
  },
3458
- "local": {
3459
- "description": "Use a managed local browser session.",
3460
- "name": "local",
3590
+ "wide": {
3591
+ "description": "Show full table values without truncation.",
3592
+ "name": "wide",
3461
3593
  "allowNo": false,
3462
3594
  "type": "boolean"
3463
3595
  },
3464
- "remote": {
3465
- "description": "Use a remote Browserbase browser session.",
3466
- "name": "remote",
3596
+ "all": {
3597
+ "description": "Show all returned skills in table output.",
3598
+ "name": "all",
3467
3599
  "allowNo": false,
3468
3600
  "type": "boolean"
3469
3601
  },
3470
- "session": {
3471
- "char": "s",
3472
- "description": "Named browser session to use. Defaults to BROWSE_SESSION or default.",
3473
- "name": "session",
3474
- "hasDynamicHelp": false,
3475
- "helpValue": "<name>",
3476
- "multiple": false,
3477
- "type": "option"
3478
- },
3479
- "target-id": {
3480
- "description": "Select a specific CDP target when attaching to an existing browser.",
3481
- "name": "target-id",
3602
+ "limit": {
3603
+ "description": "Maximum skills to show in table output.",
3604
+ "name": "limit",
3605
+ "default": 25,
3482
3606
  "hasDynamicHelp": false,
3483
- "helpValue": "<target-id>",
3607
+ "helpValue": "<count>",
3484
3608
  "multiple": false,
3485
3609
  "type": "option"
3486
3610
  }
3487
3611
  },
3488
3612
  "hasDynamicHelp": false,
3489
3613
  "hiddenAliases": [],
3490
- "id": "network:path",
3614
+ "id": "skills:list",
3491
3615
  "pluginAlias": "browse",
3492
3616
  "pluginName": "browse",
3493
3617
  "pluginType": "core",
@@ -3496,29 +3620,25 @@
3496
3620
  "relativePath": [
3497
3621
  "dist",
3498
3622
  "commands",
3499
- "network",
3500
- "path.js"
3623
+ "skills",
3624
+ "list.js"
3501
3625
  ]
3502
3626
  },
3503
- "mouse:click": {
3627
+ "tab:close": {
3504
3628
  "aliases": [],
3505
3629
  "args": {
3506
- "x": {
3507
- "description": "Viewport x coordinate.",
3508
- "name": "x",
3509
- "required": true
3510
- },
3511
- "y": {
3512
- "description": "Viewport y coordinate.",
3513
- "name": "y",
3514
- "required": true
3630
+ "tab": {
3631
+ "description": "Optional tab index or targetId. Prefer targetId from `browse tab list` when indices may change.",
3632
+ "name": "tab",
3633
+ "required": false
3515
3634
  }
3516
3635
  },
3517
- "description": "Click raw viewport coordinates in the active page.",
3636
+ "description": "Close a tab by index or targetId. Without an argument, closes the active tab. Prefer targetId for stability.",
3518
3637
  "examples": [
3519
- "browse mouse click 240 320",
3520
- "browse mouse click 240 320 --button right",
3521
- "browse mouse click 240 320 --click-count 2 --return-xpath"
3638
+ "browse tab close",
3639
+ "browse tab close 1",
3640
+ "browse tab close <target-id>",
3641
+ "browse tab close <target-id> --session research"
3522
3642
  ],
3523
3643
  "flags": {
3524
3644
  "auto-connect": {
@@ -3575,40 +3695,11 @@
3575
3695
  "helpValue": "<target-id>",
3576
3696
  "multiple": false,
3577
3697
  "type": "option"
3578
- },
3579
- "button": {
3580
- "description": "Mouse button to use.",
3581
- "name": "button",
3582
- "default": "left",
3583
- "hasDynamicHelp": false,
3584
- "helpValue": "<button>",
3585
- "multiple": false,
3586
- "options": [
3587
- "left",
3588
- "middle",
3589
- "right"
3590
- ],
3591
- "type": "option"
3592
- },
3593
- "click-count": {
3594
- "description": "Number of clicks to send.",
3595
- "name": "click-count",
3596
- "default": 1,
3597
- "hasDynamicHelp": false,
3598
- "helpValue": "<count>",
3599
- "multiple": false,
3600
- "type": "option"
3601
- },
3602
- "return-xpath": {
3603
- "description": "Include the XPath under the coordinate when the driver can return it.",
3604
- "name": "return-xpath",
3605
- "allowNo": false,
3606
- "type": "boolean"
3607
3698
  }
3608
3699
  },
3609
3700
  "hasDynamicHelp": false,
3610
3701
  "hiddenAliases": [],
3611
- "id": "mouse:click",
3702
+ "id": "tab:close",
3612
3703
  "pluginAlias": "browse",
3613
3704
  "pluginName": "browse",
3614
3705
  "pluginType": "core",
@@ -3617,39 +3708,17 @@
3617
3708
  "relativePath": [
3618
3709
  "dist",
3619
3710
  "commands",
3620
- "mouse",
3621
- "click.js"
3711
+ "tab",
3712
+ "close.js"
3622
3713
  ]
3623
3714
  },
3624
- "mouse:drag": {
3715
+ "tab:list": {
3625
3716
  "aliases": [],
3626
- "args": {
3627
- "fromX": {
3628
- "description": "Starting viewport x coordinate.",
3629
- "name": "fromX",
3630
- "required": true
3631
- },
3632
- "fromY": {
3633
- "description": "Starting viewport y coordinate.",
3634
- "name": "fromY",
3635
- "required": true
3636
- },
3637
- "toX": {
3638
- "description": "Ending viewport x coordinate.",
3639
- "name": "toX",
3640
- "required": true
3641
- },
3642
- "toY": {
3643
- "description": "Ending viewport y coordinate.",
3644
- "name": "toY",
3645
- "required": true
3646
- }
3647
- },
3648
- "description": "Drag from one raw viewport coordinate to another.",
3717
+ "args": {},
3718
+ "description": "List tabs in the active browser session, including stable targetIds.",
3649
3719
  "examples": [
3650
- "browse mouse drag 100 100 400 400",
3651
- "browse mouse drag 100 100 400 400 --steps 20 --delay 10",
3652
- "browse mouse drag 100 100 400 400 --return-xpath"
3720
+ "browse tab list",
3721
+ "browse tab list --session research"
3653
3722
  ],
3654
3723
  "flags": {
3655
3724
  "auto-connect": {
@@ -3706,49 +3775,11 @@
3706
3775
  "helpValue": "<target-id>",
3707
3776
  "multiple": false,
3708
3777
  "type": "option"
3709
- },
3710
- "button": {
3711
- "description": "Mouse button to use.",
3712
- "name": "button",
3713
- "default": "left",
3714
- "hasDynamicHelp": false,
3715
- "helpValue": "<button>",
3716
- "multiple": false,
3717
- "options": [
3718
- "left",
3719
- "middle",
3720
- "right"
3721
- ],
3722
- "type": "option"
3723
- },
3724
- "delay": {
3725
- "description": "Delay between drag steps in milliseconds.",
3726
- "name": "delay",
3727
- "default": 0,
3728
- "hasDynamicHelp": false,
3729
- "helpValue": "<ms>",
3730
- "multiple": false,
3731
- "type": "option"
3732
- },
3733
- "return-xpath": {
3734
- "description": "Include the XPath under the start/end coordinates when the driver can return it.",
3735
- "name": "return-xpath",
3736
- "allowNo": false,
3737
- "type": "boolean"
3738
- },
3739
- "steps": {
3740
- "description": "Number of intermediate drag steps.",
3741
- "name": "steps",
3742
- "default": 10,
3743
- "hasDynamicHelp": false,
3744
- "helpValue": "<steps>",
3745
- "multiple": false,
3746
- "type": "option"
3747
3778
  }
3748
3779
  },
3749
3780
  "hasDynamicHelp": false,
3750
3781
  "hiddenAliases": [],
3751
- "id": "mouse:drag",
3782
+ "id": "tab:list",
3752
3783
  "pluginAlias": "browse",
3753
3784
  "pluginName": "browse",
3754
3785
  "pluginType": "core",
@@ -3757,29 +3788,24 @@
3757
3788
  "relativePath": [
3758
3789
  "dist",
3759
3790
  "commands",
3760
- "mouse",
3761
- "drag.js"
3791
+ "tab",
3792
+ "list.js"
3762
3793
  ]
3763
3794
  },
3764
- "mouse:hover": {
3795
+ "tab:new": {
3765
3796
  "aliases": [],
3766
3797
  "args": {
3767
- "x": {
3768
- "description": "Viewport x coordinate.",
3769
- "name": "x",
3770
- "required": true
3771
- },
3772
- "y": {
3773
- "description": "Viewport y coordinate.",
3774
- "name": "y",
3775
- "required": true
3798
+ "url": {
3799
+ "description": "Optional URL to open in the new tab.",
3800
+ "name": "url",
3801
+ "required": false
3776
3802
  }
3777
3803
  },
3778
- "description": "Move the mouse to raw viewport coordinates in the active page.",
3804
+ "description": "Open a new tab and make it active.",
3779
3805
  "examples": [
3780
- "browse mouse hover 240 320",
3781
- "browse mouse hover 240 320 --return-xpath",
3782
- "browse mouse hover 240 320 --session research"
3806
+ "browse tab new",
3807
+ "browse tab new https://example.com",
3808
+ "browse tab new https://example.com --session research"
3783
3809
  ],
3784
3810
  "flags": {
3785
3811
  "auto-connect": {
@@ -3836,17 +3862,11 @@
3836
3862
  "helpValue": "<target-id>",
3837
3863
  "multiple": false,
3838
3864
  "type": "option"
3839
- },
3840
- "return-xpath": {
3841
- "description": "Include the XPath under the coordinate when the driver can return it.",
3842
- "name": "return-xpath",
3843
- "allowNo": false,
3844
- "type": "boolean"
3845
3865
  }
3846
3866
  },
3847
3867
  "hasDynamicHelp": false,
3848
3868
  "hiddenAliases": [],
3849
- "id": "mouse:hover",
3869
+ "id": "tab:new",
3850
3870
  "pluginAlias": "browse",
3851
3871
  "pluginName": "browse",
3852
3872
  "pluginType": "core",
@@ -3855,39 +3875,25 @@
3855
3875
  "relativePath": [
3856
3876
  "dist",
3857
3877
  "commands",
3858
- "mouse",
3859
- "hover.js"
3878
+ "tab",
3879
+ "new.js"
3860
3880
  ]
3861
3881
  },
3862
- "mouse:scroll": {
3882
+ "tab:switch": {
3863
3883
  "aliases": [],
3864
3884
  "args": {
3865
- "x": {
3866
- "description": "Viewport x coordinate.",
3867
- "name": "x",
3868
- "required": true
3869
- },
3870
- "y": {
3871
- "description": "Viewport y coordinate.",
3872
- "name": "y",
3873
- "required": true
3874
- },
3875
- "deltaX": {
3876
- "description": "Horizontal scroll delta.",
3877
- "name": "deltaX",
3878
- "required": true
3879
- },
3880
- "deltaY": {
3881
- "description": "Vertical scroll delta.",
3882
- "name": "deltaY",
3885
+ "tab": {
3886
+ "description": "Tab index or targetId. Prefer targetId from `browse tab list` when indices may change.",
3887
+ "name": "tab",
3883
3888
  "required": true
3884
3889
  }
3885
3890
  },
3886
- "description": "Scroll from raw viewport coordinates in the active page.",
3891
+ "description": "Switch the active tab by index or targetId. Prefer targetId from `browse tab list` for stable agent workflows.",
3887
3892
  "examples": [
3888
- "browse mouse scroll 400 500 0 600",
3889
- "browse mouse scroll 400 500 0 -600",
3890
- "browse mouse scroll 400 500 0 600 --return-xpath"
3893
+ "browse tab list",
3894
+ "browse tab switch 1",
3895
+ "browse tab switch <target-id>",
3896
+ "browse tab switch <target-id> --session research"
3891
3897
  ],
3892
3898
  "flags": {
3893
3899
  "auto-connect": {
@@ -3944,17 +3950,11 @@
3944
3950
  "helpValue": "<target-id>",
3945
3951
  "multiple": false,
3946
3952
  "type": "option"
3947
- },
3948
- "return-xpath": {
3949
- "description": "Include the XPath under the coordinate when the driver can return it.",
3950
- "name": "return-xpath",
3951
- "allowNo": false,
3952
- "type": "boolean"
3953
3953
  }
3954
3954
  },
3955
3955
  "hasDynamicHelp": false,
3956
3956
  "hiddenAliases": [],
3957
- "id": "mouse:scroll",
3957
+ "id": "tab:switch",
3958
3958
  "pluginAlias": "browse",
3959
3959
  "pluginName": "browse",
3960
3960
  "pluginType": "core",
@@ -3963,8 +3963,8 @@
3963
3963
  "relativePath": [
3964
3964
  "dist",
3965
3965
  "commands",
3966
- "mouse",
3967
- "scroll.js"
3966
+ "tab",
3967
+ "switch.js"
3968
3968
  ]
3969
3969
  },
3970
3970
  "templates:clone": {
@@ -5245,5 +5245,5 @@
5245
5245
  ]
5246
5246
  }
5247
5247
  },
5248
- "version": "0.7.2"
5248
+ "version": "0.7.3"
5249
5249
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "browse",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "description": "Unified Browserbase CLI for browser automation and cloud APIs.",
5
5
  "type": "module",
6
6
  "private": false,