@omniaibot/win-x64 0.3.11 → 1.1.2

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