browser-control-and-automation-cli 0.1.1.dev3__py3-none-any.whl

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 (104) hide show
  1. browser_cli/__init__.py +7 -0
  2. browser_cli/actions/__init__.py +5 -0
  3. browser_cli/actions/cli_specs.py +868 -0
  4. browser_cli/agent_scope/__init__.py +14 -0
  5. browser_cli/automation/__init__.py +11 -0
  6. browser_cli/automation/api/__init__.py +5 -0
  7. browser_cli/automation/api/server.py +321 -0
  8. browser_cli/automation/hooks.py +42 -0
  9. browser_cli/automation/loader.py +134 -0
  10. browser_cli/automation/models.py +127 -0
  11. browser_cli/automation/persistence/__init__.py +5 -0
  12. browser_cli/automation/persistence/store.py +682 -0
  13. browser_cli/automation/projections.py +279 -0
  14. browser_cli/automation/publisher.py +153 -0
  15. browser_cli/automation/scheduler/__init__.py +5 -0
  16. browser_cli/automation/scheduler/schedule.py +113 -0
  17. browser_cli/automation/service/__init__.py +8 -0
  18. browser_cli/automation/service/__main__.py +64 -0
  19. browser_cli/automation/service/client.py +232 -0
  20. browser_cli/automation/service/runtime.py +388 -0
  21. browser_cli/automation/toml.py +35 -0
  22. browser_cli/automation/web/__init__.py +5 -0
  23. browser_cli/automation/web/assets.py +377 -0
  24. browser_cli/browser/__init__.py +1 -0
  25. browser_cli/browser/models.py +44 -0
  26. browser_cli/browser/network_capture.py +392 -0
  27. browser_cli/browser/service.py +1519 -0
  28. browser_cli/browser/session.py +158 -0
  29. browser_cli/browser/snapshot.py +35 -0
  30. browser_cli/browser/stealth.py +450 -0
  31. browser_cli/cli/__init__.py +1 -0
  32. browser_cli/cli/error_hints.py +26 -0
  33. browser_cli/cli/main.py +298 -0
  34. browser_cli/commands/__init__.py +1 -0
  35. browser_cli/commands/action.py +25 -0
  36. browser_cli/commands/automation.py +304 -0
  37. browser_cli/commands/doctor.py +336 -0
  38. browser_cli/commands/install_skills.py +138 -0
  39. browser_cli/commands/paths.py +31 -0
  40. browser_cli/commands/read.py +33 -0
  41. browser_cli/commands/reload.py +51 -0
  42. browser_cli/commands/status.py +444 -0
  43. browser_cli/commands/task.py +71 -0
  44. browser_cli/constants.py +97 -0
  45. browser_cli/daemon/__init__.py +1 -0
  46. browser_cli/daemon/__main__.py +34 -0
  47. browser_cli/daemon/app.py +941 -0
  48. browser_cli/daemon/browser_service.py +998 -0
  49. browser_cli/daemon/client.py +280 -0
  50. browser_cli/daemon/models.py +63 -0
  51. browser_cli/daemon/runtime_presentation.py +167 -0
  52. browser_cli/daemon/server.py +103 -0
  53. browser_cli/daemon/state.py +15 -0
  54. browser_cli/daemon/transport.py +77 -0
  55. browser_cli/drivers/__init__.py +6 -0
  56. browser_cli/drivers/_extension/__init__.py +1 -0
  57. browser_cli/drivers/_extension/artifact_actions.py +154 -0
  58. browser_cli/drivers/_extension/dialog_actions.py +35 -0
  59. browser_cli/drivers/_extension/input_actions.py +63 -0
  60. browser_cli/drivers/_extension/locator_actions.py +100 -0
  61. browser_cli/drivers/_extension/observe_actions.py +285 -0
  62. browser_cli/drivers/_extension/page_actions.py +210 -0
  63. browser_cli/drivers/_extension/state_actions.py +134 -0
  64. browser_cli/drivers/base.py +391 -0
  65. browser_cli/drivers/extension_driver.py +33 -0
  66. browser_cli/drivers/models.py +21 -0
  67. browser_cli/drivers/playwright_driver.py +499 -0
  68. browser_cli/error_codes.py +27 -0
  69. browser_cli/errors.py +146 -0
  70. browser_cli/exit_codes.py +9 -0
  71. browser_cli/extension/__init__.py +32 -0
  72. browser_cli/extension/protocol.py +222 -0
  73. browser_cli/extension/session.py +393 -0
  74. browser_cli/network.py +147 -0
  75. browser_cli/outputs/__init__.py +1 -0
  76. browser_cli/outputs/json.py +10 -0
  77. browser_cli/outputs/render.py +7 -0
  78. browser_cli/packaged_skills/__init__.py +1 -0
  79. browser_cli/packaged_skills/browser-cli-converge/SKILL.md +62 -0
  80. browser_cli/packaged_skills/browser-cli-delivery/SKILL.md +61 -0
  81. browser_cli/packaged_skills/browser-cli-explore/SKILL.md +77 -0
  82. browser_cli/profiles/__init__.py +1 -0
  83. browser_cli/profiles/discovery.py +185 -0
  84. browser_cli/refs/__init__.py +17 -0
  85. browser_cli/refs/generator.py +386 -0
  86. browser_cli/refs/models.py +127 -0
  87. browser_cli/refs/registry.py +51 -0
  88. browser_cli/refs/resolver.py +214 -0
  89. browser_cli/tabs/__init__.py +5 -0
  90. browser_cli/tabs/registry.py +283 -0
  91. browser_cli/task_runtime/__init__.py +31 -0
  92. browser_cli/task_runtime/client.py +107 -0
  93. browser_cli/task_runtime/entrypoint.py +110 -0
  94. browser_cli/task_runtime/errors.py +17 -0
  95. browser_cli/task_runtime/flow.py +171 -0
  96. browser_cli/task_runtime/models.py +97 -0
  97. browser_cli/task_runtime/read.py +71 -0
  98. browser_cli/task_runtime/templates.py +58 -0
  99. browser_control_and_automation_cli-0.1.1.dev3.dist-info/METADATA +340 -0
  100. browser_control_and_automation_cli-0.1.1.dev3.dist-info/RECORD +104 -0
  101. browser_control_and_automation_cli-0.1.1.dev3.dist-info/WHEEL +5 -0
  102. browser_control_and_automation_cli-0.1.1.dev3.dist-info/entry_points.txt +2 -0
  103. browser_control_and_automation_cli-0.1.1.dev3.dist-info/licenses/LICENSE +21 -0
  104. browser_control_and_automation_cli-0.1.1.dev3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,340 @@
1
+ Metadata-Version: 2.4
2
+ Name: browser-control-and-automation-cli
3
+ Version: 0.1.1.dev3
4
+ Summary: CLI-first browser reader for rendered HTML and page snapshots
5
+ Requires-Python: >=3.10
6
+ Description-Content-Type: text/markdown
7
+ License-File: LICENSE
8
+ Requires-Dist: playwright<2,>=1.52
9
+ Requires-Dist: websockets<16,>=12
10
+ Requires-Dist: tomli>=1.2.0; python_version < "3.11"
11
+ Dynamic: license-file
12
+
13
+ # browser-cli
14
+
15
+ <p align="center">
16
+ <b>CLI-first browser automation for AI agents</b>
17
+ </p>
18
+
19
+ <p align="center">
20
+ <a href="#features">Features</a> •
21
+ <a href="#installation">Installation</a> •
22
+ <a href="#quick-start">Quick Start</a> •
23
+ <a href="#task-and-automation-model">Task And Automation Model</a> •
24
+ <a href="#testing">Testing</a>
25
+ </p>
26
+
27
+ ---
28
+
29
+ `browser-cli` is a browser automation tool for AI agents and developers who need
30
+ reliable browser control from the command line.
31
+
32
+ ## Architecture
33
+
34
+ ```text
35
+ ┌──────────────────────────────────────────────────────────────────────┐
36
+ │ Task/Automation Layer (task.py + task.meta.json + automation.toml) │
37
+ ├──────────────────────────────────────────────────────────────────────┤
38
+ │ Browser Daemon ──► 60+ commands ──► Semantic Ref System │
39
+ │ ├─ read: one-shot page capture │
40
+ │ ├─ open/snapshot/click/fill: interactive control │
41
+ │ ├─ console/network/trace: observation & debugging │
42
+ │ ├─ verify-*: assertions │
43
+ │ └─ ... 60+ commands total │
44
+ ├──────────────────────────────────────────────────────────────────────┤
45
+ │ Dual Backend: Playwright (default) ◄──► Chrome Extension (opt) │
46
+ └──────────────────────────────────────────────────────────────────────┘
47
+ ```
48
+
49
+ | Component | Purpose |
50
+ |-----------|---------|
51
+ | **Browser Daemon** | Long-lived browser instance with daemon-backed CLI commands |
52
+ | **Semantic Refs** | Stable element identifiers using bridgic-style reconstruction |
53
+ | **Task Runtime** | Reusable `task.py` execution through `browser_cli.task_runtime` |
54
+ | **Automation Service** | Persistent local service for published automation snapshots |
55
+
56
+ ## Features
57
+
58
+ - **Dual Backend Architecture**: managed profile mode by default, extension mode when real Chrome is available
59
+ - **Semantic Ref System**: stable refs that survive many DOM re-renders
60
+ - **Agent Isolation**: `X_AGENT_ID` isolates visible tabs while sharing browser storage
61
+ - **JSON-First API**: daemon-backed commands return structured JSON
62
+ - **Task Runtime**: package browser logic as `task.py + task.meta.json`
63
+ - **Automation Publish Layer**: publish immutable task snapshots and operate them through a local Web UI
64
+
65
+ ## Installation
66
+
67
+ Requirements:
68
+
69
+ - Python 3.10+
70
+ - [uv](https://docs.astral.sh/uv/)
71
+ - Stable Google Chrome
72
+
73
+ Install as a tool:
74
+
75
+ ```bash
76
+ uv tool install browser-control-and-automation-cli
77
+ browser-cli doctor
78
+ browser-cli paths
79
+ browser-cli read https://example.com
80
+ ```
81
+
82
+ The published package name is `browser-control-and-automation-cli`. The
83
+ installed command remains `browser-cli`.
84
+
85
+ Run without installing:
86
+
87
+ ```bash
88
+ uvx --from browser-control-and-automation-cli browser-cli read https://example.com
89
+ ```
90
+
91
+ Install from Git:
92
+
93
+ ```bash
94
+ uv tool install git+https://github.com/hongv/browser-cli.git
95
+ browser-cli --help
96
+ ```
97
+
98
+ Installed users should start with [`docs/installed-with-uv.md`](docs/installed-with-uv.md).
99
+ For removal and local cleanup guidance, see [`docs/uninstall.md`](docs/uninstall.md).
100
+
101
+ ## Development
102
+
103
+ Clone the repository and sync the managed development environment:
104
+
105
+ ```bash
106
+ git clone https://github.com/hongv/browser-cli.git
107
+ cd browser-cli
108
+ uv sync --dev
109
+ ```
110
+
111
+ The CLI targets stable Google Chrome. Playwright Chromium is mainly useful for
112
+ local integration testing and is installed through the repo environment.
113
+
114
+ ### Optional: Extension Mode
115
+
116
+ For real-Chrome execution:
117
+
118
+ 1. Open `chrome://extensions`
119
+ 2. Enable `Developer mode`
120
+ 3. Click `Load unpacked`
121
+ 4. Select `browser-cli-extension/`
122
+
123
+ Once connected, `browser-cli status` reports extension capability state and the
124
+ daemon can prefer the extension backend at safe idle points.
125
+
126
+ ## Quick Start
127
+
128
+ If you installed Browser CLI with uv, use the dedicated installed-user guide at
129
+ [`docs/installed-with-uv.md`](docs/installed-with-uv.md). The short version is:
130
+
131
+ ```bash
132
+ browser-cli doctor
133
+ browser-cli paths
134
+ browser-cli read https://example.com
135
+ ```
136
+
137
+ ### One-Shot Read
138
+
139
+ ```bash
140
+ browser-cli read https://example.com
141
+ browser-cli read https://example.com --snapshot
142
+ browser-cli read https://example.com --scroll-bottom
143
+ ```
144
+
145
+ ### Interactive Control
146
+
147
+ ```bash
148
+ browser-cli open https://example.com
149
+ browser-cli snapshot
150
+ browser-cli click @8d4b03a9
151
+ browser-cli fill @input_ref "value"
152
+ browser-cli html
153
+ browser-cli status
154
+ browser-cli reload
155
+ ```
156
+
157
+ ### Multi-Agent Tabs
158
+
159
+ ```bash
160
+ X_AGENT_ID=agent-a browser-cli open https://example.com
161
+ X_AGENT_ID=agent-a browser-cli tabs
162
+
163
+ X_AGENT_ID=agent-b browser-cli open https://example.org
164
+ X_AGENT_ID=agent-b browser-cli tabs
165
+ ```
166
+
167
+ ## Task And Automation Model
168
+
169
+ Browser CLI separates local authoring from durable publication:
170
+
171
+ - `task` is local editable source
172
+ - `automation` is a published immutable snapshot
173
+
174
+ Typical task layout:
175
+
176
+ ```text
177
+ tasks/
178
+ my_task/
179
+ task.py
180
+ task.meta.json
181
+ automation.toml
182
+ ```
183
+
184
+ Validate and run a task directly:
185
+
186
+ ```bash
187
+ browser-cli task validate tasks/my_task
188
+ browser-cli task run tasks/my_task --set url=https://example.com
189
+ ```
190
+
191
+ Publish the current task directory into the automation service:
192
+
193
+ ```bash
194
+ browser-cli automation publish tasks/my_task
195
+ browser-cli automation status
196
+ browser-cli automation ui
197
+ ```
198
+
199
+ Publication semantics:
200
+
201
+ - `automation publish` snapshots `task.py`, `task.meta.json`, and `automation.toml` together under `~/.browser-cli/automations/<automation-id>/versions/<version>/`
202
+ - if source `automation.toml` exists, Browser CLI uses it as the publish-time configuration truth
203
+ - if source `automation.toml` is absent, Browser CLI publishes generated defaults and reports that explicitly via `manifest_source`
204
+
205
+ Export a persisted automation back to `automation.toml`:
206
+
207
+ ```bash
208
+ browser-cli automation export my_task --output /tmp/my_task.automation.toml
209
+ ```
210
+
211
+ Included examples:
212
+
213
+ - Automation-packaged reference and real-site tasks:
214
+ - [`tasks/interactive_reveal_capture/task.py`](tasks/interactive_reveal_capture/task.py)
215
+ - [`tasks/lazy_scroll_capture/task.py`](tasks/lazy_scroll_capture/task.py)
216
+ - [`tasks/douyin_video_download/task.py`](tasks/douyin_video_download/task.py)
217
+ - Additional real-site task examples:
218
+ - [`tasks/karpathy_nitter_latest_five/task.py`](tasks/karpathy_nitter_latest_five/task.py)
219
+ - Additional usage notes:
220
+ - [`docs/examples/task-and-automation.md`](docs/examples/task-and-automation.md)
221
+
222
+ Real-site publish example:
223
+
224
+ ```bash
225
+ browser-cli task validate tasks/douyin_video_download
226
+ browser-cli automation publish tasks/douyin_video_download
227
+ browser-cli automation inspect douyin_video_download
228
+ browser-cli automation status
229
+ ```
230
+
231
+ Inspect semantics:
232
+
233
+ - `browser-cli automation inspect <automation-id>` shows the current live automation-service configuration
234
+ - `browser-cli automation inspect <automation-id> --version <n>` shows `snapshot_config` for the immutable published version and `live_config` for the current service state
235
+ - `latest_run` remains a separate operational view
236
+
237
+ ## Output Contracts
238
+
239
+ ### `read`
240
+
241
+ - `stdout`: final rendered result only
242
+ - `stderr`: diagnostics only
243
+
244
+ Exit codes:
245
+
246
+ - `0`: success
247
+ - `1`: unexpected internal error
248
+ - `2`: usage error
249
+ - `66`: empty content
250
+ - `69`: browser unavailable
251
+ - `73`: profile unavailable
252
+ - `75`: temporary read failure
253
+
254
+ ### Daemon-backed Commands
255
+
256
+ - success `stdout`: JSON only
257
+ - failure `stderr`: short error summary
258
+ - stable machine-readable error codes include:
259
+ - `NO_ACTIVE_TAB`
260
+ - `AGENT_ACTIVE_TAB_BUSY`
261
+ - `TAB_NOT_FOUND`
262
+ - `NO_SNAPSHOT_CONTEXT`
263
+ - `REF_NOT_FOUND`
264
+ - `STALE_SNAPSHOT`
265
+ - `AMBIGUOUS_REF`
266
+
267
+ ### Runtime Notes
268
+
269
+ - Managed profile mode is the default backend.
270
+ - Extension mode is the preferred real-Chrome backend when connected and healthy.
271
+ - Driver rebinding happens only at safe idle points and is reported as `state_reset`.
272
+ - `runtime.timeout_seconds` is the total wall-clock timeout for one automation run in the automation service.
273
+
274
+ ## Documentation
275
+
276
+ - Repo navigation and subsystem ownership: [`AGENTS.md`](AGENTS.md)
277
+ - Installed-user guide: [`docs/installed-with-uv.md`](docs/installed-with-uv.md)
278
+ - Uninstall and cleanup guide: [`docs/uninstall.md`](docs/uninstall.md)
279
+ - Explore-to-task skill: [`skills/browser-cli-explore-delivery/SKILL.md`](skills/browser-cli-explore-delivery/SKILL.md)
280
+ - Smoke checklist: [`docs/smoke-checklist.md`](docs/smoke-checklist.md)
281
+
282
+ ## Testing
283
+
284
+ Run lint:
285
+
286
+ ```bash
287
+ ./scripts/lint.sh
288
+ ```
289
+
290
+ Run tests:
291
+
292
+ ```bash
293
+ ./scripts/test.sh
294
+ ```
295
+
296
+ Run guards:
297
+
298
+ ```bash
299
+ ./scripts/guard.sh
300
+ ```
301
+
302
+ Run the full local validation flow:
303
+
304
+ ```bash
305
+ ./scripts/check.sh
306
+ ```
307
+
308
+ Fast Python 3.10 compatibility check:
309
+
310
+ ```bash
311
+ uv run python scripts/guards/python_compatibility.py
312
+ ```
313
+
314
+ When the runtime behaves unexpectedly, use:
315
+
316
+ ```bash
317
+ browser-cli status
318
+ browser-cli reload
319
+ browser-cli status
320
+ ```
321
+
322
+ The integration coverage is fixture-driven and local-first. It exercises:
323
+
324
+ - navigation, tabs, and history
325
+ - snapshot and rendered HTML capture
326
+ - semantic ref reconstruction after DOM re-render
327
+ - stale and ambiguous ref failures
328
+ - iframe refs
329
+ - ref-driven element actions
330
+ - console, network, dialogs, trace, video, screenshot, and PDF
331
+ - cookies, storage save/load, and `X_AGENT_ID` isolation
332
+ - task runtime and automation publishing/service flows
333
+
334
+ ## Acknowledgements
335
+
336
+ This project is deeply inspired by
337
+ [**bridgic-browser**](https://github.com/bitsky-tech/bridgic-browser).
338
+ Browser CLI keeps the semantic ref and daemon-backed strengths while pushing the
339
+ product toward a CLI-first, agent-first surface with reusable task and
340
+ automation layers.
@@ -0,0 +1,104 @@
1
+ browser_cli/__init__.py,sha256=dV8xLFUx38KwAKZDTIMJlQKA47F0-777sP4SrNS29Vg,132
2
+ browser_cli/constants.py,sha256=7CE1WX0PDWDhmuNll5_rTMdBA8HN4dnycaaKJ22D88g,3435
3
+ browser_cli/error_codes.py,sha256=3UxVlXBslM0M_epDjpdMJ3n7sbs6PMij9dfbVuddUMU,1116
4
+ browser_cli/errors.py,sha256=KNA3Q5BgySoTiR5PwNSg2DgCSYE9HqZ6f_LIl6lJG-8,5368
5
+ browser_cli/exit_codes.py,sha256=EjCM00q-Kic6JFfo70YP_PRlgLo6e8I4IKxQApph0LM,169
6
+ browser_cli/network.py,sha256=zUDuYH1rqrJvkn_7QvKUhNeA7LQsNSFLrmECP1ElswY,5212
7
+ browser_cli/actions/__init__.py,sha256=WGYAamAASlEsuMu4pkgi6FMe_oVljbyqTHVdc0MdyiM,153
8
+ browser_cli/actions/cli_specs.py,sha256=pFVknSddt9yiN1_Yulv5myJz2jg_2_ulOQLPWWlmKvM,28295
9
+ browser_cli/agent_scope/__init__.py,sha256=w6J5mBNX0SoNMt2hKiiu4eLl-X8M27UHYneiEXigRAw,312
10
+ browser_cli/automation/__init__.py,sha256=PZx6zb2zAsq9P06cmUTTILd104_WJIa6cxLN9XE65a0,321
11
+ browser_cli/automation/hooks.py,sha256=PL1lG3Oz4K5t0TynGDAdZA96o9olqYAt1MXbv2tIDMw,1139
12
+ browser_cli/automation/loader.py,sha256=4XwqHNJ8di3HXjH1mJHcYQ_WBVs5BSWTKwFjm_iBWac,5296
13
+ browser_cli/automation/models.py,sha256=K20iNXhb0BeW13y_6CSlG2KGUoeOV3Sw6y6grpJiYw8,3552
14
+ browser_cli/automation/projections.py,sha256=Z_brRjB7MU6N_XmQYlBrCOdVIlgAvtSIqNaB9cjtxQA,11029
15
+ browser_cli/automation/publisher.py,sha256=G3bsTf25RKn-WZb0kVxl0yw2gIi4MvKqLSANxpa1UWA,4687
16
+ browser_cli/automation/toml.py,sha256=oYkkYaQuQAcZZ8nMpWnJ2S93y0OgK27kAKyOBUjpOSc,1128
17
+ browser_cli/automation/api/__init__.py,sha256=PZWZP4p4Q6Fextd3cB0UWkG4ZhtpnpdhSTSCZUrCi_c,196
18
+ browser_cli/automation/api/server.py,sha256=wCNGI_1x39_MouFDn_CUUTbujUaGlKpjiHndNH1O3pU,12948
19
+ browser_cli/automation/persistence/__init__.py,sha256=Q8kZbALR1cT0f4-jlVcG3uowNFgNpG7GWFiCHqiw8tw,139
20
+ browser_cli/automation/persistence/store.py,sha256=_0TYLNo5r2uqoRImeN7SXABuibNfrbixpGWXa0gdigQ,28684
21
+ browser_cli/automation/scheduler/__init__.py,sha256=koeeZNJgYZqGRQTqmiXbdpCRQ0VfswX9KUNayz8IG8c,187
22
+ browser_cli/automation/scheduler/schedule.py,sha256=Nzdes5t3B7bxsl0eBF3BlCrz7H7mMrVMBfqgjg-vDP8,4399
23
+ browser_cli/automation/service/__init__.py,sha256=WnT7GROp6uXN_x0-vSzRHn0AKPNBQHB-S9_t8dIntyE,239
24
+ browser_cli/automation/service/__main__.py,sha256=jYofftW_uqeSvTlnN3UlqfaX97L5rbqJPyyOIN6SxVw,2116
25
+ browser_cli/automation/service/client.py,sha256=swHHyZ_W2G1M2Bz-XO7z9QsPKc70t5hFLrgMqKpo1HQ,7625
26
+ browser_cli/automation/service/runtime.py,sha256=cYQaILCwDLh2J9T65qBO8zcJlewNpcY_MeJ9_nDBxOs,15232
27
+ browser_cli/automation/web/__init__.py,sha256=2BLt8Xn4_pGDKb7dckSGwRfmXof6C_EOw1uRKBCM3X4,130
28
+ browser_cli/automation/web/assets.py,sha256=d_nLkGMq73OZqlJt8YoY1iux4LZcGs7PU752xf7Zdw8,15216
29
+ browser_cli/browser/__init__.py,sha256=XFIcTG1xSCg0AkOoOQKuiFGQjulmXljb23E7gFGUS1c,20
30
+ browser_cli/browser/models.py,sha256=pEhmCz4Ri_N6zCU0crtxb9GxITdiUasBKKCcBJvKUjs,1261
31
+ browser_cli/browser/network_capture.py,sha256=OyPrMSqRBABslzqNjCeRkqrKNfBeLm_d1aKr8ulOPJU,12912
32
+ browser_cli/browser/service.py,sha256=-MUWsYsjZldqLDaU1rkroBYAXFPf4Odg_wiK_78ywRw,61286
33
+ browser_cli/browser/session.py,sha256=FsgHanIAoMPcOIcWobT56FYJKi9yjZqikXpEaKHfXR0,6047
34
+ browser_cli/browser/snapshot.py,sha256=Erdrz8CVuuOOeAKrYb5O4hrkJTR35YWEZEYv6Bd6auU,846
35
+ browser_cli/browser/stealth.py,sha256=JjiLuMmdMM3bt-2CNAzyogxwFtxq9TlCaQ2w6eAWbGI,15441
36
+ browser_cli/cli/__init__.py,sha256=C63yWifzpA0IV7YWDatpAdrhoV8zjqxAKv0xMf09VdM,19
37
+ browser_cli/cli/error_hints.py,sha256=rTTFRR7vjI7ymLmjCftRtirGbN0deLz7KIPxCPPCNrU,1095
38
+ browser_cli/cli/main.py,sha256=EHNxluxz9kQjLGq9Vupg77Lu6VxwFkv3vha1Mz1dfvo,11914
39
+ browser_cli/commands/__init__.py,sha256=xY7gT8dAf5LRE__nl7vgO013uv09LKUNkyCUhO4ItZA,24
40
+ browser_cli/commands/action.py,sha256=BofzyMkdgEhMxvDAAjhnx51VFeEPstS-wjhvj8LnBVY,846
41
+ browser_cli/commands/automation.py,sha256=KuvD7MiMCbp9E2Elul0rzM3noSEhS1Qta1higYe8HyM,11508
42
+ browser_cli/commands/doctor.py,sha256=N28xkTUv62S_LIw7eL6aUa0UcPWJWw3l7Gk6zOm_oVg,11872
43
+ browser_cli/commands/install_skills.py,sha256=wvy-oAtjnaDRQ0hYIFMCeayGJneMaxLxl0rhE4G7Myk,4602
44
+ browser_cli/commands/paths.py,sha256=I0iEYDVA9CqEjajs0VoDk0PD8BV-AGCF-yohkOcNjwE,1149
45
+ browser_cli/commands/read.py,sha256=YQ9GAdHYmTdycI-n9qtTT8f_DzOHjcImmvpGUyTue48,985
46
+ browser_cli/commands/reload.py,sha256=yLh9jHIuZmtzPmLw6nIYQG5u0bSiCUIcdjAtrbEIsoM,1510
47
+ browser_cli/commands/status.py,sha256=7y5Hul-azaDKNUwU3B2K980RE9GP1XqiOEQvHj8BYzs,17530
48
+ browser_cli/commands/task.py,sha256=8FMLESWN6m374nOM6w8TN28HB40-RKaVeiHw5AOVOyQ,2789
49
+ browser_cli/daemon/__init__.py,sha256=slz_-GNY0RscOHVsDtx5UKlyf3sET8YTDbYmpP2ru6M,22
50
+ browser_cli/daemon/__main__.py,sha256=yb-5_LuO-_hhpipVRiXkwEFVCfhVTYlaET99eiuc2Is,748
51
+ browser_cli/daemon/app.py,sha256=FTCBtxDTvdoH_cLbunVw4Kq97SXgtix0wiZxizV5XjI,40646
52
+ browser_cli/daemon/browser_service.py,sha256=iDUJqI5FiWKaE9lx8VOYBdEc2UneSCAVKATOkNKFONg,39999
53
+ browser_cli/daemon/client.py,sha256=nswZS7_IkkkOOhUCJqX17uRI02Qzgn1IneiCPTqeSE4,8582
54
+ browser_cli/daemon/models.py,sha256=DflVZxP0fjCZUznKt2DIxQbBoFb6_2nWgVMeR0FWACw,1726
55
+ browser_cli/daemon/runtime_presentation.py,sha256=HqS1vRqI3SQHMaCYPcL8_DIbxDHs--eEzBGFO9k1g5s,7130
56
+ browser_cli/daemon/server.py,sha256=i2U55zaDCyye610D_Yb-CRleVUuFGDiZ-2gRd3mFBGU,3730
57
+ browser_cli/daemon/state.py,sha256=NSOyHdu2VnFDpZYLDr4x9XduOIdd8YylaaXE0JOBX70,373
58
+ browser_cli/daemon/transport.py,sha256=0YtCPkPMDx6QNb6xJBrgTMGNs-Lmn4qoRMqVWbX4WOw,2195
59
+ browser_cli/drivers/__init__.py,sha256=XfqpEmdhwAol47FZY2YSpPU02vKCwiLQ965HHhsB0eg,178
60
+ browser_cli/drivers/base.py,sha256=RqWZcOAf9A-1jy6ef_8yXPeEtuCW4GMhrjH9-Qto2q0,10466
61
+ browser_cli/drivers/extension_driver.py,sha256=CCUShDa2MLGlooTolnCIWMWJv5HVaWoxeqs5GFmZV7s,1245
62
+ browser_cli/drivers/models.py,sha256=cqJQTxOShDtBwOW-HEnipIGtDw4boP1AMannilW-z44,418
63
+ browser_cli/drivers/playwright_driver.py,sha256=tp6brPS4nFefPBPBzAQkLlHZRfKlKAblwykMtBDwh6E,17295
64
+ browser_cli/drivers/_extension/__init__.py,sha256=ik-vdev5VcrX7hwxXsaU46_hhx8Y_eFHgz0695M6Uws,64
65
+ browser_cli/drivers/_extension/artifact_actions.py,sha256=3Lp2IcT5A4oFf9VG0up875s0hdQ78SoeBtVIdgDyVdw,5887
66
+ browser_cli/drivers/_extension/dialog_actions.py,sha256=VcTVQhNrlcWfeyfGXA93KKIgzro9PBSArFUWGS6Zqw0,1064
67
+ browser_cli/drivers/_extension/input_actions.py,sha256=3qmlEfqwKDfu0lep98trL4-5avi7_yhG7-Xhew1a9Z4,2547
68
+ browser_cli/drivers/_extension/locator_actions.py,sha256=PGT0ElqPD2pxP4wDYkHfLM4kRTkllUGaXvqf7I0gX40,4353
69
+ browser_cli/drivers/_extension/observe_actions.py,sha256=658iKbS5PIyo3gxnsYsSsc_Q6mX7U0Gfi_7tG6vD5ok,9633
70
+ browser_cli/drivers/_extension/page_actions.py,sha256=Wi4esVPdTSc_nh-Ch_4cS8ekfIommg5mg9f5KbW1ado,7521
71
+ browser_cli/drivers/_extension/state_actions.py,sha256=SNn0HL4_MnM245FA0k9AQ8ekWy0rjBaDBDgZuGcsHQs,5158
72
+ browser_cli/extension/__init__.py,sha256=QrD7T0siI5_LQYoHY4yoqHTD2KDsPJfefIZTYJYQHSo,820
73
+ browser_cli/extension/protocol.py,sha256=MSjq-PmoFzlWJ0njK9TjpbG5BABTEBxOL0GL7Vdsw7c,6689
74
+ browser_cli/extension/session.py,sha256=4SSSlpVf4WG0CE4DcC02bdpxNE7hP1eORTVj3Rl3j_Y,15385
75
+ browser_cli/outputs/__init__.py,sha256=C1MTack8cTRZruDmdMWgSOgGt4AboP7tuaD0LL3hyYc,22
76
+ browser_cli/outputs/json.py,sha256=L7VjPYKW5IXiUzazHwhxxtnaz0QIHgn3fYOx7Bm5jaM,256
77
+ browser_cli/outputs/render.py,sha256=SkPnvcLFv1zNFDF17NMv54OS13rgC_BPycRUj4p4DPY,123
78
+ browser_cli/packaged_skills/__init__.py,sha256=ks6oug0LmqMDdPfO6Ov0cRLxeI0cWszfB6eNGEULwtw,75
79
+ browser_cli/packaged_skills/browser-cli-converge/SKILL.md,sha256=iD401CYPRBDnd-wgQ5jmFaeyyMzgYJfguLDiXlwc6Zk,1984
80
+ browser_cli/packaged_skills/browser-cli-delivery/SKILL.md,sha256=BOm-iAUWf2Ea_HDxpDK7y_slTjuD9G2MDR4dNm5LYlA,2084
81
+ browser_cli/packaged_skills/browser-cli-explore/SKILL.md,sha256=499mbx9Q0qpILgvDw_on-RR12Y3abT8mDWIFuNFgkiI,2888
82
+ browser_cli/profiles/__init__.py,sha256=9qIRP8LNyuM8KR-gkltwY_oB87chWVwqoJckOl8MzuM,32
83
+ browser_cli/profiles/discovery.py,sha256=fzGacxy4cX_H1MEJfq1Ym76JzGqlrvl8yv9r9vBWvQQ,6350
84
+ browser_cli/refs/__init__.py,sha256=mg7mRu1mSeZ5wkxOiSA-96aQuuty6mfNLG4onF76XdE,577
85
+ browser_cli/refs/generator.py,sha256=lN0IPtLlC8FJNiRJCNO35d57d6dksbTdNgDPPljhHWI,14460
86
+ browser_cli/refs/models.py,sha256=IdwFjxVWvWkw7vrI8L1_zytA3XcdIv8N5vmQvzZDhH0,3958
87
+ browser_cli/refs/registry.py,sha256=m21JTYumMeisUvDg0KNvd95vXqFtm2kHPuKslGpiBnk,1496
88
+ browser_cli/refs/resolver.py,sha256=lpeFZf1zuVqtwPt3AWRGRp1cGRrd_Ie7NlSyOFt9V8c,7199
89
+ browser_cli/tabs/__init__.py,sha256=7zHqQDDNXPphBleaH4Dnkw1IcX7MrJagL9xpQ3SdaJo,141
90
+ browser_cli/tabs/registry.py,sha256=TUPh_Us4RcQFqDodGuIsxkB8NJ2krV1ITjrUQrxEerM,10549
91
+ browser_cli/task_runtime/__init__.py,sha256=krLM88pZ4YV__FByCLX4YcBZ9oWOroh-w9A9-3tYzWg,777
92
+ browser_cli/task_runtime/client.py,sha256=ueUPwY4lhW_5DcYku5yNpXw16OUF9k0HpPTBB2Pd0OM,3905
93
+ browser_cli/task_runtime/entrypoint.py,sha256=zKcPdfRy9Y0zoTjQmRIv_RIB3dVxuxP7JXSzpynouWU,4317
94
+ browser_cli/task_runtime/errors.py,sha256=L8B9NlELAisQjNQUxpJaqTy8oGvJMED-RocOgiThK2I,463
95
+ browser_cli/task_runtime/flow.py,sha256=b3yupCcLp-dH_vh1kjzbNl9ZjkKpj2iaRRni4OOqZPI,6555
96
+ browser_cli/task_runtime/models.py,sha256=0AP7ToTOqFs8IgSB_42zB1T-JJcDP7AM_-MtZOqbT_Q,3448
97
+ browser_cli/task_runtime/read.py,sha256=F3Y4GWw3QESz0dZLfv9MJUeolAh8YSlHkVcNyf9eX5Q,2442
98
+ browser_cli/task_runtime/templates.py,sha256=cWg8ghaANE268zf5KpO_Q-Qsyyph5gM0ZHA2gUchVI4,1380
99
+ browser_control_and_automation_cli-0.1.1.dev3.dist-info/licenses/LICENSE,sha256=dYrVmpLKY_aBoSAkGSusgdqiIj3NsW9eJlH6HEp6twY,1081
100
+ browser_control_and_automation_cli-0.1.1.dev3.dist-info/METADATA,sha256=6RjQMF3wD7EiX8r4ff5GVLMqS8ttFj_0leua6eXdG8k,10541
101
+ browser_control_and_automation_cli-0.1.1.dev3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
102
+ browser_control_and_automation_cli-0.1.1.dev3.dist-info/entry_points.txt,sha256=2yT887bCyJf1EZKtifGgtS7BPoacjaGW0RzNpi3FPB4,58
103
+ browser_control_and_automation_cli-0.1.1.dev3.dist-info/top_level.txt,sha256=Kd1EPvmHsnJMydx54-fKFcKiRz9UXnHGAyrcaHjB86c,12
104
+ browser_control_and_automation_cli-0.1.1.dev3.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ browser-cli = browser_cli.cli.main:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 browser-cli contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.