@omniaibot/win-x64 1.6.3 → 1.6.5
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/81d243bd2c585b0f4821__mypyc.pyd +0 -0
- package/bin/omnibot-windows-x64/VERSION +1 -1
- package/bin/omnibot-windows-x64/_asyncio.pyd +0 -0
- package/bin/omnibot-windows-x64/_bz2.pyd +0 -0
- package/bin/omnibot-windows-x64/_cffi_backend.pyd +0 -0
- package/bin/omnibot-windows-x64/_ctypes.pyd +0 -0
- package/bin/omnibot-windows-x64/_decimal.pyd +0 -0
- package/bin/omnibot-windows-x64/_hashlib.pyd +0 -0
- package/bin/omnibot-windows-x64/_lzma.pyd +0 -0
- package/bin/omnibot-windows-x64/_multiprocessing.pyd +0 -0
- package/bin/omnibot-windows-x64/_overlapped.pyd +0 -0
- package/bin/omnibot-windows-x64/_queue.pyd +0 -0
- package/bin/omnibot-windows-x64/_socket.pyd +0 -0
- package/bin/omnibot-windows-x64/_ssl.pyd +0 -0
- package/bin/omnibot-windows-x64/_uuid.pyd +0 -0
- package/bin/omnibot-windows-x64/_wmi.pyd +0 -0
- package/bin/omnibot-windows-x64/charset_normalizer/cd.pyd +0 -0
- package/bin/omnibot-windows-x64/charset_normalizer/md.pyd +0 -0
- package/bin/omnibot-windows-x64/libcrypto-3-x64.dll +0 -0
- package/bin/omnibot-windows-x64/libffi-8.dll +0 -0
- package/bin/omnibot-windows-x64/libssl-3-x64.dll +0 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/SKILL.md +12 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/anti-patterns.md +8 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/command-reference.md +17 -3
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/fallback-operations.md +2 -0
- package/bin/omnibot-windows-x64/omnibot/skills/omnibot/references/operation-patterns.md +43 -7
- package/bin/omnibot-windows-x64/omnibot-windows-x64.exe +0 -0
- package/bin/omnibot-windows-x64/pyexpat.pyd +0 -0
- package/bin/omnibot-windows-x64/python3.dll +0 -0
- package/bin/omnibot-windows-x64/python313.dll +0 -0
- package/bin/omnibot-windows-x64/select.pyd +0 -0
- package/bin/omnibot-windows-x64/unicodedata.pyd +0 -0
- package/package.json +1 -1
- package/bin/omnibot-windows-x64/python312.dll +0 -0
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.6.
|
|
1
|
+
1.6.5
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -140,6 +140,18 @@ Do not use `read` as the first step for click/fill workflows unless the user exp
|
|
|
140
140
|
|
|
141
141
|
Use `select @combobox "value"` for native selects or simple controls. Use `click @option` when `snapshot -i` exposes auto-probed combobox option refs. Do not manually reopen every dropdown just to discover options unless `snapshot -i` did not expose option refs.
|
|
142
142
|
|
|
143
|
+
## Rich Text Article Editors
|
|
144
|
+
|
|
145
|
+
ContentEditable rich text editors (ProseMirror, Quill, Draft.js, Slate, ByteDance/Toutiao article body, etc.) are often missing from the AX tree. `snapshot -i` appends them under `# DOM Rich Text Editors` as `@eN [richtext] "..." [contenteditable=true]` refs.
|
|
146
|
+
|
|
147
|
+
- Detect the body editor: `snapshot -i` → look for `@eN [richtext]` under `# DOM Rich Text Editors`. Do not fill the article body through a `[textbox]` title ref.
|
|
148
|
+
- Replace the whole body: `fill @richtext "paragraph 1\n\nparagraph 2"`. Empty lines split paragraphs; the previous content is cleared and `input`/`change` events are dispatched.
|
|
149
|
+
- Append to the body: `type @richtext " additional text"`.
|
|
150
|
+
- Focus before keyboard input: click `@richtext` first, then `press`/`keyboard`.
|
|
151
|
+
- Raw selector fallback: `omnibot fill '[contenteditable="true"]' "..."` also routes through the rich text path when the selector looks like a rich editor.
|
|
152
|
+
|
|
153
|
+
Do not use `execute-js` first for rich text writes; `fill`/`type` on the `[richtext]` ref is the supported path.
|
|
154
|
+
|
|
143
155
|
## Quick Routing
|
|
144
156
|
|
|
145
157
|
| Need | Read |
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
| Revealing sensitive network data | Cookies, auth headers, full addresses, phone numbers, and payment data must not be pasted into reports. | Report host, path, method, status, and non-sensitive payload shape only. |
|
|
29
29
|
| Using stale `@eN` refs after a failed click | Refs may have expired or the page may have changed. | Re-observe with `snapshot -i` or use a higher-evidence fallback. |
|
|
30
30
|
| `Network.enable` without log retrieval | Raw `cdp` calls are one-shot and do not persist events for later reading. | Use `network clear -> network start -> one action -> network stop -> network logs/summary`. |
|
|
31
|
+
| Writing the article body into the title field | Rich text article body editors are often missing from the AX tree; filling the only visible `[textbox]` (title) overwrites the wrong control. | Run `snapshot -i`, find the body under `# DOM Rich Text Editors` as `@eN [richtext]`, then `fill @richtext "..."`. |
|
|
32
|
+
| `execute-js` for rich text body before `fill @richtext` | ContentEditable writes need event dispatch and framework integration; ad-hoc `innerHTML` bypasses Omnibot's supported path. | Use `fill @richtext "p1\n\np2"` or `type @richtext " text"` first. |
|
|
33
|
+
| Counting `<img>` nodes to detect duplicate images in a rich editor | ProseMirror/Toutiao image cards keep a hidden `<templ>` template and a visible `<mask>` copy of the same `<img>`, so `.ProseMirror img` returns 2 for one logical image and falsely reports duplication. | Count image card containers (`.ProseMirror [__syl_tag=true]` or `.ProseMirror .pgc-image`), one per inserted image. |
|
|
34
|
+
| Inserting an image via `click @richtext` + `press End` | The caret stays on the first line; the image lands at the editor root instead of the target paragraph. | Use `find text "<anchor phrase>" --action click` to collapse the selection at the end of the matched phrase, then open the image tool and upload. |
|
|
31
35
|
|
|
32
36
|
Do not manually reopen a dropdown just to discover options if `snapshot -i` already lists them.
|
|
33
37
|
|
|
@@ -45,5 +49,9 @@ Do not manually reopen a dropdown just to discover options if `snapshot -i` alre
|
|
|
45
49
|
- "I remember the command syntax from before."
|
|
46
50
|
- "`Network.enable` should be enough to capture requests."
|
|
47
51
|
- "It is just a checkout preview, clicking pay should be fine."
|
|
52
|
+
- "The article body is not in `snapshot -i`, so I will fill the title textbox."
|
|
53
|
+
- "I will just set `innerHTML` on the contenteditable with `execute-js`."
|
|
54
|
+
- "`.ProseMirror img` returned 2, so the image was inserted twice."
|
|
55
|
+
- "I clicked the editor and pressed End, so the caret must be after the last paragraph."
|
|
48
56
|
|
|
49
57
|
All of these mean: stop, re-enter the standard pattern, and make state explicit.
|
|
@@ -174,6 +174,8 @@ Fallback relation: Tier 2 with refs, Tier 3 with selector.
|
|
|
174
174
|
|
|
175
175
|
Combobox option refs: if `snapshot -i` shows `@eN [option] "OpenAI Chat"`, prefer `click @eN` over JavaScript fallback. Omnibot will reopen the owning combobox when needed.
|
|
176
176
|
|
|
177
|
+
Rich text editor refs: if `snapshot -i` shows `@eN [richtext] "..." [contenteditable=true]` under `# DOM Rich Text Editors`, treat it as the article body editor. Use `fill @richtext` to replace the whole body (supports `\n\n` for paragraphs) and `type @richtext` to append. Do not fall back to `execute-js` first.
|
|
178
|
+
|
|
177
179
|
### dblclick
|
|
178
180
|
|
|
179
181
|
Purpose: Double-click an element by `@eN` ref or selector.
|
|
@@ -197,6 +199,14 @@ OMNIBOT_SESSION_TOKEN=checkout omnibot fill "input[name=email]" "a@b.com" --tab-
|
|
|
197
199
|
Preferred pattern: See `operation-patterns.md#fill`.
|
|
198
200
|
Fallback relation: Tier 2 with refs, Tier 3 with selector.
|
|
199
201
|
|
|
202
|
+
Rich text body editors (ProseMirror/Quill/Draft.js/Slate/Toutiao article body): if the target is an `@eN [richtext]` ref, `fill` writes through a dedicated contenteditable path that clears the previous body and dispatches `input`/`change` events. Split paragraphs with an empty line:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot fill --tab-id <TAB_ID> @eN "First paragraph.\n\nSecond paragraph."
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Raw selector fallback is supported for selectors that look like a rich editor (e.g. `[contenteditable="true"]`, `.ProseMirror`, `.ql-editor`).
|
|
209
|
+
|
|
200
210
|
### type
|
|
201
211
|
|
|
202
212
|
Purpose: Type text into an element.
|
|
@@ -208,6 +218,8 @@ OMNIBOT_SESSION_TOKEN=search omnibot type --tab-id <TAB_ID> @e3 "omnibot"
|
|
|
208
218
|
Preferred pattern: See `operation-patterns.md#fill`.
|
|
209
219
|
Fallback relation: Use after fill is not appropriate or focus is needed.
|
|
210
220
|
|
|
221
|
+
For `@eN [richtext]` article body editors, `type` appends at the cursor position. Click the `@richtext` ref first to focus the editor.
|
|
222
|
+
|
|
211
223
|
### press
|
|
212
224
|
|
|
213
225
|
Purpose: Press a key in the target tab.
|
|
@@ -290,14 +302,14 @@ Fallback relation: Mouse drag is Tier 5 if element drag fails.
|
|
|
290
302
|
|
|
291
303
|
### upload
|
|
292
304
|
|
|
293
|
-
Purpose:
|
|
305
|
+
Purpose: Attach a local file to an `<input type="file">` element via CDP (`DOM.setFileInputFiles`), with nodeId and JS `DataTransfer` fallbacks.
|
|
294
306
|
|
|
295
307
|
```bash
|
|
296
|
-
|
|
308
|
+
OMNIBOT_SESSION_TOKEN=form omnibot upload "input[type=file]" /path/to/file.png --tab-id <TAB_ID>
|
|
297
309
|
```
|
|
298
310
|
|
|
299
311
|
Preferred pattern: See `operation-patterns.md#upload`.
|
|
300
|
-
Fallback relation:
|
|
312
|
+
Fallback relation: The CLI falls back from CDP objectId → CDP nodeId → JS DataTransfer. Do not stack additional JavaScript fallbacks.
|
|
301
313
|
|
|
302
314
|
### keyboard / keydown / keyup
|
|
303
315
|
|
|
@@ -326,6 +338,8 @@ OMNIBOT_SESSION_TOKEN=checkout omnibot find testid submit-button --action click
|
|
|
326
338
|
OMNIBOT_SESSION_TOKEN=checkout omnibot find nth ".card" 2 --action click --tab-id <TAB_ID>
|
|
327
339
|
```
|
|
328
340
|
|
|
341
|
+
Text-node precision: `find text` walks the DOM text nodes and marks the nearest visible container of the matching text, not the first ancestor whose `textContent` happens to include the needle. The matched offset/length is stored on the element, so `--action click` positions the mouse at the end of the matched text. Inside a `contenteditable` body (ProseMirror/Quill/etc.), the selection is collapsed right after the matched text and the editor is focused, so a follow-up image insertion lands at the intended paragraph instead of the editor root.
|
|
342
|
+
|
|
329
343
|
Preferred pattern: See `operation-patterns.md#click` and `operation-patterns.md#fill`.
|
|
330
344
|
Fallback relation: Tier 1. Explain failure before using refs, selectors, DOM, mouse, JavaScript, or CDP.
|
|
331
345
|
|
|
@@ -109,6 +109,8 @@ Use `execute-js` only when:
|
|
|
109
109
|
- A CSS-only dropdown or hover menu requires an atomic open-then-select sequence, and `snapshot -i` confirms the option nodes are absent from the accessibility tree.
|
|
110
110
|
- Runtime state cannot be read through `read`, `snapshot`, `get`, or `is`.
|
|
111
111
|
|
|
112
|
+
Rich text article body editors (`@eN [richtext]`, `.ProseMirror`, `.ql-editor`, `[contenteditable="true"]`) have native `fill`/`type` support. Do not fall back to JavaScript for richtext writes; use `fill @richtext "..."` first.
|
|
113
|
+
|
|
112
114
|
Read-only JavaScript fallback:
|
|
113
115
|
|
|
114
116
|
```bash
|
|
@@ -99,7 +99,7 @@ When `snapshot -i` shows only `StaticText` for a visible control label, do not a
|
|
|
99
99
|
|
|
100
100
|
### When to use
|
|
101
101
|
|
|
102
|
-
Use Fill for text inputs, textareas, search boxes, login fields,
|
|
102
|
+
Use Fill for text inputs, textareas, search boxes, login fields, form fields where the final value must be controlled, and rich text article body editors (contenteditable ProseMirror/Quill/Draft.js/Slate/Toutiao article body).
|
|
103
103
|
|
|
104
104
|
### Preferred sequence
|
|
105
105
|
|
|
@@ -124,6 +124,21 @@ OMNIBOT_SESSION_TOKEN=checkout omnibot fill --tab-id <TAB_ID> @e2 "a@b.com"
|
|
|
124
124
|
OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <TAB_ID>
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
+
### Rich text article body
|
|
128
|
+
|
|
129
|
+
For article body editors exposed as `@eN [richtext] "..." [contenteditable=true]` under `# DOM Rich Text Editors`:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot snapshot -i --tab-id <TAB_ID>
|
|
133
|
+
# Body appears under "# DOM Rich Text Editors": @eN [richtext] "..."
|
|
134
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot fill --tab-id <TAB_ID> @eN "First paragraph.\n\nSecond paragraph."
|
|
135
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot snapshot -i --tab-id <TAB_ID> # verify body content replaced
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- `\n\n` splits paragraphs; previous content is cleared.
|
|
139
|
+
- `type @richtext " text"` appends at the cursor (click the ref first to focus).
|
|
140
|
+
- Do NOT write the article body into a `[textbox]` title field. Title and richtext body are separate refs.
|
|
141
|
+
|
|
127
142
|
### Verification
|
|
128
143
|
|
|
129
144
|
Use `get value`, visible validation text, enabled state, or submit readiness:
|
|
@@ -133,6 +148,24 @@ OMNIBOT_SESSION_TOKEN=checkout omnibot get value "input[name=email]" --tab-id <T
|
|
|
133
148
|
OMNIBOT_SESSION_TOKEN=checkout omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
|
|
134
149
|
```
|
|
135
150
|
|
|
151
|
+
For richtext bodies, re-run `snapshot -i` and confirm the `@eN [richtext]` name matches the intended content.
|
|
152
|
+
|
|
153
|
+
### Cursor positioning and inline image insertion
|
|
154
|
+
|
|
155
|
+
For `contenteditable` article bodies (ProseMirror/Quill/Draft.js/Slate/Toutiao article body), `find text "<anchor phrase>" --action click` collapses the editor selection at the end of the matched phrase and focuses the editor. Use this to place the caret at a specific paragraph before inserting an image, typing, or pressing keys. Do not rely on a bare `click` of the editor followed by `press End`, because the caret would stay on the first line.
|
|
156
|
+
|
|
157
|
+
Insert an image after a specific paragraph:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot find text "第二段锚点文字" --action click --tab-id <TAB_ID>
|
|
161
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot click ".syl-toolbar-tool.image .syl-toolbar-button" --tab-id <TAB_ID>
|
|
162
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot wait --selector ".upload-image-panel input[type=file]" --tab-id <TAB_ID>
|
|
163
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot upload ".upload-image-panel input[type=file]" "/path/to/image.png" --tab-id <TAB_ID>
|
|
164
|
+
OMNIBOT_SESSION_TOKEN=editor omnibot find role button --name "确定" --action click --tab-id <TAB_ID>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Verify the inserted image by counting visible image cards, not raw `<img>` nodes. Toutiao/ProseMirror image cards keep a hidden `<templ>` template and a visible `<mask>` copy of the same `<img>`, so `.ProseMirror img` returns 2 for one logical image. Count the image card container instead (e.g. `.ProseMirror [__syl_tag=true]` or `.ProseMirror .pgc-image`), which reports one per inserted image.
|
|
168
|
+
|
|
136
169
|
### Fallback entry point
|
|
137
170
|
|
|
138
171
|
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.
|
|
@@ -333,32 +366,35 @@ If content exists only in runtime objects, use `fallback-operations.md#javascrip
|
|
|
333
366
|
|
|
334
367
|
### When to use
|
|
335
368
|
|
|
336
|
-
|
|
369
|
+
Use `omnibot upload` to attach a local file to an `<input type="file">` element. The command speaks CDP (`DOM.setFileInputFiles`) through the extension debugger transport, with a JS `DataTransfer` fallback for pages that reject programmatic file assignment.
|
|
337
370
|
|
|
338
371
|
### Preferred sequence
|
|
339
372
|
|
|
340
373
|
1. Observe the upload UI and confirm the task requires a local file.
|
|
341
|
-
2.
|
|
342
|
-
3.
|
|
374
|
+
2. Locate the file input via `snapshot -i` or a CSS selector.
|
|
375
|
+
3. Run `omnibot upload <selector> <local-file> --tab-id <TAB_ID>`.
|
|
376
|
+
4. Verify the file was accepted (filename, count, enabled submit state, or application-specific confirmation).
|
|
343
377
|
|
|
344
378
|
### Example
|
|
345
379
|
|
|
346
380
|
```bash
|
|
347
381
|
OMNIBOT_SESSION_TOKEN=form omnibot snapshot -i --tab-id <TAB_ID>
|
|
348
|
-
|
|
382
|
+
OMNIBOT_SESSION_TOKEN=form omnibot upload "input[type=file]" /path/to/cover.png --tab-id <TAB_ID>
|
|
383
|
+
OMNIBOT_SESSION_TOKEN=form omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
|
|
349
384
|
```
|
|
350
385
|
|
|
351
386
|
### Verification
|
|
352
387
|
|
|
353
|
-
|
|
388
|
+
Confirm the input accepted the file:
|
|
354
389
|
|
|
355
390
|
```bash
|
|
391
|
+
OMNIBOT_SESSION_TOKEN=form omnibot get "input[type=file]" attr value --tab-id <TAB_ID>
|
|
356
392
|
OMNIBOT_SESSION_TOKEN=form omnibot is enabled "button[type=submit]" --tab-id <TAB_ID>
|
|
357
393
|
```
|
|
358
394
|
|
|
359
395
|
### Fallback entry point
|
|
360
396
|
|
|
361
|
-
|
|
397
|
+
The CLI already falls back from CDP `DOM.setFileInputFiles` (by objectId, then nodeId) to a JS `DataTransfer` assignment. Do not add further JavaScript fallbacks on top; file inputs are security-sensitive and page-specific. If all three transports fail, report the failure to the user instead of scripting around it.
|
|
362
398
|
|
|
363
399
|
## Batch
|
|
364
400
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
Binary file
|