@omniaibot/win-x64 1.6.2 → 1.6.4

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 (45) hide show
  1. package/bin/omnibot-win-x64/VERSION +1 -0
  2. package/bin/omnibot-win-x64/omnibot/skills/omnibot/SKILL.md +261 -0
  3. package/bin/omnibot-win-x64/omnibot/skills/omnibot/references/command-reference.md +755 -0
  4. package/bin/omnibot-win-x64/omnibot-bin.exe +0 -0
  5. package/bin/omnibot-windows-x64/VERSION +1 -1
  6. package/bin/omnibot-windows-x64/_asyncio.pyd +0 -0
  7. package/bin/omnibot-windows-x64/_bz2.pyd +0 -0
  8. package/bin/omnibot-windows-x64/_ctypes.pyd +0 -0
  9. package/bin/omnibot-windows-x64/_decimal.pyd +0 -0
  10. package/bin/omnibot-windows-x64/_hashlib.pyd +0 -0
  11. package/bin/omnibot-windows-x64/_lzma.pyd +0 -0
  12. package/bin/omnibot-windows-x64/_multiprocessing.pyd +0 -0
  13. package/bin/omnibot-windows-x64/_overlapped.pyd +0 -0
  14. package/bin/omnibot-windows-x64/_queue.pyd +0 -0
  15. package/bin/omnibot-windows-x64/_socket.pyd +0 -0
  16. package/bin/omnibot-windows-x64/_ssl.pyd +0 -0
  17. package/bin/omnibot-windows-x64/_uuid.pyd +0 -0
  18. package/bin/omnibot-windows-x64/_wmi.pyd +0 -0
  19. package/bin/omnibot-windows-x64/certifi/cacert.pem +0 -70
  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 +249 -196
  25. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/anti-patterns.md +49 -37
  26. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/command-reference.md +741 -620
  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 +129 -97
  29. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/fallback-operations.md +175 -171
  30. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/operation-patterns.md +396 -384
  31. package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/runtime-and-status.md +121 -111
  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/python312.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/libcrypto-3.dll +0 -0
  45. package/bin/omnibot-windows-x64/libssl-3.dll +0 -0
@@ -1,384 +1,396 @@
1
- # Operation Patterns
2
-
3
- Use this file to choose behavior by task. Every page-state workflow must set `OMNIBOT_SESSION_TOKEN=<workflow-name>` and pass `--tab-id <TAB_ID>` on each page-state command.
4
-
5
- ## Read
6
-
7
- ### When to use
8
-
9
- Use Read when the agent needs clean rendered page content: article text, search results, feed items, long pages, lazy-loaded text, or a human-readable summary source.
10
-
11
- Use targeted state commands when the agent needs one value, visibility, enabled/checked state, layout box, or computed styles. Use `snapshot -i` when the agent needs current visible UI structure for deciding the next action.
12
-
13
- ### Preferred sequence
14
-
15
- 1. `read --tab-id <TAB_ID>` for clean page text on an existing tab.
16
- 2. `read --screens N --tab-id <TAB_ID>` for longer or lazy-loaded pages.
17
- 3. `read <URL>` when opening a temporary tab only for reading that URL.
18
- 4. `get title/url/text/html/value/attr/count/box/styles` for narrow evidence.
19
- 5. `is visible/enabled/checked` for boolean state.
20
- 5. `snapshot -i` when actionable refs are needed.
21
- 6. `dom visible` or `execute-js` fallback only after standard reads cannot access the state.
22
-
23
- ### Example
24
-
25
- ```bash
26
- OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --tab-id <TAB_ID>
27
- OMNIBOT_SESSION_TOKEN=research omnibot read --screens 3 https://example.com/article
28
- ```
29
-
30
- ### Verification
31
-
32
- Use the narrowest read that proves the claim:
33
-
34
- ```bash
35
- OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
36
- OMNIBOT_SESSION_TOKEN=research omnibot is visible "#main" --tab-id <TAB_ID>
37
- OMNIBOT_SESSION_TOKEN=research omnibot get count ".result" --tab-id <TAB_ID>
38
- ```
39
-
40
- ### Fallback entry point
41
-
42
- If `read` or targeted reads omit needed runtime state, go to `fallback-operations.md#fallback-tier-model`. Start with DOM fallback before JavaScript.
43
-
44
- ## Click
45
-
46
- ### When to use
47
-
48
- Use Click for buttons, links, menu items, cards, checkouts, modal actions, and any user-like click target.
49
-
50
- ### Preferred sequence
51
-
52
- 1. `find role/text/testid --action click`
53
- 2. `snapshot -i` -> `click @eN`
54
- 3. `click selector`
55
- 4. `dom click`
56
- 5. `mouse click`
57
- 6. `execute-js` click
58
- 7. `cdp` fallback
59
-
60
- ### Example
61
-
62
- ```bash
63
- OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
64
- OMNIBOT_SESSION_TOKEN=checkout omnibot find role button --name "Submit" --action click --tab-id <TAB_ID>
65
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
66
- ```
67
-
68
- If semantic find is ambiguous, use refs from the same tab:
69
-
70
- ```bash
71
- OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
72
- OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
73
- OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
74
- ```
75
-
76
- ### Verification
77
-
78
- Verify the expected state, not just command success:
79
-
80
- ```bash
81
- OMNIBOT_SESSION_TOKEN=checkout omnibot get url --tab-id <TAB_ID>
82
- OMNIBOT_SESSION_TOKEN=checkout omnibot is visible ".success" --tab-id <TAB_ID>
83
- ```
84
-
85
- ### Fallback entry point
86
-
87
- If semantic and refs fail, document why and continue at `fallback-operations.md#selector-fallback`.
88
-
89
- ## Fill
90
-
91
- ### When to use
92
-
93
- Use Fill for text inputs, textareas, search boxes, login fields, and form fields where the final value must be controlled.
94
-
95
- ### Preferred sequence
96
-
97
- 1. `find label/placeholder --action fill`
98
- 2. `snapshot -i` -> `fill @eN`
99
- 3. `fill selector`
100
- 4. `focus` + `type`
101
- 5. `execute-js` set value and dispatch `input`/`change` events
102
-
103
- ### Example
104
-
105
- ```bash
106
- OMNIBOT_SESSION_TOKEN=checkout omnibot find label "Email" --action fill --action-value "a@b.com" --tab-id <TAB_ID>
107
- OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
108
- ```
109
-
110
- With refs:
111
-
112
- ```bash
113
- OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
114
- OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
115
- OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
116
- ```
117
-
118
- ### Verification
119
-
120
- Use `get value`, visible validation text, enabled state, or submit readiness:
121
-
122
- ```bash
123
- OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
124
- OMNIBOT_SESSION_TOKEN=checkout omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
125
- ```
126
-
127
- ### Fallback entry point
128
-
129
- If fill does not update the application state, use `fallback-operations.md#javascript-fallback` only after selector/focus/type attempts fail. JavaScript must dispatch real `input` and `change` events.
130
-
131
- ## Select / Check
132
-
133
- ### When to use
134
-
135
- Use this pattern for dropdowns, checkboxes, toggles, agreement boxes, filters, and boolean controls.
136
-
137
- ### Preferred sequence
138
-
139
- 1. Observe state with `snapshot -i` and `is checked` when relevant.
140
- 2. Use `select`, `check`, or `uncheck` with refs or selectors.
141
- 3. Verify with `get value`, `is checked`, visible text, or result count.
142
-
143
- ### Example
144
-
145
- ```bash
146
- OMNIBOT_SESSION_TOKEN=form omnibot snapshot -i --tab-id <TAB_ID>
147
- OMNIBOT_SESSION_TOKEN=form omnibot select @e5 "US" --tab-id <TAB_ID>
148
- OMNIBOT_SESSION_TOKEN=form omnibot get value "select[name=country]" --tab-id <TAB_ID>
149
- ```
150
-
151
- Checkbox example:
152
-
153
- ```bash
154
- OMNIBOT_SESSION_TOKEN=form omnibot is checked "#agree" --tab-id <TAB_ID>
155
- OMNIBOT_SESSION_TOKEN=form omnibot check "#agree" --tab-id <TAB_ID>
156
- OMNIBOT_SESSION_TOKEN=form omnibot is checked "#agree" --tab-id <TAB_ID>
157
- ```
158
-
159
- ### Verification
160
-
161
- For checkboxes, verify boolean state. For selects, verify value or dependent page state.
162
-
163
- ### CSS-only dropdowns and custom menus
164
-
165
- Some dropdowns, hover menus, tooltips, and custom selects are CSS-only widgets. The visible trigger may be accessible, while the option nodes are hidden `<div>` elements without `role`, accessible name, or stable refs.
166
-
167
- Use this evidence path before JavaScript:
168
-
169
- 1. Try semantic `find` or a normal `select`/`click` against the trigger.
170
- 2. Verify whether the selected label, result order, or dependent state changed.
171
- 3. Run `snapshot -i` after opening the control.
172
- 4. If the trigger clicked but options are absent from the accessibility tree, do not keep retrying `find` or stale refs.
173
- 5. Escalate to `fallback-operations.md#css-only-dropdown-javascript-fallback` for an atomic open-then-select script.
174
-
175
- `snapshot -i` not showing an option does not prove the DOM node is missing. It may only prove the widget is not exposed through the accessibility tree.
176
-
177
- ### Fallback entry point
178
-
179
- If native select/check fails, use `fallback-operations.md#selector-fallback`. Use JavaScript only if events must be synthesized or if evidence shows a CSS-only multi-step widget cannot be completed through semantic, snapshot, selector, DOM, or mouse tiers.
180
-
181
- ## Navigation
182
-
183
- ### When to use
184
-
185
- Use Navigation to open pages, create tabs, change history, reload, close tabs, move between pages, create windows, or select frames.
186
-
187
- ### Preferred sequence
188
-
189
- 1. Create or discover a tab with `tabs`, `tab list`, `tab new`, `open`, or `navigate`.
190
- 2. Save the returned tab id.
191
- 3. Verify with `get url --tab-id <TAB_ID>`.
192
- 4. Run all later page-state commands with `--tab-id <TAB_ID>`.
193
-
194
- ### Example
195
-
196
- ```bash
197
- OMNIBOT_SESSION_TOKEN=research omnibot tab new https://example.com --label research
198
- OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
199
- OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
200
- ```
201
-
202
- History and lifecycle:
203
-
204
- ```bash
205
- OMNIBOT_SESSION_TOKEN=research omnibot back --tab-id <TAB_ID>
206
- OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
207
- OMNIBOT_SESSION_TOKEN=research omnibot forward --tab-id <TAB_ID>
208
- OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
209
- OMNIBOT_SESSION_TOKEN=research omnibot reload --tab-id <TAB_ID>
210
- OMNIBOT_SESSION_TOKEN=research omnibot wait --load domcontentloaded --tab-id <TAB_ID>
211
- ```
212
-
213
- Other navigation commands:
214
-
215
- ```bash
216
- OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com
217
- OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com --same-tab --tab-id <TAB_ID>
218
- OMNIBOT_SESSION_TOKEN=research omnibot open https://example.com
219
- OMNIBOT_SESSION_TOKEN=research omnibot goto https://example.com --tab-id <TAB_ID>
220
- OMNIBOT_SESSION_TOKEN=research omnibot pushstate /dashboard --tab-id <TAB_ID>
221
- OMNIBOT_SESSION_TOKEN=research omnibot close <TAB_ID>
222
- OMNIBOT_SESSION_TOKEN=research omnibot tab list
223
- OMNIBOT_SESSION_TOKEN=research omnibot tab close research
224
- OMNIBOT_SESSION_TOKEN=research omnibot window new
225
- OMNIBOT_SESSION_TOKEN=research omnibot frame main
226
- ```
227
-
228
- ### Verification
229
-
230
- Always verify the final target:
231
-
232
- ```bash
233
- OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
234
- OMNIBOT_SESSION_TOKEN=research omnibot wait --load networkidle --tab-id <TAB_ID>
235
- OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
236
- ```
237
-
238
- ### Fallback entry point
239
-
240
- Same-tab navigation must include `--tab-id <TAB_ID>`. If the target tab id is unknown, run `omnibot tabs` first and choose the intended tab explicitly.
241
-
242
- ## Wait
243
-
244
- ### When to use
245
-
246
- Use Wait after navigation, clicks, form submissions, reloads, dynamic rendering, lazy loading, or any action that changes asynchronous state.
247
-
248
- ### Preferred sequence
249
-
250
- 1. Wait for selector visibility or hidden state.
251
- 2. Wait for text.
252
- 3. Wait for URL.
253
- 4. Wait for load state.
254
- 5. Wait for a JavaScript condition with `--fn`.
255
- 6. Avoid shell sleep.
256
-
257
- ### Example
258
-
259
- ```bash
260
- OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
261
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#spinner" --state hidden --tab-id <TAB_ID>
262
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --text "Welcome" --tab-id <TAB_ID>
263
- OMNIBOT_SESSION_TOKEN=checkout omnibot get text "#main" --tab-id <TAB_ID>
264
- ```
265
-
266
- Other waits:
267
-
268
- ```bash
269
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
270
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load domcontentloaded --tab-id <TAB_ID>
271
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load networkidle --tab-id <TAB_ID>
272
- OMNIBOT_SESSION_TOKEN=checkout omnibot wait --fn "window.appReady === true" --tab-id <TAB_ID>
273
- ```
274
-
275
- ### Verification
276
-
277
- After waiting, read the final condition with `get`, `is`, `wait`, or `snapshot`.
278
-
279
- ### Fallback entry point
280
-
281
- If waits time out, collect evidence with `debugging-and-evidence.md`; do not replace them with shell sleep.
282
-
283
- ## Extraction
284
-
285
- ### When to use
286
-
287
- Use Extraction for retrieving page text, HTML fragments, links, counts, assets, or clipboard data.
288
-
289
- ### Preferred sequence
290
-
291
- 1. `get text/html/attr/count` for targeted extraction.
292
- 2. `read --screens N` for clean page text, long pages, or lazy-loaded content.
293
- 3. `snapshot -i` for structured page observation before action planning.
294
- 4. `assets list/export` for resources.
295
- 5. `clipboard read` only when clipboard content is part of the task.
296
-
297
- ### Example
298
-
299
- ```bash
300
- OMNIBOT_SESSION_TOKEN=extract omnibot get text "#article" --tab-id <TAB_ID>
301
- OMNIBOT_SESSION_TOKEN=extract omnibot get attr "a.next" href --tab-id <TAB_ID>
302
- OMNIBOT_SESSION_TOKEN=extract omnibot get count ".result" --tab-id <TAB_ID>
303
- ```
304
-
305
- Long page example:
306
-
307
- ```bash
308
- OMNIBOT_SESSION_TOKEN=extract omnibot read --screens 5 --tab-id <TAB_ID>
309
- OMNIBOT_SESSION_TOKEN=extract omnibot assets list --tab-id <TAB_ID>
310
- ```
311
-
312
- ### Verification
313
-
314
- Verify extraction completeness with expected markers in `read`, element counts, or targeted reads for known selectors.
315
-
316
- ### Fallback entry point
317
-
318
- If content exists only in runtime objects, use `fallback-operations.md#javascript-fallback` after explaining why `read`, `snapshot`, and `get` could not access it.
319
-
320
- ## Upload
321
-
322
- ### When to use
323
-
324
- Native upload is currently unavailable in the extension transport. Do not use `omnibot upload` as an agent workflow step until file chooser support is implemented.
325
-
326
- ### Preferred sequence
327
-
328
- 1. Observe the upload UI and confirm the task requires a local file.
329
- 2. Report that native upload is currently unavailable.
330
- 3. If the user still wants a workaround, ask for approval before using page-specific JavaScript or manual browser interaction.
331
-
332
- ### Example
333
-
334
- ```bash
335
- OMNIBOT_SESSION_TOKEN=form omnibot snapshot -i --tab-id <TAB_ID>
336
- # upload is currently unavailable; do not run omnibot upload here.
337
- ```
338
-
339
- ### Verification
340
-
341
- If upload support is implemented later, verify with visible filename, count, enabled submit state, or application-specific confirmation:
342
-
343
- ```bash
344
- OMNIBOT_SESSION_TOKEN=form omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
345
- ```
346
-
347
- ### Fallback entry point
348
-
349
- Do not treat JavaScript as a normal upload fallback. File inputs and browser file chooser behavior are security-sensitive and page-specific.
350
-
351
- ## Batch
352
-
353
- ### When to use
354
-
355
- Use Batch for short, known-safe extension/CDP command chains where the target tab and verification are already explicit. Batch is not a wrapper for normal CLI commands such as `snapshot` or `click`.
356
-
357
- ### Preferred sequence
358
-
359
- 1. Keep batches short.
360
- 2. Include only deterministic operations.
361
- 3. Verify after the batch with a separate command.
362
- 4. Use `--file` for complex JSON quoting.
363
-
364
- ### Example
365
-
366
- ```bash
367
- OMNIBOT_SESSION_TOKEN=research omnibot batch '[{"cmd":"cdp","method":"Runtime.evaluate","params":{"expression":"document.title","returnByValue":true}}]' --tab-id <TAB_ID>
368
- OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
369
- ```
370
-
371
- File example:
372
-
373
- ```bash
374
- OMNIBOT_SESSION_TOKEN=research omnibot batch --file /tmp/omnibot-batch.json --tab-id <TAB_ID>
375
- OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
376
- ```
377
-
378
- ### Verification
379
-
380
- Do not treat batch success as task success. Verify final page state separately.
381
-
382
- ### Fallback entry point
383
-
384
- Batch is not a fallback tier. If a batched operation fails, re-run the workflow step-by-step and enter the normal fallback model.
1
+ # Operation Patterns
2
+
3
+ Use this file to choose behavior by task. Every page-state workflow must set `OMNIBOT_SESSION_TOKEN=<workflow-name>` and pass `--tab-id <TAB_ID>` on each page-state command.
4
+
5
+ ## Read
6
+
7
+ ### When to use
8
+
9
+ Use Read when the agent needs clean rendered page content: article text, search results, feed items, long pages, lazy-loaded text, or a human-readable summary source.
10
+
11
+ Use targeted state commands when the agent needs one value, visibility, enabled/checked state, layout box, or computed styles. Use `snapshot -i` when the agent needs current visible UI structure for deciding the next action.
12
+
13
+ ### Preferred sequence
14
+
15
+ 1. `read --tab-id <TAB_ID>` for clean page text on an existing tab.
16
+ 2. `read --screens N --tab-id <TAB_ID>` for longer or lazy-loaded pages.
17
+ 3. `read <URL>` when opening a temporary tab only for reading that URL.
18
+ 4. `get title/url/text/html/value/attr/count/box/styles` for narrow evidence.
19
+ 5. `is visible/enabled/checked` for boolean state.
20
+ 5. `snapshot -i` when actionable refs are needed.
21
+ 6. `dom visible` or `execute-js` fallback only after standard reads cannot access the state.
22
+
23
+ ### Example
24
+
25
+ ```bash
26
+ OMNIBOT_SESSION_TOKEN=research omnibot read --screens 5 --tab-id <TAB_ID>
27
+ OMNIBOT_SESSION_TOKEN=research omnibot read --screens 3 https://example.com/article
28
+ ```
29
+
30
+ ### Verification
31
+
32
+ Use the narrowest read that proves the claim:
33
+
34
+ ```bash
35
+ OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
36
+ OMNIBOT_SESSION_TOKEN=research omnibot is visible "#main" --tab-id <TAB_ID>
37
+ OMNIBOT_SESSION_TOKEN=research omnibot get count ".result" --tab-id <TAB_ID>
38
+ ```
39
+
40
+ ### Fallback entry point
41
+
42
+ If `read` or targeted reads omit needed runtime state, go to `fallback-operations.md#fallback-tier-model`. Start with DOM fallback before JavaScript.
43
+
44
+ ## Click
45
+
46
+ ### When to use
47
+
48
+ Use Click for buttons, links, menu items, cards, checkouts, modal actions, and any user-like click target.
49
+
50
+ ### Preferred sequence
51
+
52
+ 1. `find role/text/testid --action click`
53
+ 2. `snapshot -i` -> `click @eN`
54
+ 3. `click selector`
55
+ 4. `dom click`
56
+ 5. `mouse click`
57
+ 6. `execute-js` click
58
+ 7. `cdp` fallback
59
+
60
+ ### Example
61
+
62
+ ```bash
63
+ OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
64
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find role button --name "Submit" --action click --tab-id <TAB_ID>
65
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
66
+ ```
67
+
68
+ If semantic find is ambiguous, use refs from the same tab:
69
+
70
+ ```bash
71
+ OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
72
+ OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
73
+ OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
74
+ ```
75
+
76
+ ### Verification
77
+
78
+ Verify the expected state, not just command success:
79
+
80
+ ```bash
81
+ OMNIBOT_SESSION_TOKEN=checkout omnibot get url --tab-id <TAB_ID>
82
+ OMNIBOT_SESSION_TOKEN=checkout omnibot is visible ".success" --tab-id <TAB_ID>
83
+ ```
84
+
85
+ ### Fallback entry point
86
+
87
+ If semantic and refs fail, document why and continue at `fallback-operations.md#selector-fallback`.
88
+
89
+ ### Static-text refs
90
+
91
+ When `snapshot -i` shows only `StaticText` for a visible control label, do not assume the text ref itself is clickable. Prefer, in order:
92
+
93
+ 1. `find role button --name "<label>" --action click`.
94
+ 2. `click "text=<label>"`.
95
+ 3. `get box "text=<label>"` followed by `mouse click <center-x> <center-y>`.
96
+ 4. CDP/JS fallback only after verifying the semantic and coordinate paths failed.
97
+
98
+ ## Fill
99
+
100
+ ### When to use
101
+
102
+ Use Fill for text inputs, textareas, search boxes, login fields, and form fields where the final value must be controlled.
103
+
104
+ ### Preferred sequence
105
+
106
+ 1. `find label/placeholder --action fill`
107
+ 2. `snapshot -i` -> `fill @eN`
108
+ 3. `fill selector`
109
+ 4. `focus` + `type`
110
+ 5. `execute-js` set value and dispatch `input`/`change` events
111
+
112
+ ### Example
113
+
114
+ ```bash
115
+ OMNIBOT_SESSION_TOKEN=checkout omnibot find label "Email" --action fill --action-value "a@b.com" --tab-id <TAB_ID>
116
+ OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
117
+ ```
118
+
119
+ With refs:
120
+
121
+ ```bash
122
+ OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
123
+ OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
124
+ OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
125
+ ```
126
+
127
+ ### Verification
128
+
129
+ Use `get value`, visible validation text, enabled state, or submit readiness:
130
+
131
+ ```bash
132
+ OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
133
+ OMNIBOT_SESSION_TOKEN=checkout omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
134
+ ```
135
+
136
+ ### Fallback entry point
137
+
138
+ If fill does not update the application state, use `fallback-operations.md#javascript-fallback` only after selector/focus/type attempts fail. JavaScript must dispatch real `input` and `change` events.
139
+
140
+ ## Select / Check
141
+
142
+ ### When to use
143
+
144
+ Use this pattern for dropdowns, comboboxes, checkboxes, toggles, agreement boxes, filters, and boolean controls.
145
+
146
+ ### Preferred sequence
147
+
148
+ 1. Use `snapshot -i` first; visible comboboxes may include auto-probed option refs.
149
+ 2. Use `click @option` if `snapshot -i` lists auto-probed combobox option refs.
150
+ 3. Use `select @combobox "value"` for native selects or simple select-like controls.
151
+ 4. Use `check` / `uncheck` for boolean controls.
152
+ 5. Verify selected label, value, URL query, result count, or dependent page state.
153
+
154
+ `snapshot -i` can list options for visible custom comboboxes even though the dropdown closes during observation. These refs are still actionable because Omnibot stores the option's `openerSelector` and can reopen the owning combobox before clicking the option.
155
+
156
+ ### Example
157
+
158
+ ```bash
159
+ OMNIBOT_SESSION_TOKEN=form omnibot snapshot -i --tab-id <TAB_ID>
160
+ OMNIBOT_SESSION_TOKEN=form omnibot click @e22 --tab-id <TAB_ID> # @e22 [option] "OpenAI Chat"
161
+ OMNIBOT_SESSION_TOKEN=form omnibot get url --tab-id <TAB_ID>
162
+ ```
163
+
164
+ Checkbox example:
165
+
166
+ ```bash
167
+ OMNIBOT_SESSION_TOKEN=form omnibot is checked "#agree" --tab-id <TAB_ID>
168
+ OMNIBOT_SESSION_TOKEN=form omnibot check "#agree" --tab-id <TAB_ID>
169
+ OMNIBOT_SESSION_TOKEN=form omnibot is checked "#agree" --tab-id <TAB_ID>
170
+ ```
171
+
172
+ ### Verification
173
+
174
+ For checkboxes, verify boolean state. For selects, verify value or dependent page state.
175
+
176
+ ### CSS-only dropdowns and custom menus
177
+
178
+ Some dropdowns, hover menus, tooltips, and custom selects are CSS-only or portal-based widgets. The visible trigger may be accessible, while the option nodes are hidden `<div>` elements without `role`, accessible name, or stable refs. Start with `snapshot -i`; visible comboboxes may include auto-probed option refs before any manual dropdown opening.
179
+
180
+ Escalation order:
181
+
182
+ 1. Run `snapshot -i` and look for `[option]` refs near the combobox.
183
+ 2. If an option ref exists, click the option ref directly and verify.
184
+ 3. If options are absent, click/hover the trigger once, run `snapshot -i` again, then click the option ref if it appears.
185
+ 4. If trigger interaction works but options remain absent or option refs fail verification, use `fallback-operations.md#css-only-dropdown-javascript-fallback`.
186
+
187
+ Do not loop on manual open -> snapshot -> open -> snapshot when `snapshot -i` already lists auto-probed combobox options.
188
+
189
+ ### Fallback entry point
190
+
191
+ If native select/check fails, use `fallback-operations.md#selector-fallback`. Use JavaScript only if events must be synthesized or if evidence shows a CSS-only multi-step widget cannot be completed through semantic, snapshot, selector, DOM, or mouse tiers.
192
+
193
+ ## Navigation
194
+
195
+ ### When to use
196
+
197
+ Use Navigation to open pages, create tabs, change history, reload, close tabs, move between pages, create windows, or select frames.
198
+
199
+ ### Preferred sequence
200
+
201
+ 1. Create or discover a tab with `tabs`, `tab list`, `tab new`, `open`, or `navigate`.
202
+ 2. Save the returned tab id.
203
+ 3. Verify with `get url --tab-id <TAB_ID>`.
204
+ 4. Run all later page-state commands with `--tab-id <TAB_ID>`.
205
+
206
+ ### Example
207
+
208
+ ```bash
209
+ OMNIBOT_SESSION_TOKEN=research omnibot tab new https://example.com --label research
210
+ OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
211
+ OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
212
+ ```
213
+
214
+ History and lifecycle:
215
+
216
+ ```bash
217
+ OMNIBOT_SESSION_TOKEN=research omnibot back --tab-id <TAB_ID>
218
+ OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
219
+ OMNIBOT_SESSION_TOKEN=research omnibot forward --tab-id <TAB_ID>
220
+ OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
221
+ OMNIBOT_SESSION_TOKEN=research omnibot reload --tab-id <TAB_ID>
222
+ OMNIBOT_SESSION_TOKEN=research omnibot wait --load domcontentloaded --tab-id <TAB_ID>
223
+ ```
224
+
225
+ Other navigation commands:
226
+
227
+ ```bash
228
+ OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com
229
+ OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com --same-tab --tab-id <TAB_ID>
230
+ OMNIBOT_SESSION_TOKEN=research omnibot open https://example.com
231
+ OMNIBOT_SESSION_TOKEN=research omnibot goto https://example.com --tab-id <TAB_ID>
232
+ OMNIBOT_SESSION_TOKEN=research omnibot pushstate /dashboard --tab-id <TAB_ID>
233
+ OMNIBOT_SESSION_TOKEN=research omnibot close <TAB_ID>
234
+ OMNIBOT_SESSION_TOKEN=research omnibot tab list
235
+ OMNIBOT_SESSION_TOKEN=research omnibot tab close research
236
+ OMNIBOT_SESSION_TOKEN=research omnibot window new
237
+ OMNIBOT_SESSION_TOKEN=research omnibot frame main
238
+ ```
239
+
240
+ ### Verification
241
+
242
+ Always verify the final target:
243
+
244
+ ```bash
245
+ OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
246
+ OMNIBOT_SESSION_TOKEN=research omnibot wait --load networkidle --tab-id <TAB_ID>
247
+ OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
248
+ ```
249
+
250
+ ### Fallback entry point
251
+
252
+ Same-tab navigation must include `--tab-id <TAB_ID>`. If the target tab id is unknown, run `omnibot tabs` first and choose the intended tab explicitly.
253
+
254
+ ## Wait
255
+
256
+ ### When to use
257
+
258
+ Use Wait after navigation, clicks, form submissions, reloads, dynamic rendering, lazy loading, or any action that changes asynchronous state.
259
+
260
+ ### Preferred sequence
261
+
262
+ 1. Wait for selector visibility or hidden state.
263
+ 2. Wait for text.
264
+ 3. Wait for URL.
265
+ 4. Wait for load state.
266
+ 5. Wait for a JavaScript condition with `--fn`.
267
+ 6. Avoid shell sleep.
268
+
269
+ ### Example
270
+
271
+ ```bash
272
+ OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
273
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#spinner" --state hidden --tab-id <TAB_ID>
274
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --text "Welcome" --tab-id <TAB_ID>
275
+ OMNIBOT_SESSION_TOKEN=checkout omnibot get text "#main" --tab-id <TAB_ID>
276
+ ```
277
+
278
+ Other waits:
279
+
280
+ ```bash
281
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
282
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load domcontentloaded --tab-id <TAB_ID>
283
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load networkidle --tab-id <TAB_ID>
284
+ OMNIBOT_SESSION_TOKEN=checkout omnibot wait --fn "window.appReady === true" --tab-id <TAB_ID>
285
+ ```
286
+
287
+ ### Verification
288
+
289
+ After waiting, read the final condition with `get`, `is`, `wait`, or `snapshot`.
290
+
291
+ ### Fallback entry point
292
+
293
+ If waits time out, collect evidence with `debugging-and-evidence.md`; do not replace them with shell sleep.
294
+
295
+ ## Extraction
296
+
297
+ ### When to use
298
+
299
+ Use Extraction for retrieving page text, HTML fragments, links, counts, assets, or clipboard data.
300
+
301
+ ### Preferred sequence
302
+
303
+ 1. `get text/html/attr/count` for targeted extraction.
304
+ 2. `read --screens N` for clean page text, long pages, or lazy-loaded content.
305
+ 3. `snapshot -i` for structured page observation before action planning.
306
+ 4. `assets list/export` for resources.
307
+ 5. `clipboard read` only when clipboard content is part of the task.
308
+
309
+ ### Example
310
+
311
+ ```bash
312
+ OMNIBOT_SESSION_TOKEN=extract omnibot get text "#article" --tab-id <TAB_ID>
313
+ OMNIBOT_SESSION_TOKEN=extract omnibot get attr "a.next" href --tab-id <TAB_ID>
314
+ OMNIBOT_SESSION_TOKEN=extract omnibot get count ".result" --tab-id <TAB_ID>
315
+ ```
316
+
317
+ Long page example:
318
+
319
+ ```bash
320
+ OMNIBOT_SESSION_TOKEN=extract omnibot read --screens 5 --tab-id <TAB_ID>
321
+ OMNIBOT_SESSION_TOKEN=extract omnibot assets list --tab-id <TAB_ID>
322
+ ```
323
+
324
+ ### Verification
325
+
326
+ Verify extraction completeness with expected markers in `read`, element counts, or targeted reads for known selectors.
327
+
328
+ ### Fallback entry point
329
+
330
+ If content exists only in runtime objects, use `fallback-operations.md#javascript-fallback` after explaining why `read`, `snapshot`, and `get` could not access it.
331
+
332
+ ## Upload
333
+
334
+ ### When to use
335
+
336
+ Native upload is currently unavailable in the extension transport. Do not use `omnibot upload` as an agent workflow step until file chooser support is implemented.
337
+
338
+ ### Preferred sequence
339
+
340
+ 1. Observe the upload UI and confirm the task requires a local file.
341
+ 2. Report that native upload is currently unavailable.
342
+ 3. If the user still wants a workaround, ask for approval before using page-specific JavaScript or manual browser interaction.
343
+
344
+ ### Example
345
+
346
+ ```bash
347
+ OMNIBOT_SESSION_TOKEN=form omnibot snapshot -i --tab-id <TAB_ID>
348
+ # upload is currently unavailable; do not run omnibot upload here.
349
+ ```
350
+
351
+ ### Verification
352
+
353
+ If upload support is implemented later, verify with visible filename, count, enabled submit state, or application-specific confirmation:
354
+
355
+ ```bash
356
+ OMNIBOT_SESSION_TOKEN=form omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
357
+ ```
358
+
359
+ ### Fallback entry point
360
+
361
+ Do not treat JavaScript as a normal upload fallback. File inputs and browser file chooser behavior are security-sensitive and page-specific.
362
+
363
+ ## Batch
364
+
365
+ ### When to use
366
+
367
+ Use Batch for short, known-safe extension/CDP command chains where the target tab and verification are already explicit. Batch is not a wrapper for normal CLI commands such as `snapshot` or `click`.
368
+
369
+ ### Preferred sequence
370
+
371
+ 1. Keep batches short.
372
+ 2. Include only deterministic operations.
373
+ 3. Verify after the batch with a separate command.
374
+ 4. Use `--file` for complex JSON quoting.
375
+
376
+ ### Example
377
+
378
+ ```bash
379
+ OMNIBOT_SESSION_TOKEN=research omnibot batch '[{"cmd":"cdp","method":"Runtime.evaluate","params":{"expression":"document.title","returnByValue":true}}]' --tab-id <TAB_ID>
380
+ OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
381
+ ```
382
+
383
+ File example:
384
+
385
+ ```bash
386
+ OMNIBOT_SESSION_TOKEN=research omnibot batch --file /tmp/omnibot-batch.json --tab-id <TAB_ID>
387
+ OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
388
+ ```
389
+
390
+ ### Verification
391
+
392
+ Do not treat batch success as task success. Verify final page state separately.
393
+
394
+ ### Fallback entry point
395
+
396
+ Batch is not a fallback tier. If a batched operation fails, re-run the workflow step-by-step and enter the normal fallback model.