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.
- browser_cli/__init__.py +7 -0
- browser_cli/actions/__init__.py +5 -0
- browser_cli/actions/cli_specs.py +868 -0
- browser_cli/agent_scope/__init__.py +14 -0
- browser_cli/automation/__init__.py +11 -0
- browser_cli/automation/api/__init__.py +5 -0
- browser_cli/automation/api/server.py +321 -0
- browser_cli/automation/hooks.py +42 -0
- browser_cli/automation/loader.py +134 -0
- browser_cli/automation/models.py +127 -0
- browser_cli/automation/persistence/__init__.py +5 -0
- browser_cli/automation/persistence/store.py +682 -0
- browser_cli/automation/projections.py +279 -0
- browser_cli/automation/publisher.py +153 -0
- browser_cli/automation/scheduler/__init__.py +5 -0
- browser_cli/automation/scheduler/schedule.py +113 -0
- browser_cli/automation/service/__init__.py +8 -0
- browser_cli/automation/service/__main__.py +64 -0
- browser_cli/automation/service/client.py +232 -0
- browser_cli/automation/service/runtime.py +388 -0
- browser_cli/automation/toml.py +35 -0
- browser_cli/automation/web/__init__.py +5 -0
- browser_cli/automation/web/assets.py +377 -0
- browser_cli/browser/__init__.py +1 -0
- browser_cli/browser/models.py +44 -0
- browser_cli/browser/network_capture.py +392 -0
- browser_cli/browser/service.py +1519 -0
- browser_cli/browser/session.py +158 -0
- browser_cli/browser/snapshot.py +35 -0
- browser_cli/browser/stealth.py +450 -0
- browser_cli/cli/__init__.py +1 -0
- browser_cli/cli/error_hints.py +26 -0
- browser_cli/cli/main.py +298 -0
- browser_cli/commands/__init__.py +1 -0
- browser_cli/commands/action.py +25 -0
- browser_cli/commands/automation.py +304 -0
- browser_cli/commands/doctor.py +336 -0
- browser_cli/commands/install_skills.py +138 -0
- browser_cli/commands/paths.py +31 -0
- browser_cli/commands/read.py +33 -0
- browser_cli/commands/reload.py +51 -0
- browser_cli/commands/status.py +444 -0
- browser_cli/commands/task.py +71 -0
- browser_cli/constants.py +97 -0
- browser_cli/daemon/__init__.py +1 -0
- browser_cli/daemon/__main__.py +34 -0
- browser_cli/daemon/app.py +941 -0
- browser_cli/daemon/browser_service.py +998 -0
- browser_cli/daemon/client.py +280 -0
- browser_cli/daemon/models.py +63 -0
- browser_cli/daemon/runtime_presentation.py +167 -0
- browser_cli/daemon/server.py +103 -0
- browser_cli/daemon/state.py +15 -0
- browser_cli/daemon/transport.py +77 -0
- browser_cli/drivers/__init__.py +6 -0
- browser_cli/drivers/_extension/__init__.py +1 -0
- browser_cli/drivers/_extension/artifact_actions.py +154 -0
- browser_cli/drivers/_extension/dialog_actions.py +35 -0
- browser_cli/drivers/_extension/input_actions.py +63 -0
- browser_cli/drivers/_extension/locator_actions.py +100 -0
- browser_cli/drivers/_extension/observe_actions.py +285 -0
- browser_cli/drivers/_extension/page_actions.py +210 -0
- browser_cli/drivers/_extension/state_actions.py +134 -0
- browser_cli/drivers/base.py +391 -0
- browser_cli/drivers/extension_driver.py +33 -0
- browser_cli/drivers/models.py +21 -0
- browser_cli/drivers/playwright_driver.py +499 -0
- browser_cli/error_codes.py +27 -0
- browser_cli/errors.py +146 -0
- browser_cli/exit_codes.py +9 -0
- browser_cli/extension/__init__.py +32 -0
- browser_cli/extension/protocol.py +222 -0
- browser_cli/extension/session.py +393 -0
- browser_cli/network.py +147 -0
- browser_cli/outputs/__init__.py +1 -0
- browser_cli/outputs/json.py +10 -0
- browser_cli/outputs/render.py +7 -0
- browser_cli/packaged_skills/__init__.py +1 -0
- browser_cli/packaged_skills/browser-cli-converge/SKILL.md +62 -0
- browser_cli/packaged_skills/browser-cli-delivery/SKILL.md +61 -0
- browser_cli/packaged_skills/browser-cli-explore/SKILL.md +77 -0
- browser_cli/profiles/__init__.py +1 -0
- browser_cli/profiles/discovery.py +185 -0
- browser_cli/refs/__init__.py +17 -0
- browser_cli/refs/generator.py +386 -0
- browser_cli/refs/models.py +127 -0
- browser_cli/refs/registry.py +51 -0
- browser_cli/refs/resolver.py +214 -0
- browser_cli/tabs/__init__.py +5 -0
- browser_cli/tabs/registry.py +283 -0
- browser_cli/task_runtime/__init__.py +31 -0
- browser_cli/task_runtime/client.py +107 -0
- browser_cli/task_runtime/entrypoint.py +110 -0
- browser_cli/task_runtime/errors.py +17 -0
- browser_cli/task_runtime/flow.py +171 -0
- browser_cli/task_runtime/models.py +97 -0
- browser_cli/task_runtime/read.py +71 -0
- browser_cli/task_runtime/templates.py +58 -0
- browser_control_and_automation_cli-0.1.1.dev3.dist-info/METADATA +340 -0
- browser_control_and_automation_cli-0.1.1.dev3.dist-info/RECORD +104 -0
- browser_control_and_automation_cli-0.1.1.dev3.dist-info/WHEEL +5 -0
- browser_control_and_automation_cli-0.1.1.dev3.dist-info/entry_points.txt +2 -0
- browser_control_and_automation_cli-0.1.1.dev3.dist-info/licenses/LICENSE +21 -0
- 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,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.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
browser_cli
|