@staff0rd/assist 0.585.0 → 0.587.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/README.md CHANGED
@@ -72,6 +72,7 @@ After installation, the `assist` command will be available globally. You can als
72
72
  - `/inspect` - Run .NET code inspections on changed files
73
73
  - `/screenshot` - Capture a screenshot of a running application window
74
74
  - `/raven` - Query and manage RavenDB connections and collections
75
+ - `/miro [board url | extract name]` - Dump a Miro frame's raw `board_list_items` pages and extract its boxes as an ordered YAML list via `assist miro extract`
75
76
  - `/seq` - Query Seq logs from a URL or filter expression
76
77
  - `/sql` - Query a MSSQL database via assist sql
77
78
  - `/verify` - Run all verification commands in parallel
package/allowed.cli-reads CHANGED
@@ -41,6 +41,7 @@ assist jira auth
41
41
  assist jira view
42
42
  assist list
43
43
  assist ls
44
+ assist miro extract
44
45
  assist news
45
46
  assist prs list-comments
46
47
  assist ravendb auth list
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: Dump a Miro frame and extract its boxes as an ordered YAML list
3
+ allowed_args: "[board url | extract name]"
4
+ ---
5
+
6
+ The user wants the text of every box inside a rectangle on a Miro board, in priority order. Fetching is your job; everything after the dump is `assist miro extract`.
7
+
8
+ ## Step 0: is this a saved extract?
9
+
10
+ If `$ARGUMENTS` names a saved extract, or the user asks to refresh one they have picked before, do not re-pick anchors. Re-dump the frame over the extract's `items` file (step 2), then run `assist miro extract <name>`, which resolves board, frame, anchors, items, ignore and out from config. `assist config get miro.extracts` lists what is already saved.
11
+
12
+ ## Step 1: confirm the frame
13
+
14
+ Run `context_explore` on the board URL and show the user the frames it returns. Confirm which frame is the target before dumping anything — a whole-board dump is large and usually wrong.
15
+
16
+ ## Step 2: dump the raw pages
17
+
18
+ Call `board_list_items` with the board URL plus `?moveToWidget=<frame_id>` for the confirmed frame and `limit: 50`. Page with the returned `cursor` until `has_more` is false.
19
+
20
+ Write the raw response pages to a file (e.g. `board-items.json`) **exactly as returned** — a JSON array of the page objects, or one page object per line. Do not rename, reshape, flatten, sort or filter anything: the CLI normalises centre-origin positions, `geometry` and the HTML in `data.content` itself, and it errors if the shape is wrong rather than guessing.
21
+
22
+ ## Step 3: extract
23
+
24
+ - Already picked: `assist miro extract <name>`
25
+ - Anchors known: `assist miro extract --items board-items.json --top-left <id|link> --bottom-right <id|link>`
26
+ - First time: `assist miro extract --items board-items.json --save <name>`
27
+
28
+ With no anchor flags the command renders the dump in the assist web UI preview pane, where the user clicks the top-left then the bottom-right box. **That needs the assist web UI running and this conversation attached to an assist session** — without one the command fails naming both flags rather than hanging. If it fails that way, tell the user to start the web UI (or supply the two ids).
29
+
30
+ Pass `--save <name>` on a first-time run. The interactive "save this selection?" prompt only appears on a TTY, so an agent run that omits `--save` picks anchors and then discards them. Add `-g` (or `-g -r [repo]`) only if the user asks for a config level other than the project `assist.yml`; the command prints the file it wrote and, on later runs, the file the extract came from.
31
+
32
+ Add `--ignore <file>` (a YAML list of box texts) to drop banners and containers, and `--out <file>` to write the YAML with a provenance header instead of printing it.
33
+
34
+ ## Anchor ids
35
+
36
+ Anchors are chosen visually, in the picker. There is no reliable way to read them off the board by hand:
37
+
38
+ - A per-item **Copy link to object** link gives `?moveToWidget=<id>`, which the command accepts verbatim as an anchor.
39
+ - A multi-select share link gives an opaque `moveToWidgets=<token>` — the API cannot resolve it, so it is useless here. Do not try to pass one.
40
+ - Nothing exposes the user's live Miro selection.
41
+
42
+ The picker echoes `--top-left <id> --bottom-right <id>` to stdout; report that pair to the user so it can be reused as flags.
43
+
44
+ ## Reporting
45
+
46
+ Show the extracted list. The order is leftmost box edge first, topmost edge breaking ties — a wide banner spanning the board sorts early by design, so suggest the ignore list rather than treating it as a bug.
@@ -96,6 +96,8 @@
96
96
  "SlashCommand(/strip-code-comments)",
97
97
  "Skill(subtask)",
98
98
  "SlashCommand(/subtask)",
99
+ "Skill(miro)",
100
+ "SlashCommand(/miro)",
99
101
  "Bash(git ls-files:*)",
100
102
  "Bash(gh pr checks:*)",
101
103
  "Bash(ls ~/.assist/pr-comments:*)",
@@ -41,6 +41,7 @@ assist jira auth
41
41
  assist jira view
42
42
  assist list
43
43
  assist ls
44
+ assist miro extract
44
45
  assist news
45
46
  assist prs list-comments
46
47
  assist ravendb auth list