@omniaibot/win-x64 0.3.11 → 1.1.0
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.
- package/bin/omnibot-windows-x64/VERSION +1 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/SKILL.md +173 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/anti-patterns.md +29 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/command-reference.md +579 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/debugging-and-evidence.md +95 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/fallback-operations.md +157 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/operation-patterns.md +369 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/runtime-and-status.md +89 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/session-and-tabs.md +148 -0
- package/bin/{omnibot-win-x64 → omnibot-windows-x64}/omnibot-windows-x64.exe +0 -0
- package/package.json +5 -2
- package/bin/omnibot-win-x64/VERSION +0 -1
- package/bin/omnibot-win-x64/omnibot/skills/omnibot/SKILL.md +0 -159
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/81d243bd2c585b0f4821__mypyc.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_asyncio.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_bz2.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_cffi_backend.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_ctypes.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_decimal.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_hashlib.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_lzma.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_multiprocessing.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_overlapped.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_queue.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_socket.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_ssl.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_uuid.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/_wmi.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/certifi/cacert.pem +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/charset_normalizer/cd.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/charset_normalizer/md.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/cryptography/hazmat/bindings/_rust.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/ffi.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libbz2.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libcrypto-3-x64.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libexpat.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/liblzma.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libmpdec-4.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/libssl-3-x64.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/omnibot/sop/tmwebdriver_sop.md +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/omnibot/sop/vue3_component_sop.md +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/pyexpat.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/python3.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/python313.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/select.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/unicodedata.pyd +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/vcruntime140.dll +0 -0
- /package/bin/{omnibot-win-x64 → omnibot-windows-x64}/zlib.dll +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Fallback Operations
|
|
2
|
+
|
|
3
|
+
Fallback is for completing operations after preferred patterns fail. It is not debugging. Debugging collects evidence; fallback changes page state.
|
|
4
|
+
|
|
5
|
+
Every fallback escalation must answer two questions:
|
|
6
|
+
|
|
7
|
+
- Which higher tier failed, and why?
|
|
8
|
+
- How will the result be verified?
|
|
9
|
+
|
|
10
|
+
## Fallback Tier Model
|
|
11
|
+
|
|
12
|
+
### Tier 1 Semantic
|
|
13
|
+
|
|
14
|
+
Use semantic intent first:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot find role button --name "Submit" --action click --tab-id <TAB_ID>
|
|
18
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot find text "Sign in" --action click --tab-id <TAB_ID>
|
|
19
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot find label "Email" --action fill --action-value "a@b.com" --tab-id <TAB_ID>
|
|
20
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot find placeholder "Search" --action type --action-value "omnibot" --tab-id <TAB_ID>
|
|
21
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot find testid submit-button --action click --tab-id <TAB_ID>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Verify:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Tier 2 Snapshot Refs
|
|
31
|
+
|
|
32
|
+
Use refs when semantic targeting is missing or ambiguous.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
36
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
|
|
37
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Refs are tab-scoped. Never reuse `@eN` across tabs or after large DOM changes without a fresh snapshot.
|
|
41
|
+
|
|
42
|
+
## Selector Fallback
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Tier 3 Selector
|
|
46
|
+
|
|
47
|
+
Use selectors only after semantic find and refs are unavailable or unreliable.
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot click "button[type=submit]" --tab-id <TAB_ID>
|
|
51
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot fill "input[name=email]" "a@b.com" --tab-id <TAB_ID>
|
|
52
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot focus "input[name=email]" --tab-id <TAB_ID>
|
|
53
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Verify with `get`, `is`, `wait`, or `snapshot`.
|
|
57
|
+
|
|
58
|
+
## DOM Fallback
|
|
59
|
+
|
|
60
|
+
### Tier 4 DOM
|
|
61
|
+
|
|
62
|
+
Use DOM node fallback when selectors exist but standard commands fail due overlays, custom event routing, or unstable selectors.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot dom visible --tab-id <TAB_ID>
|
|
66
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot dom click n1 --tab-id <TAB_ID>
|
|
67
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot dom dblclick n1 --tab-id <TAB_ID>
|
|
68
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot dom scroll n1 --dy 800 --tab-id <TAB_ID>
|
|
69
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot snapshot -i --tab-id <TAB_ID>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Do not use `dom` as the first click path. It bypasses higher-level intent and can target the wrong node if the visible-node list changes.
|
|
73
|
+
|
|
74
|
+
## Mouse Fallback
|
|
75
|
+
|
|
76
|
+
### Tier 5 Mouse
|
|
77
|
+
|
|
78
|
+
Use coordinate mouse operations only when element-based actions cannot reach the target.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot get box "#canvas-button" --tab-id <TAB_ID>
|
|
82
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot mouse click --x 100 --y 200 --tab-id <TAB_ID>
|
|
83
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot snapshot -i --tab-id <TAB_ID>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Other mouse operations:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot mouse move --x 50 --y 60 --tab-id <TAB_ID>
|
|
90
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot mouse scroll --x 100 --y 200 --dy 500 --tab-id <TAB_ID>
|
|
91
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot mouse drag --from-x 10 --from-y 20 --to-x 100 --to-y 200 --tab-id <TAB_ID>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Mouse fallback is fragile across viewport size, scroll position, and responsive layouts. Verify immediately.
|
|
95
|
+
|
|
96
|
+
## JavaScript Fallback
|
|
97
|
+
|
|
98
|
+
### Tier 6 JavaScript
|
|
99
|
+
|
|
100
|
+
Do not use `execute-js` first.
|
|
101
|
+
|
|
102
|
+
Use `execute-js` only when:
|
|
103
|
+
|
|
104
|
+
- Semantic find fails.
|
|
105
|
+
- Snapshot refs are unstable.
|
|
106
|
+
- CSS selector operation fails.
|
|
107
|
+
- DOM fallback fails.
|
|
108
|
+
- A complex frontend event must be triggered.
|
|
109
|
+
- Runtime state cannot be read through `scan`, `full-scan`, `get`, or `is`.
|
|
110
|
+
|
|
111
|
+
Read-only JavaScript fallback:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot execute-js "return window.appState?.status" --tab-id <TAB_ID>
|
|
115
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot get text "#status" --tab-id <TAB_ID>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Input JavaScript fallback must trigger real browser events:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot execute-js "const el=document.querySelector('input[name=email]'); el.value='a@b.com'; el.dispatchEvent(new Event('input',{bubbles:true})); el.dispatchEvent(new Event('change',{bubbles:true})); return el.value;" --tab-id <TAB_ID>
|
|
122
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot get value "input[name=email]" --tab-id <TAB_ID>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Click JavaScript fallback should call the element click only after higher tiers fail:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot execute-js "document.querySelector('button[type=submit]')?.click(); return true;" --tab-id <TAB_ID>
|
|
129
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot wait --url "/dashboard" --tab-id <TAB_ID>
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Prefer `--file` for longer scripts:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot execute-js --file /tmp/omnibot-repair.js --tab-id <TAB_ID>
|
|
136
|
+
OMNIBOT_SESSION_TOKEN=repair omnibot snapshot -i --tab-id <TAB_ID>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Raw CDP Fallback
|
|
140
|
+
|
|
141
|
+
### Tier 7 Raw CDP
|
|
142
|
+
|
|
143
|
+
Raw CDP is the last resort. Use it only when standard commands and JavaScript fallback cannot complete or inspect the task.
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
OMNIBOT_SESSION_TOKEN=debug omnibot cdp Runtime.evaluate '{"expression":"document.title"}' --tab-id <TAB_ID>
|
|
147
|
+
OMNIBOT_SESSION_TOKEN=debug omnibot cdp DOM.getDocument '{"depth":1}' --tab-id <TAB_ID>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
After CDP fallback, verify using normal Omnibot reads whenever possible:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
OMNIBOT_SESSION_TOKEN=debug omnibot get title --tab-id <TAB_ID>
|
|
154
|
+
OMNIBOT_SESSION_TOKEN=debug omnibot snapshot -i --tab-id <TAB_ID>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
CDP can bypass application-level event semantics. Treat it as expert-only infrastructure access.
|
|
@@ -0,0 +1,369 @@
|
|
|
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 current browser state, page text, a single value, visibility, enabled/checked state, layout box, or computed styles.
|
|
10
|
+
|
|
11
|
+
### Preferred sequence
|
|
12
|
+
|
|
13
|
+
1. `get title/url/text/html/value/attr/count/box/styles`
|
|
14
|
+
2. `is visible/enabled/checked`
|
|
15
|
+
3. `scan --json`
|
|
16
|
+
4. `full-scan`
|
|
17
|
+
5. `snapshot -i`
|
|
18
|
+
6. `dom visible`
|
|
19
|
+
7. `execute-js` fallback
|
|
20
|
+
|
|
21
|
+
### Example
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get title --tab-id <TAB_ID>
|
|
25
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
|
|
26
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get text "#main" --tab-id <TAB_ID>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Verification
|
|
30
|
+
|
|
31
|
+
Use the narrowest read that proves the claim:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
OMNIBOT_SESSION_TOKEN=research omnibot is visible "#main" --tab-id <TAB_ID>
|
|
35
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get count ".result" --tab-id <TAB_ID>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Fallback entry point
|
|
39
|
+
|
|
40
|
+
If targeted reads fail or omit needed runtime state, go to `fallback-operations.md#fallback-tier-model`. Start with DOM fallback before JavaScript.
|
|
41
|
+
|
|
42
|
+
## Click
|
|
43
|
+
|
|
44
|
+
### When to use
|
|
45
|
+
|
|
46
|
+
Use Click for buttons, links, menu items, cards, checkouts, modal actions, and any user-like click target.
|
|
47
|
+
|
|
48
|
+
### Preferred sequence
|
|
49
|
+
|
|
50
|
+
1. `find role/text/testid --action click`
|
|
51
|
+
2. `snapshot -i` -> `click @eN`
|
|
52
|
+
3. `click selector`
|
|
53
|
+
4. `dom click`
|
|
54
|
+
5. `mouse click`
|
|
55
|
+
6. `execute-js` click
|
|
56
|
+
7. `cdp` fallback
|
|
57
|
+
|
|
58
|
+
### Example
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
62
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot find role button --name "Submit" --action click --tab-id <TAB_ID>
|
|
63
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
If semantic find is ambiguous, use refs from the same tab:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
70
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
|
|
71
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Verification
|
|
75
|
+
|
|
76
|
+
Verify the expected state, not just command success:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get url --tab-id <TAB_ID>
|
|
80
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot is visible ".success" --tab-id <TAB_ID>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Fallback entry point
|
|
84
|
+
|
|
85
|
+
If semantic and refs fail, document why and continue at `fallback-operations.md#selector-fallback`.
|
|
86
|
+
|
|
87
|
+
## Fill
|
|
88
|
+
|
|
89
|
+
### When to use
|
|
90
|
+
|
|
91
|
+
Use Fill for text inputs, textareas, search boxes, login fields, and form fields where the final value must be controlled.
|
|
92
|
+
|
|
93
|
+
### Preferred sequence
|
|
94
|
+
|
|
95
|
+
1. `find label/placeholder --action fill`
|
|
96
|
+
2. `snapshot -i` -> `fill @eN`
|
|
97
|
+
3. `fill selector`
|
|
98
|
+
4. `focus` + `type`
|
|
99
|
+
5. `execute-js` set value and dispatch `input`/`change` events
|
|
100
|
+
|
|
101
|
+
### Example
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot find label "Email" --action fill --action-value "a@b.com" --tab-id <TAB_ID>
|
|
105
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
With refs:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot snapshot -i --tab-id <TAB_ID>
|
|
112
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
|
|
113
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Verification
|
|
117
|
+
|
|
118
|
+
Use `get value`, visible validation text, enabled state, or submit readiness:
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
|
|
122
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Fallback entry point
|
|
126
|
+
|
|
127
|
+
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.
|
|
128
|
+
|
|
129
|
+
## Select / Check
|
|
130
|
+
|
|
131
|
+
### When to use
|
|
132
|
+
|
|
133
|
+
Use this pattern for dropdowns, checkboxes, toggles, agreement boxes, filters, and boolean controls.
|
|
134
|
+
|
|
135
|
+
### Preferred sequence
|
|
136
|
+
|
|
137
|
+
1. Observe state with `snapshot -i` and `is checked` when relevant.
|
|
138
|
+
2. Use `select`, `check`, or `uncheck` with refs or selectors.
|
|
139
|
+
3. Verify with `get value`, `is checked`, visible text, or result count.
|
|
140
|
+
|
|
141
|
+
### Example
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
OMNIBOT_SESSION_TOKEN=form omnibot snapshot -i --tab-id <TAB_ID>
|
|
145
|
+
OMNIBOT_SESSION_TOKEN=form omnibot select @e5 "US" --tab-id <TAB_ID>
|
|
146
|
+
OMNIBOT_SESSION_TOKEN=form omnibot get value "select[name=country]" --tab-id <TAB_ID>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Checkbox example:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
OMNIBOT_SESSION_TOKEN=form omnibot is checked "#agree" --tab-id <TAB_ID>
|
|
153
|
+
OMNIBOT_SESSION_TOKEN=form omnibot check "#agree" --tab-id <TAB_ID>
|
|
154
|
+
OMNIBOT_SESSION_TOKEN=form omnibot is checked "#agree" --tab-id <TAB_ID>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Verification
|
|
158
|
+
|
|
159
|
+
For checkboxes, verify boolean state. For selects, verify value or dependent page state.
|
|
160
|
+
|
|
161
|
+
### Fallback entry point
|
|
162
|
+
|
|
163
|
+
If native select/check fails, use `fallback-operations.md#selector-fallback`, then JavaScript only if events must be synthesized.
|
|
164
|
+
|
|
165
|
+
## Navigation
|
|
166
|
+
|
|
167
|
+
### When to use
|
|
168
|
+
|
|
169
|
+
Use Navigation to open pages, create tabs, change history, reload, close tabs, move between pages, create windows, or select frames.
|
|
170
|
+
|
|
171
|
+
### Preferred sequence
|
|
172
|
+
|
|
173
|
+
1. Create or discover a tab with `tabs`, `tab list`, `tab new`, `open`, or `navigate`.
|
|
174
|
+
2. Save the returned tab id.
|
|
175
|
+
3. Verify with `get url --tab-id <TAB_ID>`.
|
|
176
|
+
4. Run all later page-state commands with `--tab-id <TAB_ID>`.
|
|
177
|
+
|
|
178
|
+
### Example
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
OMNIBOT_SESSION_TOKEN=research omnibot tab new https://example.com --label research
|
|
182
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
|
|
183
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
History and lifecycle:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
OMNIBOT_SESSION_TOKEN=research omnibot back --tab-id <TAB_ID>
|
|
190
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
|
|
191
|
+
OMNIBOT_SESSION_TOKEN=research omnibot forward --tab-id <TAB_ID>
|
|
192
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
|
|
193
|
+
OMNIBOT_SESSION_TOKEN=research omnibot reload --tab-id <TAB_ID>
|
|
194
|
+
OMNIBOT_SESSION_TOKEN=research omnibot wait --load domcontentloaded --tab-id <TAB_ID>
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Other navigation commands:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
OMNIBOT_SESSION_TOKEN=research omnibot navigate https://example.com
|
|
201
|
+
OMNIBOT_SESSION_TOKEN=research omnibot navigate --same-tab https://example.com
|
|
202
|
+
OMNIBOT_SESSION_TOKEN=research omnibot open https://example.com
|
|
203
|
+
OMNIBOT_SESSION_TOKEN=research omnibot goto https://example.com
|
|
204
|
+
OMNIBOT_SESSION_TOKEN=research omnibot pushstate /dashboard --tab-id <TAB_ID>
|
|
205
|
+
OMNIBOT_SESSION_TOKEN=research omnibot close <TAB_ID>
|
|
206
|
+
OMNIBOT_SESSION_TOKEN=research omnibot tab list
|
|
207
|
+
OMNIBOT_SESSION_TOKEN=research omnibot tab close research
|
|
208
|
+
OMNIBOT_SESSION_TOKEN=research omnibot window new
|
|
209
|
+
OMNIBOT_SESSION_TOKEN=research omnibot frame main
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Verification
|
|
213
|
+
|
|
214
|
+
Always verify the final target:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
|
|
218
|
+
OMNIBOT_SESSION_TOKEN=research omnibot wait --load networkidle --tab-id <TAB_ID>
|
|
219
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Fallback entry point
|
|
223
|
+
|
|
224
|
+
`switch-tab` cannot be used as a reliable base for multi-step workflows. Use it only for casual single-step work. If targeted same-tab navigation is unavailable, state the limitation, re-observe the tab list, and verify before continuing.
|
|
225
|
+
|
|
226
|
+
## Wait
|
|
227
|
+
|
|
228
|
+
### When to use
|
|
229
|
+
|
|
230
|
+
Use Wait after navigation, clicks, form submissions, reloads, dynamic rendering, lazy loading, or any action that changes asynchronous state.
|
|
231
|
+
|
|
232
|
+
### Preferred sequence
|
|
233
|
+
|
|
234
|
+
1. Wait for selector visibility or hidden state.
|
|
235
|
+
2. Wait for text.
|
|
236
|
+
3. Wait for URL.
|
|
237
|
+
4. Wait for load state.
|
|
238
|
+
5. Wait for a JavaScript condition with `--fn`.
|
|
239
|
+
6. Avoid shell sleep.
|
|
240
|
+
|
|
241
|
+
### Example
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot click --tab-id <TAB_ID> @e4
|
|
245
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot wait "#spinner" --state hidden --tab-id <TAB_ID>
|
|
246
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --text "Welcome" --tab-id <TAB_ID>
|
|
247
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot get text "#main" --tab-id <TAB_ID>
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Other waits:
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --url "/dashboard" --tab-id <TAB_ID>
|
|
254
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load domcontentloaded --tab-id <TAB_ID>
|
|
255
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --load networkidle --tab-id <TAB_ID>
|
|
256
|
+
OMNIBOT_SESSION_TOKEN=checkout omnibot wait --fn "window.appReady === true" --tab-id <TAB_ID>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Verification
|
|
260
|
+
|
|
261
|
+
After waiting, read the final condition with `get`, `is`, `scan`, or `snapshot`.
|
|
262
|
+
|
|
263
|
+
### Fallback entry point
|
|
264
|
+
|
|
265
|
+
If waits time out, collect evidence with `debugging-and-evidence.md`; do not replace them with shell sleep.
|
|
266
|
+
|
|
267
|
+
## Extraction
|
|
268
|
+
|
|
269
|
+
### When to use
|
|
270
|
+
|
|
271
|
+
Use Extraction for retrieving page text, HTML fragments, links, counts, assets, or clipboard data.
|
|
272
|
+
|
|
273
|
+
### Preferred sequence
|
|
274
|
+
|
|
275
|
+
1. `get text/html/attr/count` for targeted extraction.
|
|
276
|
+
2. `scan --json` for structured viewport extraction.
|
|
277
|
+
3. `full-scan` for long or lazy pages.
|
|
278
|
+
4. `assets list/export` for resources.
|
|
279
|
+
5. `clipboard read` only when clipboard content is part of the task.
|
|
280
|
+
|
|
281
|
+
### Example
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
OMNIBOT_SESSION_TOKEN=extract omnibot get text "#article" --tab-id <TAB_ID>
|
|
285
|
+
OMNIBOT_SESSION_TOKEN=extract omnibot get attr "a.next" href --tab-id <TAB_ID>
|
|
286
|
+
OMNIBOT_SESSION_TOKEN=extract omnibot get count ".result" --tab-id <TAB_ID>
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Long page example:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
OMNIBOT_SESSION_TOKEN=extract omnibot full-scan --duration 5 --text-only --tab-id <TAB_ID>
|
|
293
|
+
OMNIBOT_SESSION_TOKEN=extract omnibot assets list --tab-id <TAB_ID>
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Verification
|
|
297
|
+
|
|
298
|
+
Verify extraction completeness with count, repeated scan after scroll, or targeted reads for expected markers.
|
|
299
|
+
|
|
300
|
+
### Fallback entry point
|
|
301
|
+
|
|
302
|
+
If content exists only in runtime objects, use `fallback-operations.md#javascript-fallback` after explaining why `scan`, `full-scan`, and `get` could not access it.
|
|
303
|
+
|
|
304
|
+
## Upload
|
|
305
|
+
|
|
306
|
+
### When to use
|
|
307
|
+
|
|
308
|
+
Use Upload when a browser form needs a local file attached through a file input.
|
|
309
|
+
|
|
310
|
+
### Preferred sequence
|
|
311
|
+
|
|
312
|
+
1. Observe the file input or upload control.
|
|
313
|
+
2. Use `upload` against the input selector.
|
|
314
|
+
3. Verify that the uploaded file appeared or form state changed.
|
|
315
|
+
|
|
316
|
+
### Example
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
OMNIBOT_SESSION_TOKEN=form omnibot snapshot -i --tab-id <TAB_ID>
|
|
320
|
+
OMNIBOT_SESSION_TOKEN=form omnibot upload "input[type=file]" /path/to/file.png --tab-id <TAB_ID>
|
|
321
|
+
OMNIBOT_SESSION_TOKEN=form omnibot wait --text "file.png" --tab-id <TAB_ID>
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Verification
|
|
325
|
+
|
|
326
|
+
Use visible filename, count, enabled submit state, or application-specific confirmation:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
OMNIBOT_SESSION_TOKEN=form omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### Fallback entry point
|
|
333
|
+
|
|
334
|
+
If upload input is hidden behind custom UI, click the semantic upload control first. Use JavaScript only after standard upload cannot reach the input.
|
|
335
|
+
|
|
336
|
+
## Batch
|
|
337
|
+
|
|
338
|
+
### When to use
|
|
339
|
+
|
|
340
|
+
Use Batch for short, known-safe command chains where the target tab and verification are already explicit.
|
|
341
|
+
|
|
342
|
+
### Preferred sequence
|
|
343
|
+
|
|
344
|
+
1. Keep batches short.
|
|
345
|
+
2. Include only deterministic operations.
|
|
346
|
+
3. Verify after the batch with a separate command.
|
|
347
|
+
4. Use `--file` for complex JSON quoting.
|
|
348
|
+
|
|
349
|
+
### Example
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
OMNIBOT_SESSION_TOKEN=research omnibot batch '[{"cmd":"scan"},{"cmd":"snapshot","interactive":true}]' --tab-id <TAB_ID>
|
|
353
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
File example:
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
OMNIBOT_SESSION_TOKEN=research omnibot batch --file /tmp/omnibot-batch.json --tab-id <TAB_ID>
|
|
360
|
+
OMNIBOT_SESSION_TOKEN=research omnibot get url --tab-id <TAB_ID>
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### Verification
|
|
364
|
+
|
|
365
|
+
Do not treat batch success as task success. Verify final page state separately.
|
|
366
|
+
|
|
367
|
+
### Fallback entry point
|
|
368
|
+
|
|
369
|
+
Batch is not a fallback tier. If a batched operation fails, re-run the workflow step-by-step and enter the normal fallback model.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Runtime and Status
|
|
2
|
+
|
|
3
|
+
Use this file before troubleshooting. Runtime checks establish whether the daemon, extension, browser, visibility mode, license, and packaged skills are healthy.
|
|
4
|
+
|
|
5
|
+
## Startup Check
|
|
6
|
+
|
|
7
|
+
Run this sequence before diagnosing browser failures:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
omnibot doctor
|
|
11
|
+
omnibot tabs
|
|
12
|
+
omnibot visibility status
|
|
13
|
+
omnibot browser current
|
|
14
|
+
omnibot license status
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Interpretation:
|
|
18
|
+
|
|
19
|
+
- `doctor` checks daemon and extension health.
|
|
20
|
+
- `tabs` proves connected tabs are visible and provides tab ids.
|
|
21
|
+
- `visibility status` shows whether automation is visible, background, dedicated-profile, or headless.
|
|
22
|
+
- `browser current` shows current browser runtime ownership.
|
|
23
|
+
- `license status` verifies license state.
|
|
24
|
+
|
|
25
|
+
If the extension is not connected, open Chrome or Edge with the omnibot extension loaded and keep an HTTP/HTTPS page open.
|
|
26
|
+
|
|
27
|
+
## doctor
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
omnibot doctor
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use `doctor` first when commands fail, tabs are empty, screenshots fail, or the agent cannot reach the browser.
|
|
34
|
+
|
|
35
|
+
## tabs
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
omnibot tabs
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Use `tabs` to discover tab ids. Save the target tab id and use it on every page-state command:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
OMNIBOT_SESSION_TOKEN=research omnibot snapshot -i --tab-id <TAB_ID>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## browser list/current
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
omnibot browser list
|
|
51
|
+
omnibot browser current
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Use browser status when multiple browser runtimes or agents may be active.
|
|
55
|
+
|
|
56
|
+
## visibility status
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
omnibot visibility status
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Use visibility status to confirm whether automation should share the user's visible browser state. Headless and dedicated-profile modes do not automatically inherit user login.
|
|
63
|
+
|
|
64
|
+
## license status
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
omnibot license status
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Use license status when runtime checks pass but features appear unavailable.
|
|
71
|
+
|
|
72
|
+
## skills path
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
omnibot skills path
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Use skills path to locate packaged skills for installation or inspection.
|
|
79
|
+
|
|
80
|
+
## Skills Install
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
omnibot skills install --agent hermes --profile nuwa
|
|
84
|
+
omnibot skills install --agent opencode
|
|
85
|
+
omnibot skills install --agent claude
|
|
86
|
+
omnibot skills install --agent codex
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Install only when setting up or repairing an agent integration. It is not part of normal page operations.
|