@omniaibot/win-x64 1.6.7 → 1.6.11

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 (47) hide show
  1. package/bin/omnibot-windows-x64/VERSION +1 -1
  2. package/bin/omnibot-windows-x64/_asyncio.pyd +0 -0
  3. package/bin/omnibot-windows-x64/_bz2.pyd +0 -0
  4. package/bin/omnibot-windows-x64/_cffi_backend.pyd +0 -0
  5. package/bin/omnibot-windows-x64/_ctypes.pyd +0 -0
  6. package/bin/omnibot-windows-x64/_decimal.pyd +0 -0
  7. package/bin/omnibot-windows-x64/_hashlib.pyd +0 -0
  8. package/bin/omnibot-windows-x64/_lzma.pyd +0 -0
  9. package/bin/omnibot-windows-x64/_multiprocessing.pyd +0 -0
  10. package/bin/omnibot-windows-x64/_overlapped.pyd +0 -0
  11. package/bin/omnibot-windows-x64/_queue.pyd +0 -0
  12. package/bin/omnibot-windows-x64/_socket.pyd +0 -0
  13. package/bin/omnibot-windows-x64/_ssl.pyd +0 -0
  14. package/bin/omnibot-windows-x64/_uuid.pyd +0 -0
  15. package/bin/omnibot-windows-x64/_wmi.pyd +0 -0
  16. package/bin/omnibot-windows-x64/ada92cb5d92a588d1b93__mypyc.pyd +0 -0
  17. package/bin/omnibot-windows-x64/certifi/cacert.pem +0 -70
  18. package/bin/omnibot-windows-x64/charset_normalizer/cd.pyd +0 -0
  19. package/bin/omnibot-windows-x64/charset_normalizer/md.pyd +0 -0
  20. package/bin/omnibot-windows-x64/cryptography/hazmat/bindings/_rust.pyd +0 -0
  21. package/bin/omnibot-windows-x64/libcrypto-3-x64.dll +0 -0
  22. package/bin/omnibot-windows-x64/libffi-8.dll +0 -0
  23. package/bin/omnibot-windows-x64/libssl-3-x64.dll +0 -0
  24. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/SKILL.md +310 -220
  25. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/anti-patterns.md +65 -57
  26. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/command-reference.md +743 -709
  27. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/css-only-dropdown-js.md +50 -50
  28. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/debugging-and-evidence.md +135 -129
  29. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/fallback-operations.md +196 -177
  30. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/operation-patterns.md +496 -432
  31. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/runtime-and-status.md +124 -121
  32. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/session-and-tabs.md +164 -164
  33. package/bin/omnibot-windows-x64/omnibot/sop/tmwebdriver_sop.md +128 -128
  34. package/bin/omnibot-windows-x64/omnibot/sop/vue3_component_sop.md +163 -163
  35. package/bin/omnibot-windows-x64/omnibot-windows-x64.exe +0 -0
  36. package/bin/omnibot-windows-x64/pyexpat.pyd +0 -0
  37. package/bin/omnibot-windows-x64/python3.dll +0 -0
  38. package/bin/omnibot-windows-x64/python313.dll +0 -0
  39. package/bin/omnibot-windows-x64/select.pyd +0 -0
  40. package/bin/omnibot-windows-x64/unicodedata.pyd +0 -0
  41. package/bin/omnibot-windows-x64/vcruntime140.dll +0 -0
  42. package/bin/omnibot-windows-x64/vcruntime140_1.dll +0 -0
  43. package/package.json +1 -1
  44. package/bin/omnibot-windows-x64/81d243bd2c585b0f4821__mypyc.pyd +0 -0
  45. package/bin/omnibot-windows-x64/libcrypto-3.dll +0 -0
  46. package/bin/omnibot-windows-x64/libssl-3.dll +0 -0
  47. package/bin/omnibot-windows-x64/python312.dll +0 -0
@@ -1,709 +1,743 @@
1
- # Omnibot Command Reference
2
-
3
- This is a lookup table, not a behavior guide. Choose behavior from `operation-patterns.md`, use `session-and-tabs.md` for targeting, and use `fallback-operations.md` before dropping to lower tiers.
4
-
5
- Unless marked as discovery, runtime, or tab creation, page-state examples assume `OMNIBOT_SESSION_TOKEN=<workflow>` and `--tab-id <TAB_ID>`.
6
-
7
- ## Runtime & Status
8
-
9
- ### doctor
10
-
11
- Purpose: Check daemon and browser extension health.
12
-
13
- ```bash
14
- omnibot doctor
15
- ```
16
-
17
- Preferred pattern: See `runtime-and-status.md#startup-check`.
18
- Fallback relation: Not a fallback command.
19
-
20
- ### status
21
-
22
- Purpose: Show daemon status only (lighter than `doctor`).
23
-
24
- ```bash
25
- omnibot status
26
- ```
27
-
28
- Preferred pattern: See `runtime-and-status.md#daemon-lifecycle`.
29
- Fallback relation: Not a fallback command.
30
-
31
- ### start
32
-
33
- Purpose: Start the daemon in the background.
34
-
35
- ```bash
36
- omnibot start
37
- ```
38
-
39
- Equivalent to: `omnibot daemon start`
40
-
41
- ### stop
42
-
43
- Purpose: Stop the running daemon.
44
-
45
- ```bash
46
- omnibot stop
47
- ```
48
-
49
- Equivalent to: `omnibot daemon stop`
50
-
51
- ### run
52
-
53
- Purpose: Run the daemon in the foreground.
54
-
55
- ```bash
56
- omnibot run
57
- ```
58
-
59
- Equivalent to: `omnibot daemon run`
60
-
61
- ### tabs
62
-
63
- Purpose: List connected browser tabs and discover tab ids.
64
-
65
- ```bash
66
- omnibot tabs
67
- ```
68
-
69
- Preferred pattern: See `session-and-tabs.md#tab-explicit`.
70
- Fallback relation: Not a fallback command.
71
-
72
- ### license status
73
-
74
- Purpose: Check license state.
75
-
76
- ```bash
77
- omnibot license status
78
- ```
79
-
80
- Preferred pattern: See `runtime-and-status.md#startup-check`.
81
- Fallback relation: Not a fallback command.
82
-
83
- ### version
84
-
85
- Purpose: Print the installed omnibot CLI version. No daemon or extension access required.
86
-
87
- ```bash
88
- omnibot version
89
- omnibot --version
90
- omnibot -V
91
- ```
92
-
93
- Output: a single line in the form `omnibot <version>` (for example `omnibot 1.6.3`).
94
- Preferred pattern: See `runtime-and-status.md#version`.
95
- Fallback relation: Not a fallback command.
96
-
97
- ## Reading
98
-
99
- ### read
100
-
101
- Purpose: Read clean rendered page text/Markdown from an existing tab or a temporary URL tab.
102
-
103
- ```bash
104
- OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --tab-id <TAB_ID>
105
- OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --timeout 120 --tab-id <TAB_ID>
106
- OMNIBOT_SESSION_TOKEN=research omnibot read --screens 3 https://example.com/article
107
- OMNIBOT_SESSION_TOKEN=research omnibot read --json --screens 5 --tab-id <TAB_ID>
108
- ```
109
-
110
- Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#extraction`.
111
- Fallback relation: Prefer for page content. Use `snapshot -i` when the next step is action planning, and `get`/`is`/`wait` for narrow state verification.
112
-
113
- ### snapshot -i
114
-
115
- Purpose: Read accessibility tree and produce actionable `@eN` refs.
116
-
117
- For visible custom comboboxes, `snapshot -i` may auto-probe options and append `[option]` refs under DOM Popup Controls. These refs remain actionable after the dropdown closes because they carry `openerSelector` internally.
118
-
119
- ```bash
120
- OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
121
- OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i -c -d 4 --tab-id <TAB_ID>
122
- OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i -s "#main" -u --tab-id <TAB_ID>
123
- ```
124
-
125
- Preferred pattern: See `operation-patterns.md#click`, `operation-patterns.md#fill`, and `session-and-tabs.md#ref-scope`.
126
- Fallback relation: Tier 2 after semantic find.
127
-
128
- ### get
129
-
130
- Purpose: Read one value or element state without dumping the page.
131
-
132
- ```bash
133
- OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
134
- OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
135
- OMNIBOT_SESSION_TOKEN=research omnibot get text "#main" --tab-id <TAB_ID>
136
- OMNIBOT_SESSION_TOKEN=research omnibot get html "#main" --tab-id <TAB_ID>
137
- OMNIBOT_SESSION_TOKEN=research omnibot get value "input[name=email]" --tab-id <TAB_ID>
138
- OMNIBOT_SESSION_TOKEN=research omnibot get attr "a.login" href --tab-id <TAB_ID>
139
- OMNIBOT_SESSION_TOKEN=research omnibot get count ".item" --tab-id <TAB_ID>
140
- OMNIBOT_SESSION_TOKEN=research omnibot get box "#submit" --tab-id <TAB_ID>
141
- OMNIBOT_SESSION_TOKEN=research omnibot get styles "#submit" --tab-id <TAB_ID>
142
- ```
143
-
144
- Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#extraction`.
145
- Fallback relation: Selector tier for reading; escalate only if unavailable.
146
-
147
- ### is
148
-
149
- Purpose: Check element state.
150
-
151
- ```bash
152
- OMNIBOT_SESSION_TOKEN=checkout omnibot is visible "#submit" --tab-id <TAB_ID>
153
- OMNIBOT_SESSION_TOKEN=checkout omnibot is enabled "#submit" --tab-id <TAB_ID>
154
- OMNIBOT_SESSION_TOKEN=checkout omnibot is checked "#agree" --tab-id <TAB_ID>
155
- ```
156
-
157
- Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#select--check`.
158
- Fallback relation: Prefer before visual or JavaScript checks.
159
-
160
- ## Actions
161
-
162
- ### click
163
-
164
- Purpose: Click an element by `@eN` ref or selector.
165
-
166
- ```bash
167
- OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
168
- OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4 --new-tab
169
- OMNIBOT_SESSION_TOKEN=checkout omnibot click "button[type=submit]" --tab-id <TAB_ID>
170
- ```
171
-
172
- Preferred pattern: See `operation-patterns.md#click`.
173
- Fallback relation: Tier 2 with refs, Tier 3 with selector.
174
-
175
- Combobox option refs: if `snapshot -i` shows `@eN [option] "OpenAI Chat"`, prefer `click @eN` over JavaScript fallback. Omnibot will reopen the owning combobox when needed.
176
-
177
- Rich text editor refs: if `snapshot -i` shows `@eN [richtext] "..." [contenteditable=true]` under `# DOM Rich Text Editors`, treat it as the article body editor. Use `fill @richtext` to replace the whole body (supports `\n\n` for paragraphs) and `type @richtext` to append. Do not fall back to `execute-js` first.
178
-
179
- ### dblclick
180
-
181
- Purpose: Double-click an element by `@eN` ref or selector.
182
-
183
- ```bash
184
- OMNIBOT_SESSION_TOKEN=editor omnibot dblclick --tab-id <TAB_ID> @e7
185
- ```
186
-
187
- Preferred pattern: See `operation-patterns.md#click`.
188
- Fallback relation: Prefer semantic or snapshot first; then selector.
189
-
190
- ### fill
191
-
192
- Purpose: Replace an input value.
193
-
194
- ```bash
195
- OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
196
- OMNIBOT_SESSION_TOKEN=checkout omnibot fill "input[name=email]" "a@b.com" --tab-id <TAB_ID>
197
- ```
198
-
199
- Preferred pattern: See `operation-patterns.md#fill`.
200
- Fallback relation: Tier 2 with refs, Tier 3 with selector.
201
-
202
- Rich text body editors (ProseMirror/Quill/Draft.js/Slate/Toutiao article body): if the target is an `@eN [richtext]` ref, `fill` writes through a dedicated contenteditable path that clears the previous body and dispatches `input`/`change` events. Split paragraphs with an empty line:
203
-
204
- ```bash
205
- OMNIBOT_SESSION_TOKEN=editor omnibot fill --tab-id <TAB_ID> @eN "First paragraph.\n\nSecond paragraph."
206
- ```
207
-
208
- Raw selector fallback is supported for selectors that look like a rich editor (e.g. `[contenteditable="true"]`, `.ProseMirror`, `.ql-editor`).
209
-
210
- ### type
211
-
212
- Purpose: Type text into an element.
213
-
214
- ```bash
215
- OMNIBOT_SESSION_TOKEN=search omnibot type --tab-id <TAB_ID> @e3 "omnibot"
216
- ```
217
-
218
- Preferred pattern: See `operation-patterns.md#fill`.
219
- Fallback relation: Use after fill is not appropriate or focus is needed.
220
-
221
- For `@eN [richtext]` article body editors, `type` appends at the cursor position. Click the `@richtext` ref first to focus the editor.
222
-
223
- ### press
224
-
225
- Purpose: Press a key in the target tab.
226
-
227
- ```bash
228
- OMNIBOT_SESSION_TOKEN=search omnibot press Enter --tab-id <TAB_ID>
229
- ```
230
-
231
- Preferred pattern: See `operation-patterns.md#fill` and `operation-patterns.md#wait`.
232
- Fallback relation: Not a fallback by itself; verify after pressing.
233
-
234
- ### hover
235
-
236
- Purpose: Hover an element by ref or selector.
237
-
238
- ```bash
239
- OMNIBOT_SESSION_TOKEN=menu omnibot hover --tab-id <TAB_ID> @e5
240
- ```
241
-
242
- Preferred pattern: Observe menu state, hover, then verify visible options.
243
- Fallback relation: Use mouse move only if hover fails.
244
-
245
- ### focus
246
-
247
- Purpose: Focus an element by selector.
248
-
249
- ```bash
250
- OMNIBOT_SESSION_TOKEN=form omnibot focus "input[name=email]" --tab-id <TAB_ID>
251
- ```
252
-
253
- Preferred pattern: See `operation-patterns.md#fill`.
254
- Fallback relation: Selector tier before keyboard/type fallback.
255
-
256
- ### select
257
-
258
- Purpose: Select an option in a dropdown.
259
-
260
- ```bash
261
- OMNIBOT_SESSION_TOKEN=form omnibot select @e5 "US" --tab-id <TAB_ID>
262
- ```
263
-
264
- Preferred pattern: See `operation-patterns.md#select--check`.
265
- Fallback relation: Prefer refs/selectors before JavaScript value changes. For custom comboboxes, first check whether `snapshot -i` exposes auto-probed option refs and click `@option`. For CSS-only dropdowns whose options are still absent or whose refs fail verification, see `fallback-operations.md#css-only-dropdown-javascript-fallback`.
266
-
267
- ### check / uncheck
268
-
269
- Purpose: Set checkbox state.
270
-
271
- ```bash
272
- OMNIBOT_SESSION_TOKEN=form omnibot check @e6 --tab-id <TAB_ID>
273
- OMNIBOT_SESSION_TOKEN=form omnibot uncheck @e6 --tab-id <TAB_ID>
274
- ```
275
-
276
- Preferred pattern: See `operation-patterns.md#select--check`.
277
- Fallback relation: Verify with `is checked` before and after.
278
-
279
- ### scroll / scrollintoview
280
-
281
- Purpose: Scroll page or element.
282
-
283
- ```bash
284
- OMNIBOT_SESSION_TOKEN=read omnibot scroll down 500 --tab-id <TAB_ID>
285
- OMNIBOT_SESSION_TOKEN=read omnibot scroll down 500 --selector "#list" --tab-id <TAB_ID>
286
- OMNIBOT_SESSION_TOKEN=read omnibot scrollintoview @e7 --tab-id <TAB_ID>
287
- ```
288
-
289
- Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#extraction`.
290
- Fallback relation: DOM or mouse scroll only after standard scroll fails.
291
-
292
- ### drag
293
-
294
- Purpose: Drag from one element to another.
295
-
296
- ```bash
297
- OMNIBOT_SESSION_TOKEN=board omnibot drag @e8 @e9 --tab-id <TAB_ID>
298
- ```
299
-
300
- Preferred pattern: Observe source and target, drag, verify position/state.
301
- Fallback relation: Mouse drag is Tier 5 if element drag fails.
302
-
303
- ### upload
304
-
305
- Purpose: Attach a local file to an `<input type="file">` element via CDP (`DOM.setFileInputFiles`), with nodeId and JS `DataTransfer` fallbacks.
306
-
307
- ```bash
308
- OMNIBOT_SESSION_TOKEN=form omnibot upload "input[type=file]" /path/to/file.png --tab-id <TAB_ID>
309
- ```
310
-
311
- Preferred pattern: See `operation-patterns.md#upload`.
312
- Fallback relation: The CLI falls back from CDP objectId → CDP nodeId → JS DataTransfer. Do not stack additional JavaScript fallbacks.
313
-
314
- ### keyboard / keydown / keyup
315
-
316
- Purpose: Send keyboard text or key state to the target tab when element-specific `type` or `press` is insufficient.
317
-
318
- ```bash
319
- OMNIBOT_SESSION_TOKEN=form omnibot keyboard type "hello" --tab-id <TAB_ID>
320
- OMNIBOT_SESSION_TOKEN=form omnibot keyboard inserttext "hello" --tab-id <TAB_ID>
321
- OMNIBOT_SESSION_TOKEN=form omnibot keydown Shift --tab-id <TAB_ID>
322
- OMNIBOT_SESSION_TOKEN=form omnibot keyup Shift --tab-id <TAB_ID>
323
- ```
324
-
325
- Preferred pattern: Prefer `fill`, `type`, and `press` first.
326
- Fallback relation: Keyboard commands are a focused fallback before mouse or JavaScript.
327
-
328
- ## Semantic Find
329
-
330
- Semantic find is Tier 1 for operating by meaning.
331
-
332
- ```bash
333
- OMNIBOT_SESSION_TOKEN=checkout omnibot find role button --name "Submit" --action click --tab-id <TAB_ID>
334
- OMNIBOT_SESSION_TOKEN=checkout omnibot find text "Sign in" --action click --tab-id <TAB_ID>
335
- OMNIBOT_SESSION_TOKEN=checkout omnibot find label "Email" --action fill --action-value "a@b.com" --tab-id <TAB_ID>
336
- OMNIBOT_SESSION_TOKEN=checkout omnibot find placeholder "Search" --action type --action-value "omnibot" --tab-id <TAB_ID>
337
- OMNIBOT_SESSION_TOKEN=checkout omnibot find testid submit-button --action click --tab-id <TAB_ID>
338
- OMNIBOT_SESSION_TOKEN=checkout omnibot find nth ".card" 2 --action click --tab-id <TAB_ID>
339
- ```
340
-
341
- Text-node precision: `find text` walks the DOM text nodes and marks the nearest visible container of the matching text, not the first ancestor whose `textContent` happens to include the needle. The matched offset/length is stored on the element, so `--action click` positions the mouse at the end of the matched text. Inside a `contenteditable` body (ProseMirror/Quill/etc.), the selection is collapsed right after the matched text and the editor is focused, so a follow-up image insertion lands at the intended paragraph instead of the editor root.
342
-
343
- Preferred pattern: See `operation-patterns.md#click` and `operation-patterns.md#fill`.
344
- Fallback relation: Tier 1. Explain failure before using refs, selectors, DOM, mouse, JavaScript, or CDP.
345
-
346
- ## Fallback Actions
347
-
348
- ### mouse
349
-
350
- Purpose: Coordinate-based mouse operations.
351
- Usage tier: Tier 5 fallback only.
352
-
353
- > **Development status:** The realistic trajectory mode (`mouse drag` without `--fast`) is experimental and has not been validated in production workflows. The trajectory parameters, step count, and timing are still being tuned. Use `--fast` for stable linear drags until the realistic mode is proven.
354
-
355
- ```bash
356
- OMNIBOT_SESSION_TOKEN=repair omnibot mouse click --x 100 --y 200 --tab-id <TAB_ID>
357
- OMNIBOT_SESSION_TOKEN=repair omnibot mouse click --x 100 --y 200 --click-count 2 --tab-id <TAB_ID>
358
- OMNIBOT_SESSION_TOKEN=repair omnibot mouse move --x 50 --y 60 --tab-id <TAB_ID>
359
- OMNIBOT_SESSION_TOKEN=repair omnibot mouse scroll --x 100 --y 200 --dy 500 --tab-id <TAB_ID>
360
- OMNIBOT_SESSION_TOKEN=repair omnibot mouse drag --from-x 10 --from-y 20 --to-x 100 --to-y 200 --tab-id <TAB_ID>
361
- ```
362
-
363
- `mouse drag` uses a realistic multi-step trajectory by default (70-110 interpolated points with easing, jitter, overshoot, and short random pauses). **This mode is experimental and not yet production-ready.** Optional tuning flags:
364
-
365
- ```bash
366
- omnibot mouse drag --from-x 633 --from-y 733 --to-x 706 --to-y 733 --duration-ms 700 --steps 90 --jitter 1 --overshoot 2 --tab-id <TAB_ID>
367
- ```
368
-
369
- Use `--fast` for the old linear 4-event drag (stable, recommended for production):
370
-
371
- ```bash
372
- omnibot mouse drag --from-x 0 --from-y 0 --to-x 100 --to-y 0 --fast --tab-id <TAB_ID>
373
- ```
374
-
375
- Preferred pattern: See `fallback-operations.md#mouse-fallback`.
376
- Fallback relation: After semantic, refs, selector, and DOM fail.
377
-
378
- ### verify
379
-
380
- Purpose: Inspect human-verification (captcha) widgets. Returns structured metadata (provider, type, action type, element boxes, coordinate mapping, and an optional panel screenshot) for an agent to solve. Does not solve captchas itself.
381
-
382
- > **Development status:** This command is experimental and in active development. It is not production-ready. Known limitations:
383
- > - Only NetEase Yidun (网易易盾) is supported; other captcha providers are not detected.
384
- > - DOM-based classification (`yidun_classes`) is best-effort and may report wrong types on newer widget versions.
385
- > - The `coordinate_map` panel-image-to-viewport scale assumes `Page.captureScreenshot` returns DPR-scaled device pixels; this has not been validated across all DPR and viewport combinations.
386
- > - Success/failure state detection (`state` field) from DOM classes is unreliable; always cross-check with a visual screenshot.
387
- > - There is no built-in captcha solver. External vision-model-based solving (e.g. via `--solver-command`) has shown insufficient accuracy for production-grade captcha solving on jigsaw-type captchas.
388
- > - Do not rely on this command for automated captcha bypass in production workflows.
389
-
390
- ```bash
391
- OMNIBOT_SESSION_TOKEN=verify omnibot verify inspect --tab-id <TAB_ID>
392
- OMNIBOT_SESSION_TOKEN=verify omnibot verify inspect --tab-id <TAB_ID> --no-image
393
- ```
394
-
395
- The agent workflow for slider captchas (experimental, not validated for production):
396
- 1. `verify inspect` get type, coordinate_map, panel image
397
- 2. Vision model identifies the gap/target position in the image
398
- 3. Convert panel screenshot coordinates to viewport coordinates using `coordinate_map.panel_image_to_viewport_scale_x/y`
399
- 4. `mouse drag` from slider handle to target
400
- 5. `verify inspect` or `screenshot` to verify result
401
-
402
- For click-sequence captchas (text/icon click):
403
- 1. `verify inspect` → get click area and image
404
- 2. Vision model identifies target coordinates in the image
405
- 3. Convert and execute `mouse click` for each target
406
-
407
- Batch scoring harness for NetEase Yidun trial pages (test-only):
408
-
409
- ```bash
410
- python3 tests/verify_workflow_matrix_test.py --iterations 50
411
- python3 tests/verify_workflow_matrix_test.py --case jigsaw --iterations 50 --solver-command './solver.py'
412
- ```
413
-
414
- Without `--solver-command`, the harness performs inspect-only sampling and saves panel images. With a solver command, it executes returned `drag` / `click` actions and writes JSON/TXT score reports.
415
-
416
- ### dom
417
-
418
- Purpose: Interact with visible DOM node ids returned by `dom visible`.
419
- Usage tier: Tier 4 fallback only.
420
-
421
- ```bash
422
- OMNIBOT_SESSION_TOKEN=repair omnibot dom visible --tab-id <TAB_ID>
423
- OMNIBOT_SESSION_TOKEN=repair omnibot dom click n1 --tab-id <TAB_ID>
424
- OMNIBOT_SESSION_TOKEN=repair omnibot dom dblclick n1 --tab-id <TAB_ID>
425
- OMNIBOT_SESSION_TOKEN=repair omnibot dom scroll n1 --dy 800 --tab-id <TAB_ID>
426
- ```
427
-
428
- Preferred pattern: See `fallback-operations.md#dom-fallback`.
429
- Fallback relation: After selector failure and before mouse fallback.
430
-
431
- ### execute-js
432
-
433
- Purpose: Run arbitrary JavaScript in the page.
434
- Usage tier: Tier 6 fallback only. Do not use first.
435
-
436
- ```bash
437
- OMNIBOT_SESSION_TOKEN=repair omnibot execute-js "return location.href" --tab-id <TAB_ID>
438
- OMNIBOT_SESSION_TOKEN=repair omnibot execute-js --file /tmp/repair.js --tab-id <TAB_ID>
439
- ```
440
-
441
- Preferred pattern: See `fallback-operations.md#javascript-fallback`.
442
- Fallback relation: After semantic, refs, selector, DOM, and mouse are insufficient. Valid examples include CSS-only dropdowns where the trigger exists but option refs are absent from `snapshot -i`.
443
-
444
- ### cdp
445
-
446
- Purpose: Send raw Chrome DevTools Protocol commands.
447
- Usage tier: Tier 7 fallback and inspection only.
448
-
449
- ```bash
450
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot cdp Runtime.evaluate '{"expression":"document.title"}' --tab-id <TAB_ID>
451
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot cdp DOM.getDocument '{"depth":1}' --tab-id <TAB_ID>
452
- ```
453
-
454
- Preferred pattern: See `fallback-operations.md#raw-cdp-fallback` and `debugging-and-evidence.md#cdp-inspection`.
455
- Fallback relation: Last resort.
456
-
457
- ## Navigation & Tabs
458
-
459
- ### navigate / open / goto
460
-
461
- Purpose: Navigate or open pages. New-tab forms return a tab id. Same-tab navigation requires an explicit target tab id. There is no CLI current-tab state.
462
-
463
- ```bash
464
- OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com
465
- OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com --same-tab --tab-id <TAB_ID>
466
- OMNIBOT_SESSION_TOKEN=research omnibot open https://example.com
467
- OMNIBOT_SESSION_TOKEN=research omnibot goto https://example.com --tab-id <TAB_ID>
468
- ```
469
-
470
- Preferred pattern: See `operation-patterns.md#navigation` and `session-and-tabs.md#tab-explicit`.
471
- Fallback relation: Verify with `get url --tab-id <TAB_ID>` before continuing.
472
-
473
- ### close / back / forward / reload / pushstate
474
-
475
- Purpose: Change tab lifecycle or history state.
476
-
477
- ```bash
478
- OMNIBOT_SESSION_TOKEN=research omnibot close <TAB_ID>
479
- OMNIBOT_SESSION_TOKEN=research omnibot back --tab-id <TAB_ID>
480
- OMNIBOT_SESSION_TOKEN=research omnibot forward --tab-id <TAB_ID>
481
- OMNIBOT_SESSION_TOKEN=research omnibot reload --tab-id <TAB_ID>
482
- OMNIBOT_SESSION_TOKEN=research omnibot pushstate /dashboard --tab-id <TAB_ID>
483
- ```
484
-
485
- Preferred pattern: See `operation-patterns.md#navigation`.
486
- Fallback relation: Verify URL or page state after the action.
487
-
488
- ### tab
489
-
490
- Purpose: Manage browser tabs.
491
-
492
- ```bash
493
- OMNIBOT_SESSION_TOKEN=research omnibot tab list
494
- OMNIBOT_SESSION_TOKEN=research omnibot tab new https://docs.example.com --label docs
495
- OMNIBOT_SESSION_TOKEN=research omnibot tab close docs
496
- ```
497
-
498
- Preferred pattern: See `session-and-tabs.md#tab-explicit`.
499
- Removed: `tab switch` and `tab focus` are no longer available. Use explicit `--tab-id` on every page-state command.
500
-
501
- ### window / frame
502
-
503
- Purpose: Manage windows and frames.
504
-
505
- ```bash
506
- OMNIBOT_SESSION_TOKEN=research omnibot window new
507
- OMNIBOT_SESSION_TOKEN=research omnibot frame main
508
- ```
509
-
510
- ## Waiting & Batch
511
-
512
- ### wait
513
-
514
- Purpose: Wait for time, selector, text, URL, load state, or JavaScript condition.
515
-
516
- ```bash
517
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#ready" --tab-id <TAB_ID>
518
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#spinner" --state hidden --tab-id <TAB_ID>
519
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --text "Welcome" --tab-id <TAB_ID>
520
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
521
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load domcontentloaded --tab-id <TAB_ID>
522
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load networkidle --tab-id <TAB_ID>
523
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --fn "window.appReady === true" --tab-id <TAB_ID>
524
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait 500 --tab-id <TAB_ID>
525
- ```
526
-
527
- Preferred pattern: See `operation-patterns.md#wait`.
528
- Fallback relation: Prefer condition waits over shell sleep. Fixed-time waits like `wait 500` are diagnostic or last resort only.
529
-
530
- ### batch
531
-
532
- Purpose: Send short extension/CDP command arrays as JSON or from a file. Batch is not a wrapper for normal CLI commands such as `snapshot` or `click`.
533
-
534
- ```bash
535
- OMNIBOT_SESSION_TOKEN=research omnibot batch '[{"cmd":"cdp","method":"Runtime.evaluate","params":{"expression":"document.title","returnByValue":true}}]' --tab-id <TAB_ID>
536
- OMNIBOT_SESSION_TOKEN=research omnibot batch --file /tmp/omnibot-batch.json --tab-id <TAB_ID>
537
- ```
538
-
539
- Preferred pattern: See `operation-patterns.md#batch`.
540
- Fallback relation: Not a substitute for verification.
541
-
542
- ## Debugging
543
-
544
- ### screenshot
545
-
546
- Purpose: Capture visual evidence from a browser tab.
547
-
548
- ```bash
549
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot screenshot --tab-id <TAB_ID> -o /tmp/omni-shot.png
550
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot screenshot --annotate --tab-id <TAB_ID> -o /tmp/omni-annotated.png
551
- ```
552
-
553
- Preferred pattern: See `debugging-and-evidence.md#screenshot`.
554
- Fallback relation: Evidence collection, not operation fallback.
555
-
556
- ### console
557
-
558
- Purpose: Read or clear browser console evidence.
559
-
560
- ```bash
561
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console logs --tab-id <TAB_ID>
562
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console errors --tab-id <TAB_ID>
563
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console clear --tab-id <TAB_ID>
564
- ```
565
-
566
- Preferred pattern: See `debugging-and-evidence.md#console`.
567
- Fallback relation: Evidence collection, not operation fallback. `console errors` currently uses the console log collection path; verify level filtering in output before treating it as error-only evidence.
568
-
569
- ### network
570
-
571
- Purpose: Capture and inspect CDP Network events buffered by the Omnibot browser extension.
572
-
573
- ```bash
574
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network clear --tab-id <TAB_ID>
575
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network start --tab-id <TAB_ID>
576
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network stop --tab-id <TAB_ID>
577
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network logs --tab-id <TAB_ID>
578
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network summary --tab-id <TAB_ID>
579
- ```
580
-
581
- Raw `cdp Network.enable` is not a substitute for `network start` because raw `cdp` does not by itself expose a persistent event log to the agent.
582
-
583
- Preferred pattern: See `debugging-and-evidence.md#network-capture`.
584
- Fallback relation: Evidence collection, not operation fallback.
585
-
586
- ## Browser Capabilities
587
-
588
- ### clipboard
589
-
590
- Purpose: Read or write browser clipboard.
591
-
592
- ```bash
593
- OMNIBOT_SESSION_TOKEN=research omnibot clipboard read --tab-id <TAB_ID>
594
- OMNIBOT_SESSION_TOKEN=research omnibot clipboard write "text" --tab-id <TAB_ID>
595
- ```
596
-
597
- Preferred pattern: See `operation-patterns.md#extraction`.
598
- Fallback relation: Use only when clipboard is part of the browser task.
599
-
600
- ### viewport
601
-
602
- Purpose: Read or set viewport size.
603
-
604
- ```bash
605
- OMNIBOT_SESSION_TOKEN=visual omnibot viewport get --tab-id <TAB_ID>
606
- OMNIBOT_SESSION_TOKEN=visual omnibot viewport set 1280 720 --tab-id <TAB_ID>
607
- ```
608
-
609
- Preferred pattern: Set explicit viewport before visual verification if layout matters.
610
- Fallback relation: Not a fallback command.
611
-
612
- ### assets
613
-
614
- Purpose: List or export page resources.
615
-
616
- ```bash
617
- OMNIBOT_SESSION_TOKEN=extract omnibot assets list --tab-id <TAB_ID>
618
- OMNIBOT_SESSION_TOKEN=extract omnibot assets export -o /tmp/assets.zip --tab-id <TAB_ID>
619
- ```
620
-
621
- Preferred pattern: See `operation-patterns.md#extraction`.
622
- Fallback relation: Use after page content indicates assets are needed.
623
-
624
- ## Visibility & Sessions
625
-
626
- ### visibility
627
-
628
- Purpose: Inspect or set automation browser visibility mode. `visibility launch` currently reports planned configuration only; it does not launch a browser.
629
-
630
- ```bash
631
- omnibot visibility status
632
- omnibot visibility set background
633
- omnibot visibility set visible
634
- omnibot visibility launch headless --user-data-dir /tmp/omnibot-headless
635
- ```
636
-
637
- Preferred pattern: See `session-and-tabs.md#visibility`.
638
- Fallback relation: Headless does not inherit existing user login state. Treat `visibility launch` status `planned` as not launched.
639
-
640
- ### browser
641
-
642
- Purpose: Manage browser runtime ownership.
643
-
644
- ```bash
645
- OMNIBOT_SESSION_TOKEN=research omnibot browser list
646
- OMNIBOT_SESSION_TOKEN=research omnibot browser current
647
- OMNIBOT_SESSION_TOKEN=research omnibot browser claim 123
648
- OMNIBOT_SESSION_TOKEN=research omnibot browser release 123
649
- ```
650
-
651
- Preferred pattern: See `session-and-tabs.md#browser-claimrelease`.
652
- Fallback relation: Use in multi-browser or multi-runtime scenarios.
653
-
654
- ### session
655
-
656
- Purpose: Name or list Omnibot workflow context state for the current `OMNIBOT_SESSION_TOKEN`. This does not switch tabs, preserve login, or replace `--tab-id`.
657
-
658
- ```bash
659
- OMNIBOT_SESSION_TOKEN=checkout omnibot session name "checkout"
660
- OMNIBOT_SESSION_TOKEN=checkout omnibot session list
661
- ```
662
-
663
- Preferred pattern: See `session-and-tabs.md#session-first`.
664
- Fallback relation: Not a fallback command.
665
-
666
- ## Recording & Trace
667
-
668
- ### record / replay / trace
669
-
670
- Purpose: Capture, replay, or trace workflows for evidence.
671
-
672
- ```bash
673
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot record start
674
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot record stop -o flow.json
675
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot replay flow.json
676
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot trace start
677
- OMNIBOT_SESSION_TOKEN=debug-checkout omnibot trace stop -o trace.zip
678
- ```
679
-
680
- Preferred pattern: See `debugging-and-evidence.md#record-and-replay` and `debugging-and-evidence.md#trace`.
681
- Fallback relation: Evidence collection, not operation fallback.
682
-
683
- ## Skills & License
684
-
685
- ### skills install / skills path
686
-
687
- Purpose: Install packaged omnibot skills or show the packaged skills path.
688
-
689
- ```bash
690
- omnibot skills install --agent hermes --profile nuwa
691
- omnibot skills install --agent opencode
692
- omnibot skills install --agent claude
693
- omnibot skills install --agent codex
694
- omnibot skills path
695
- ```
696
-
697
- Preferred pattern: See `runtime-and-status.md#skills-path`.
698
- Fallback relation: Not a fallback command.
699
-
700
- ### license status
701
-
702
- Purpose: Inspect license status.
703
-
704
- ```bash
705
- omnibot license status
706
- ```
707
-
708
- Preferred pattern: See `runtime-and-status.md#startup-check`.
709
- Fallback relation: Not a fallback command.
1
+ # Omnibot Command Reference
2
+
3
+ This is a lookup table, not a behavior guide. Choose behavior from `operation-patterns.md`, use `session-and-tabs.md` for targeting, and use `fallback-operations.md` before dropping to lower tiers.
4
+
5
+ Unless marked as discovery, runtime, or tab creation, page-state examples assume `OMNIBOT_SESSION_TOKEN=<workflow>` and `--tab-id <TAB_ID>`.
6
+
7
+ ## Runtime & Status
8
+
9
+ ### doctor
10
+
11
+ Purpose: Check daemon and browser extension health.
12
+
13
+ ```bash
14
+ omnibot doctor
15
+ ```
16
+
17
+ Preferred pattern: See `runtime-and-status.md#startup-check`.
18
+ Fallback relation: Not a fallback command.
19
+
20
+ ### status
21
+
22
+ Purpose: Show daemon status only (lighter than `doctor`).
23
+
24
+ ```bash
25
+ omnibot status
26
+ ```
27
+
28
+ Preferred pattern: See `runtime-and-status.md#daemon-lifecycle`.
29
+ Fallback relation: Not a fallback command.
30
+
31
+ ### start
32
+
33
+ Purpose: Start the daemon in the background.
34
+
35
+ ```bash
36
+ omnibot start
37
+ ```
38
+
39
+ Equivalent to: `omnibot daemon start`
40
+
41
+ ### stop
42
+
43
+ Purpose: Stop the running daemon.
44
+
45
+ ```bash
46
+ omnibot stop
47
+ ```
48
+
49
+ Equivalent to: `omnibot daemon stop`
50
+
51
+ ### run
52
+
53
+ Purpose: Run the daemon in the foreground.
54
+
55
+ ```bash
56
+ omnibot run
57
+ ```
58
+
59
+ Equivalent to: `omnibot daemon run`
60
+
61
+ ### tabs
62
+
63
+ Purpose: List connected browser tabs and discover tab ids.
64
+
65
+ ```bash
66
+ omnibot tabs
67
+ ```
68
+
69
+ Preferred pattern: See `session-and-tabs.md#tab-explicit`.
70
+ Fallback relation: Not a fallback command.
71
+
72
+ ### license status
73
+
74
+ Purpose: Check license state.
75
+
76
+ ```bash
77
+ omnibot license status
78
+ ```
79
+
80
+ Preferred pattern: See `runtime-and-status.md#startup-check`.
81
+ Fallback relation: Not a fallback command.
82
+
83
+ ### version
84
+
85
+ Purpose: Print the installed omnibot CLI version. No daemon or extension access required.
86
+
87
+ ```bash
88
+ omnibot version
89
+ omnibot --version
90
+ omnibot -V
91
+ ```
92
+
93
+ Output: a single line in the form `omnibot <version>`.
94
+ Preferred pattern: See `runtime-and-status.md#version`.
95
+ Fallback relation: Not a fallback command.
96
+
97
+ ## Reading
98
+
99
+ ### read
100
+
101
+ Purpose: Read clean rendered page text/Markdown from an existing tab or a temporary URL tab.
102
+
103
+ ```bash
104
+ OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --tab-id <TAB_ID>
105
+ OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --timeout 120 --tab-id <TAB_ID>
106
+ OMNIBOT_SESSION_TOKEN=research omnibot read --screens 3 https://example.com/article
107
+ OMNIBOT_SESSION_TOKEN=research omnibot read --json --screens 5 --tab-id <TAB_ID>
108
+ ```
109
+
110
+ Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#extraction`.
111
+ Fallback relation: Prefer for page content. Use `snapshot -i` when the next step is action planning, and `get`/`is`/`wait` for narrow state verification.
112
+
113
+ ### snapshot -i
114
+
115
+ Purpose: Read accessibility tree and produce actionable `@eN` refs.
116
+
117
+ For visible custom comboboxes, `snapshot -i` may auto-probe options and append `[option]` refs under DOM Popup Controls. These refs remain actionable after the dropdown closes because they carry `openerSelector` internally.
118
+
119
+ ```bash
120
+ OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
121
+ OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i -c -d 4 --tab-id <TAB_ID>
122
+ OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i -s "#main" -u --tab-id <TAB_ID>
123
+ ```
124
+
125
+ Preferred pattern: See `operation-patterns.md#click`, `operation-patterns.md#fill`, and `session-and-tabs.md#ref-scope`.
126
+ Fallback relation: Tier 2 after semantic find.
127
+
128
+ ### get
129
+
130
+ Purpose: Read one value or element state without dumping the page.
131
+
132
+ ```bash
133
+ OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
134
+ OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
135
+ OMNIBOT_SESSION_TOKEN=research omnibot get text "#main" --tab-id <TAB_ID>
136
+ OMNIBOT_SESSION_TOKEN=research omnibot get html "#main" --tab-id <TAB_ID>
137
+ OMNIBOT_SESSION_TOKEN=research omnibot get value "input[name=email]" --tab-id <TAB_ID>
138
+ OMNIBOT_SESSION_TOKEN=research omnibot get attr "a.login" href --tab-id <TAB_ID>
139
+ OMNIBOT_SESSION_TOKEN=research omnibot get count ".item" --tab-id <TAB_ID>
140
+ OMNIBOT_SESSION_TOKEN=research omnibot get box "#submit" --tab-id <TAB_ID>
141
+ OMNIBOT_SESSION_TOKEN=research omnibot get styles "#submit" --tab-id <TAB_ID>
142
+ ```
143
+
144
+ Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#extraction`.
145
+ Fallback relation: Selector tier for reading; escalate only if unavailable.
146
+
147
+ ### is
148
+
149
+ Purpose: Check element state.
150
+
151
+ ```bash
152
+ OMNIBOT_SESSION_TOKEN=checkout omnibot is visible "#submit" --tab-id <TAB_ID>
153
+ OMNIBOT_SESSION_TOKEN=checkout omnibot is hidden "#spinner" --tab-id <TAB_ID>
154
+ OMNIBOT_SESSION_TOKEN=checkout omnibot is enabled "#submit" --tab-id <TAB_ID>
155
+ OMNIBOT_SESSION_TOKEN=checkout omnibot is checked "#agree" --tab-id <TAB_ID>
156
+ ```
157
+
158
+ Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#select--check`.
159
+ Fallback relation: Prefer before visual or JavaScript checks.
160
+
161
+ ## Actions
162
+
163
+ ### click
164
+
165
+ Purpose: Click an element by `@eN` ref or selector.
166
+
167
+ ```bash
168
+ OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
169
+ OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4 --new-tab
170
+ OMNIBOT_SESSION_TOKEN=checkout omnibot click "button[type=submit]" --tab-id <TAB_ID>
171
+ ```
172
+
173
+ Preferred pattern: See `operation-patterns.md#click`.
174
+ Fallback relation: Tier 2 with refs, Tier 3 with selector.
175
+
176
+ Combobox option refs: if `snapshot -i` shows `@eN [option] "OpenAI Chat"`, prefer `click @eN` over JavaScript fallback. Omnibot will reopen the owning combobox when needed.
177
+
178
+ Rich text editor refs: if `snapshot -i` shows `@eN [richtext] "..." [contenteditable=true]` under `# DOM Rich Text Editors`, treat it as the article body editor. Use `fill @richtext` to replace the whole body (supports `\n\n` for paragraphs) and `type @richtext` to append. Do not fall back to `execute-js` first.
179
+
180
+ ### dblclick
181
+
182
+ Purpose: Double-click an element by `@eN` ref or selector.
183
+
184
+ ```bash
185
+ OMNIBOT_SESSION_TOKEN=editor omnibot dblclick --tab-id <TAB_ID> @e7
186
+ ```
187
+
188
+ Preferred pattern: See `operation-patterns.md#click`.
189
+ Fallback relation: Prefer semantic or snapshot first; then selector.
190
+
191
+ ### fill
192
+
193
+ Purpose: Replace an input value.
194
+
195
+ ```bash
196
+ OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
197
+ OMNIBOT_SESSION_TOKEN=checkout omnibot fill "input[name=email]" "a@b.com" --tab-id <TAB_ID>
198
+ ```
199
+
200
+ Preferred pattern: See `operation-patterns.md#fill`.
201
+ Fallback relation: Tier 2 with refs, Tier 3 with selector.
202
+
203
+ Rich text body editors (ProseMirror/Quill/Draft.js/Slate/Toutiao article body): if the target is an `@eN [richtext]` ref, `fill` writes through a dedicated contenteditable path that clears the previous body and dispatches `input`/`change` events. Split paragraphs with an empty line:
204
+
205
+ ```bash
206
+ OMNIBOT_SESSION_TOKEN=editor omnibot fill --tab-id <TAB_ID> @eN "First paragraph.\n\nSecond paragraph."
207
+ ```
208
+
209
+ Raw selector fallback is supported for selectors that look like a rich editor (e.g. `[contenteditable="true"]`, `.ProseMirror`, `.ql-editor`).
210
+
211
+ ### type
212
+
213
+ Purpose: Type text into an element.
214
+
215
+ ```bash
216
+ OMNIBOT_SESSION_TOKEN=search omnibot type --tab-id <TAB_ID> @e3 "omnibot"
217
+ ```
218
+
219
+ Preferred pattern: See `operation-patterns.md#fill`.
220
+ Fallback relation: Use after fill is not appropriate or focus is needed.
221
+
222
+ For `@eN [richtext]` article body editors, `type` appends at the cursor position. Click the `@richtext` ref first to focus the editor.
223
+
224
+ ### press
225
+
226
+ Purpose: Press a key in the target tab.
227
+
228
+ ```bash
229
+ OMNIBOT_SESSION_TOKEN=search omnibot press Enter --tab-id <TAB_ID>
230
+ ```
231
+
232
+ Preferred pattern: See `operation-patterns.md#fill` and `operation-patterns.md#wait`.
233
+ Fallback relation: Not a fallback by itself; verify after pressing.
234
+
235
+ ### hover
236
+
237
+ Purpose: Hover an element by ref or selector.
238
+
239
+ ```bash
240
+ OMNIBOT_SESSION_TOKEN=menu omnibot hover --tab-id <TAB_ID> @e5
241
+ ```
242
+
243
+ Preferred pattern: Observe menu state, hover, then verify visible options.
244
+ Fallback relation: Use mouse move only if hover fails.
245
+
246
+ ### focus
247
+
248
+ Purpose: Focus an element by selector.
249
+
250
+ ```bash
251
+ OMNIBOT_SESSION_TOKEN=form omnibot focus "input[name=email]" --tab-id <TAB_ID>
252
+ ```
253
+
254
+ Preferred pattern: See `operation-patterns.md#fill`.
255
+ Fallback relation: Selector tier before keyboard/type fallback.
256
+
257
+ ### select
258
+
259
+ Purpose: Select an option in a dropdown.
260
+
261
+ ```bash
262
+ OMNIBOT_SESSION_TOKEN=form omnibot select @e5 "US" --tab-id <TAB_ID>
263
+ ```
264
+
265
+ Preferred pattern: See `operation-patterns.md#select--check`.
266
+ Fallback relation: Prefer refs/selectors before JavaScript value changes. For custom comboboxes, first check whether `snapshot -i` exposes auto-probed option refs and click `@option`. For CSS-only dropdowns whose options are still absent or whose refs fail verification, see `fallback-operations.md#css-only-dropdown-javascript-fallback`.
267
+
268
+ ### check / uncheck
269
+
270
+ Purpose: Set checkbox state.
271
+
272
+ ```bash
273
+ OMNIBOT_SESSION_TOKEN=form omnibot check @e6 --tab-id <TAB_ID>
274
+ OMNIBOT_SESSION_TOKEN=form omnibot uncheck @e6 --tab-id <TAB_ID>
275
+ ```
276
+
277
+ Preferred pattern: See `operation-patterns.md#select--check`.
278
+ Fallback relation: Verify with `is checked` before and after.
279
+
280
+ ### scroll / scrollintoview
281
+
282
+ Purpose: Scroll page or element.
283
+
284
+ ```bash
285
+ OMNIBOT_SESSION_TOKEN=read omnibot scroll down 500 --tab-id <TAB_ID>
286
+ OMNIBOT_SESSION_TOKEN=read omnibot scroll down 500 --selector "#list" --tab-id <TAB_ID>
287
+ OMNIBOT_SESSION_TOKEN=read omnibot scrollintoview @e7 --tab-id <TAB_ID>
288
+ ```
289
+
290
+ Preferred pattern: See `operation-patterns.md#read` and `operation-patterns.md#extraction`.
291
+ Fallback relation: DOM or mouse scroll only after standard scroll fails.
292
+
293
+ ### drag
294
+
295
+ Purpose: Drag from one element to another.
296
+
297
+ ```bash
298
+ OMNIBOT_SESSION_TOKEN=board omnibot drag @e8 @e9 --tab-id <TAB_ID>
299
+ ```
300
+
301
+ Preferred pattern: Observe source and target, drag, verify position/state.
302
+ Fallback relation: Mouse drag is Tier 5 if element drag fails.
303
+
304
+ ### upload
305
+
306
+ Purpose: Attach a local file to an `<input type="file">` element via CDP (`DOM.setFileInputFiles`), with nodeId and JS `DataTransfer` fallbacks.
307
+
308
+ ```bash
309
+ OMNIBOT_SESSION_TOKEN=form omnibot upload "input[type=file]" /path/to/file.png --tab-id <TAB_ID>
310
+ ```
311
+
312
+ Preferred pattern: See `operation-patterns.md#upload`.
313
+ Fallback relation: The CLI falls back from CDP objectId → CDP nodeId → JS DataTransfer. Do not stack additional JavaScript fallbacks.
314
+
315
+ ### keyboard / keydown / keyup
316
+
317
+ Purpose: Send keyboard text or key state to the target tab when element-specific `type` or `press` is insufficient.
318
+
319
+ ```bash
320
+ OMNIBOT_SESSION_TOKEN=form omnibot keyboard type "hello" --tab-id <TAB_ID>
321
+ OMNIBOT_SESSION_TOKEN=form omnibot keyboard inserttext "hello" --tab-id <TAB_ID>
322
+ OMNIBOT_SESSION_TOKEN=form omnibot keydown Shift --tab-id <TAB_ID>
323
+ OMNIBOT_SESSION_TOKEN=form omnibot keyup Shift --tab-id <TAB_ID>
324
+ ```
325
+
326
+ Preferred pattern: Prefer `fill`, `type`, and `press` first.
327
+ Fallback relation: Keyboard commands are a focused fallback before mouse or JavaScript.
328
+
329
+ `keyboard type` preserves keyboard events and updates the focused editable when the browser does not apply the default text insertion. `keyboard inserttext` inserts text directly and intentionally does not emit per-character key events.
330
+
331
+ ## Semantic Find
332
+
333
+ Semantic find is Tier 1 for operating by meaning.
334
+
335
+ ```bash
336
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find role button --name "Submit" --action click --tab-id <TAB_ID>
337
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find text "Sign in" --action click --tab-id <TAB_ID>
338
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find label "Email" --action fill --action-value "a@b.com" --tab-id <TAB_ID>
339
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find placeholder "Search" --action type --action-value "omnibot" --tab-id <TAB_ID>
340
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find testid submit-button --action click --tab-id <TAB_ID>
341
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find nth ".card" 2 --action click --tab-id <TAB_ID>
342
+ ```
343
+
344
+ Text-node precision: `find text` walks the DOM text nodes and marks the nearest visible container of the matching text, not the first ancestor whose `textContent` happens to include the needle. The matched offset/length is stored on the element, so `--action click` positions the mouse at the end of the matched text. Inside a `contenteditable` body (ProseMirror/Quill/etc.), the selection is collapsed right after the matched text and the editor is focused, so a follow-up image insertion lands at the intended paragraph instead of the editor root.
345
+
346
+ Preferred pattern: See `operation-patterns.md#click` and `operation-patterns.md#fill`.
347
+ Fallback relation: Tier 1. Explain failure before using refs, selectors, DOM, mouse, JavaScript, or CDP.
348
+
349
+ ## Fallback Actions
350
+
351
+ ### mouse
352
+
353
+ Purpose: Coordinate-based mouse operations.
354
+
355
+ All coordinate mouse operations are mirrored in the connected extension's
356
+ visible page: a cursor, movement trail, pressed state, drag path, and click
357
+ wave are shown at the same viewport coordinates as the dispatched input. The
358
+ visual layer is best-effort and never changes whether the underlying action
359
+ succeeds. It is recreated after a page reload when the last mouse position is
360
+ known.
361
+ Usage tier: Tier 5 fallback only.
362
+
363
+ > **Development status:** The realistic trajectory mode (`mouse drag` without `--fast`) is experimental and has not been validated in production workflows. The trajectory parameters, step count, and timing are still being tuned. Use `--fast` for stable linear drags until the realistic mode is proven.
364
+
365
+ ```bash
366
+ OMNIBOT_SESSION_TOKEN=repair omnibot mouse click --x 100 --y 200 --tab-id <TAB_ID>
367
+ OMNIBOT_SESSION_TOKEN=repair omnibot mouse click --x 100 --y 200 --click-count 2 --tab-id <TAB_ID>
368
+ OMNIBOT_SESSION_TOKEN=repair omnibot mouse move --x 50 --y 60 --tab-id <TAB_ID>
369
+ OMNIBOT_SESSION_TOKEN=repair omnibot mouse scroll --x 100 --y 200 --dy 500 --tab-id <TAB_ID>
370
+ OMNIBOT_SESSION_TOKEN=repair omnibot mouse drag --from-x 10 --from-y 20 --to-x 100 --to-y 200 --tab-id <TAB_ID>
371
+ ```
372
+
373
+ `mouse drag` uses a realistic multi-step trajectory by default (70-110 interpolated points with easing, jitter, overshoot, and short random pauses). **This mode is experimental and not yet production-ready.** Optional tuning flags:
374
+
375
+ ```bash
376
+ omnibot mouse drag --from-x 633 --from-y 733 --to-x 706 --to-y 733 --duration-ms 700 --steps 90 --jitter 1 --overshoot 2 --tab-id <TAB_ID>
377
+ ```
378
+
379
+ Use `--fast` for the old linear 4-event drag (stable, recommended for production):
380
+
381
+ ```bash
382
+ omnibot mouse drag --from-x 0 --from-y 0 --to-x 100 --to-y 0 --fast --tab-id <TAB_ID>
383
+ ```
384
+
385
+ Preferred pattern: See `fallback-operations.md#mouse-fallback`.
386
+ Fallback relation: After semantic, refs, selector, and DOM fail.
387
+
388
+ ### verify
389
+
390
+ Purpose: Inspect human-verification (captcha) widgets. Returns structured metadata (provider, type, action type, element boxes, coordinate mapping, and an optional panel screenshot) for an agent to solve. Does not solve captchas itself.
391
+
392
+ > **Development status:** This command is experimental and in active development. It is not production-ready. Known limitations:
393
+ > - Only NetEase Yidun (网易易盾) is supported; other captcha providers are not detected.
394
+ > - DOM-based classification (`yidun_classes`) is best-effort and may report wrong types on newer widget versions.
395
+ > - The `coordinate_map` panel-image-to-viewport scale assumes `Page.captureScreenshot` returns DPR-scaled device pixels; this has not been validated across all DPR and viewport combinations.
396
+ > - Success/failure state detection (`state` field) from DOM classes is unreliable; always cross-check with a visual screenshot.
397
+ > - There is no built-in captcha solver. External vision-model-based solving (e.g. via `--solver-command`) has shown insufficient accuracy for production-grade captcha solving on jigsaw-type captchas.
398
+ > - Do not rely on this command for automated captcha bypass in production workflows.
399
+
400
+ ```bash
401
+ OMNIBOT_SESSION_TOKEN=verify omnibot verify inspect --tab-id <TAB_ID>
402
+ OMNIBOT_SESSION_TOKEN=verify omnibot verify inspect --tab-id <TAB_ID> --no-image
403
+ ```
404
+
405
+ The agent workflow for slider captchas (experimental, not validated for production):
406
+ 1. `verify inspect` → get type, coordinate_map, panel image
407
+ 2. Vision model identifies the gap/target position in the image
408
+ 3. Convert panel screenshot coordinates to viewport coordinates using `coordinate_map.panel_image_to_viewport_scale_x/y`
409
+ 4. `mouse drag` from slider handle to target
410
+ 5. `verify inspect` or `screenshot` to verify result
411
+
412
+ For click-sequence captchas (text/icon click):
413
+ 1. `verify inspect` → get click area and image
414
+ 2. Vision model identifies target coordinates in the image
415
+ 3. Convert and execute `mouse click` for each target
416
+
417
+ Batch scoring harness for NetEase Yidun trial pages (test-only):
418
+
419
+ ```bash
420
+ python3 tests/verify_workflow_matrix_test.py --iterations 50
421
+ python3 tests/verify_workflow_matrix_test.py --case jigsaw --iterations 50 --solver-command './solver.py'
422
+ ```
423
+
424
+ Without `--solver-command`, the harness performs inspect-only sampling and saves panel images. With a solver command, it executes returned `drag` / `click` actions and writes JSON/TXT score reports.
425
+
426
+ ### dom
427
+
428
+ Purpose: Interact with visible DOM node ids returned by `dom visible`.
429
+ Usage tier: Tier 4 fallback only.
430
+
431
+ ```bash
432
+ OMNIBOT_SESSION_TOKEN=repair omnibot dom visible --tab-id <TAB_ID>
433
+ OMNIBOT_SESSION_TOKEN=repair omnibot dom click n1 --tab-id <TAB_ID>
434
+ OMNIBOT_SESSION_TOKEN=repair omnibot dom dblclick n1 --tab-id <TAB_ID>
435
+ OMNIBOT_SESSION_TOKEN=repair omnibot dom scroll n1 --dy 800 --tab-id <TAB_ID>
436
+ ```
437
+
438
+ Preferred pattern: See `fallback-operations.md#dom-fallback`.
439
+ Fallback relation: After selector failure and before mouse fallback.
440
+
441
+ ### execute-js
442
+
443
+ Purpose: Run arbitrary JavaScript in the page.
444
+ Usage tier: Tier 6 fallback only. Do not use first.
445
+
446
+ ```bash
447
+ OMNIBOT_SESSION_TOKEN=repair omnibot execute-js "return window.appState?.status" --tab-id <TAB_ID>
448
+ OMNIBOT_SESSION_TOKEN=repair omnibot execute-js --file /tmp/repair.js --tab-id <TAB_ID>
449
+ ```
450
+
451
+ Preferred pattern: See `fallback-operations.md#javascript-fallback`.
452
+ Fallback relation: After semantic, refs, selector, DOM, and mouse are insufficient. Valid examples include CSS-only dropdowns where the trigger exists but option refs are absent from `snapshot -i`.
453
+
454
+ ### cdp
455
+
456
+ Purpose: Send raw Chrome DevTools Protocol commands.
457
+ Usage tier: Tier 7 fallback and inspection only.
458
+
459
+ ```bash
460
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot cdp Runtime.evaluate '{"expression":"document.title"}' --tab-id <TAB_ID>
461
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot cdp DOM.getDocument '{"depth":1}' --tab-id <TAB_ID>
462
+ ```
463
+
464
+ Preferred pattern: See `fallback-operations.md#raw-cdp-fallback` and `debugging-and-evidence.md#cdp-inspection`.
465
+ Fallback relation: Last resort.
466
+
467
+ ## Navigation & Tabs
468
+
469
+ ### navigate / open / goto
470
+
471
+ Purpose: Navigate or open pages. New-tab forms return a tab id. Same-tab navigation requires an explicit target tab id. There is no CLI current-tab state.
472
+
473
+ ```bash
474
+ OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com
475
+ OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com --same-tab --tab-id <TAB_ID>
476
+ OMNIBOT_SESSION_TOKEN=research omnibot open https://example.com
477
+ OMNIBOT_SESSION_TOKEN=research omnibot goto https://example.com --tab-id <TAB_ID>
478
+ ```
479
+
480
+ Preferred pattern: See `operation-patterns.md#navigation` and `session-and-tabs.md#tab-explicit`.
481
+ Fallback relation: Verify with `get url --tab-id <TAB_ID>` before continuing.
482
+
483
+ Safety rule: treat `open` and `tab new` as the only new-tab commands. Never replace a requested new-tab operation with `goto`, plain `navigate`, or an active-tab action. Use `goto --tab-id` or `navigate --same-tab --tab-id` only when reusing an explicitly selected existing tab, and verify the returned tab's URL before mutating page state.
484
+
485
+ ### close / back / forward / reload / pushstate
486
+
487
+ Purpose: Change tab lifecycle or history state.
488
+
489
+ ```bash
490
+ OMNIBOT_SESSION_TOKEN=research omnibot close <TAB_ID>
491
+ OMNIBOT_SESSION_TOKEN=research omnibot back --tab-id <TAB_ID>
492
+ OMNIBOT_SESSION_TOKEN=research omnibot forward --tab-id <TAB_ID>
493
+ OMNIBOT_SESSION_TOKEN=research omnibot reload --tab-id <TAB_ID>
494
+ OMNIBOT_SESSION_TOKEN=research omnibot pushstate /dashboard --tab-id <TAB_ID>
495
+ ```
496
+
497
+ Preferred pattern: See `operation-patterns.md#navigation`.
498
+ Fallback relation: Verify URL or page state after the action.
499
+
500
+ ### tab
501
+
502
+ Purpose: Manage browser tabs.
503
+
504
+ ```bash
505
+ OMNIBOT_SESSION_TOKEN=research omnibot tab list
506
+ OMNIBOT_SESSION_TOKEN=research omnibot tab new https://docs.example.com --label docs
507
+ OMNIBOT_SESSION_TOKEN=research omnibot tab close docs
508
+ ```
509
+
510
+ Preferred pattern: See `session-and-tabs.md#tab-explicit`.
511
+ Removed: `tab switch` and `tab focus` are no longer available. Use explicit `--tab-id` on every page-state command.
512
+
513
+ ### window / frame
514
+
515
+ Purpose: Manage windows and frames.
516
+
517
+ ```bash
518
+ OMNIBOT_SESSION_TOKEN=research omnibot window new
519
+ OMNIBOT_SESSION_TOKEN=research omnibot frame "#payment-frame" --tab-id <TAB_ID>
520
+ OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
521
+ OMNIBOT_SESSION_TOKEN=research omnibot frame main --tab-id <TAB_ID>
522
+ ```
523
+
524
+ `frame` targets an iframe by id, name, title, or matching source URL. Set it before child-frame page-state commands and use `frame main` before reading host-page state.
525
+
526
+ ## Waiting & Batch
527
+
528
+ ### wait
529
+
530
+ Purpose: Wait for time, selector, text, URL, load state, or JavaScript condition.
531
+
532
+ ```bash
533
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#ready" --tab-id <TAB_ID>
534
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#spinner" --state hidden --tab-id <TAB_ID>
535
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --text "Welcome" --tab-id <TAB_ID>
536
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
537
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load domcontentloaded --tab-id <TAB_ID>
538
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load networkidle --tab-id <TAB_ID>
539
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --fn "window.appReady === true" --tab-id <TAB_ID>
540
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait 500 --tab-id <TAB_ID>
541
+ ```
542
+
543
+ Preferred pattern: See `operation-patterns.md#wait`.
544
+ Fallback relation: Prefer condition waits over shell sleep. Fixed-time waits like `wait 500` are diagnostic or last resort only.
545
+
546
+ ### batch
547
+
548
+ Purpose: Send short extension/CDP command arrays as JSON or from a file. Batch is not a wrapper for normal CLI commands such as `snapshot` or `click`.
549
+
550
+ ```bash
551
+ OMNIBOT_SESSION_TOKEN=research omnibot batch '[{"cmd":"cdp","method":"Runtime.evaluate","params":{"expression":"document.title","returnByValue":true}}]' --tab-id <TAB_ID>
552
+ OMNIBOT_SESSION_TOKEN=research omnibot batch --file /tmp/omnibot-batch.json --tab-id <TAB_ID>
553
+ ```
554
+
555
+ Preferred pattern: See `operation-patterns.md#batch`.
556
+ Fallback relation: Not a substitute for verification.
557
+
558
+ ## Debugging
559
+
560
+ ### screenshot
561
+
562
+ Purpose: Capture visual evidence from a browser tab.
563
+
564
+ ```bash
565
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot screenshot --tab-id <TAB_ID> -o /tmp/omni-shot.png
566
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot screenshot --annotate --tab-id <TAB_ID> -o /tmp/omni-annotated.png
567
+ ```
568
+
569
+ Preferred pattern: See `debugging-and-evidence.md#screenshot`.
570
+ Fallback relation: Evidence collection, not operation fallback.
571
+
572
+ ### console
573
+
574
+ Purpose: Read or clear browser console evidence.
575
+
576
+ ```bash
577
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console logs --tab-id <TAB_ID>
578
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console errors --tab-id <TAB_ID>
579
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot console clear --tab-id <TAB_ID>
580
+ ```
581
+
582
+ Preferred pattern: See `debugging-and-evidence.md#console`.
583
+ Fallback relation: Evidence collection, not operation fallback. `console errors` currently uses the console log collection path; verify level filtering in output before treating it as error-only evidence.
584
+
585
+ ### dialog
586
+
587
+ Purpose: Read, clear, or handle native browser JavaScript dialogs (`alert`, `confirm`, `prompt`).
588
+
589
+ ```bash
590
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot dialog logs --tab-id <TAB_ID>
591
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot dialog clear --tab-id <TAB_ID>
592
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot dialog handle accept --tab-id <TAB_ID>
593
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot dialog handle dismiss --tab-id <TAB_ID>
594
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot dialog handle accept --text "prompt text" --tab-id <TAB_ID>
595
+ ```
596
+
597
+ Preferred pattern: Use `dialog logs` or `dialog clear` before triggering a browser-native dialog so the extension has debugger capture ready. Trigger through normal page actions when possible; use `execute-js` only when the task is explicitly to test a native JS dialog.
598
+ Fallback relation: Evidence and dialog handling, not a general page-operation fallback.
599
+
600
+ ### network
601
+
602
+ Purpose: Capture and inspect CDP Network events buffered by the Omnibot browser extension.
603
+
604
+ ```bash
605
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network clear --tab-id <TAB_ID>
606
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network start --tab-id <TAB_ID>
607
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network stop --tab-id <TAB_ID>
608
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network logs --tab-id <TAB_ID>
609
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot network summary --tab-id <TAB_ID>
610
+ ```
611
+
612
+ Raw `cdp Network.enable` is not a substitute for `network start` because raw `cdp` does not by itself expose a persistent event log to the agent.
613
+
614
+ Preferred pattern: See `debugging-and-evidence.md#network-capture`.
615
+ Fallback relation: Evidence collection, not operation fallback.
616
+
617
+ ## Browser Capabilities
618
+
619
+ ### clipboard
620
+
621
+ Purpose: Read or write browser clipboard.
622
+
623
+ ```bash
624
+ OMNIBOT_SESSION_TOKEN=research omnibot clipboard read --tab-id <TAB_ID>
625
+ OMNIBOT_SESSION_TOKEN=research omnibot clipboard write "text" --tab-id <TAB_ID>
626
+ ```
627
+
628
+ Preferred pattern: See `operation-patterns.md#extraction`.
629
+ Fallback relation: Use only when clipboard is part of the browser task.
630
+
631
+ ### viewport
632
+
633
+ Purpose: Read or set viewport size.
634
+
635
+ ```bash
636
+ OMNIBOT_SESSION_TOKEN=visual omnibot viewport get --tab-id <TAB_ID>
637
+ OMNIBOT_SESSION_TOKEN=visual omnibot viewport set 1280 720 --tab-id <TAB_ID>
638
+ ```
639
+
640
+ Preferred pattern: Set explicit viewport before visual verification if layout matters.
641
+ Fallback relation: Not a fallback command.
642
+
643
+ ### assets
644
+
645
+ Purpose: List or export page resources.
646
+
647
+ ```bash
648
+ OMNIBOT_SESSION_TOKEN=extract omnibot assets list --tab-id <TAB_ID>
649
+ OMNIBOT_SESSION_TOKEN=extract omnibot assets export -o /tmp/assets.zip --tab-id <TAB_ID>
650
+ ```
651
+
652
+ Preferred pattern: See `operation-patterns.md#extraction`.
653
+ Fallback relation: Use after page content indicates assets are needed.
654
+
655
+ ## Visibility & Sessions
656
+
657
+ ### visibility
658
+
659
+ Purpose: Inspect or set automation browser visibility mode. `visibility launch` currently reports planned configuration only; it does not launch a browser.
660
+
661
+ ```bash
662
+ omnibot visibility status
663
+ omnibot visibility set background
664
+ omnibot visibility set visible
665
+ omnibot visibility launch headless --user-data-dir /tmp/omnibot-headless
666
+ ```
667
+
668
+ Preferred pattern: See `session-and-tabs.md#visibility`.
669
+ Fallback relation: Headless does not inherit existing user login state. Treat `visibility launch` status `planned` as not launched.
670
+
671
+ ### browser
672
+
673
+ Purpose: Manage browser runtime ownership.
674
+
675
+ ```bash
676
+ OMNIBOT_SESSION_TOKEN=research omnibot browser list
677
+ OMNIBOT_SESSION_TOKEN=research omnibot browser current
678
+ OMNIBOT_SESSION_TOKEN=research omnibot browser claim 123
679
+ OMNIBOT_SESSION_TOKEN=research omnibot browser release 123
680
+ ```
681
+
682
+ Preferred pattern: See `session-and-tabs.md#browser-claimrelease`.
683
+ Fallback relation: Use in multi-browser or multi-runtime scenarios.
684
+
685
+ ### session
686
+
687
+ Purpose: Name or list Omnibot workflow context state for the current `OMNIBOT_SESSION_TOKEN`. This does not switch tabs, preserve login, or replace `--tab-id`.
688
+
689
+ ```bash
690
+ OMNIBOT_SESSION_TOKEN=checkout omnibot session name "checkout"
691
+ OMNIBOT_SESSION_TOKEN=checkout omnibot session list
692
+ ```
693
+
694
+ Preferred pattern: See `session-and-tabs.md#session-first`.
695
+ Fallback relation: Not a fallback command.
696
+
697
+ ## Recording & Trace
698
+
699
+ ### record / replay / trace
700
+
701
+ Purpose: Capture, replay, or trace workflows for evidence.
702
+
703
+ ```bash
704
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot record start
705
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot record stop -o flow.json
706
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot replay flow.json
707
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot trace start
708
+ OMNIBOT_SESSION_TOKEN=debug-checkout omnibot trace stop -o trace.zip
709
+ ```
710
+
711
+ Preferred pattern: See `debugging-and-evidence.md#record-and-replay` and `debugging-and-evidence.md#trace`.
712
+ Fallback relation: Evidence collection, not operation fallback.
713
+
714
+ ## Skills & License
715
+
716
+ ### skills install / skills path
717
+
718
+ Purpose: Install packaged omnibot skills or show the packaged skills path.
719
+
720
+ ```bash
721
+ omnibot skills install --agent hermes --profile nuwa
722
+ omnibot skills install --agent opencode
723
+ omnibot skills install --agent claude
724
+ omnibot skills install --agent codex
725
+ omnibot skills install --agent openclaw
726
+ omnibot skills install --agent workbuddy
727
+ omnibot skills install --agent trae
728
+ omnibot skills path
729
+ ```
730
+
731
+ Preferred pattern: See `runtime-and-status.md#skills-path`.
732
+ Fallback relation: Not a fallback command.
733
+
734
+ ### license status
735
+
736
+ Purpose: Inspect license status.
737
+
738
+ ```bash
739
+ omnibot license status
740
+ ```
741
+
742
+ Preferred pattern: See `runtime-and-status.md#startup-check`.
743
+ Fallback relation: Not a fallback command.