@staff0rd/assist 0.962.0 → 0.964.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 +19 -17
- package/claude/commands/miro.md +1 -1
- package/claude/commands/releases-configure.md +3 -3
- package/claude/commands/review-config.md +3 -3
- package/dist/commands/sessions/web/bundle.js +521 -521
- package/dist/index.js +330 -236
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -150,7 +150,7 @@ Every command supports `--help` for full detail on its flags and behaviour.
|
|
|
150
150
|
- `--checkout-only` - Skip the review; check the PR out and leave an idle Claude session in it. In a clone whose remote is on Azure DevOps it checks out with `az repos pr checkout` instead of `gh` (see [Azure DevOps PRs](#azure-devops-prs))
|
|
151
151
|
- `--high-level` - Open the high-level review checklist in the web preview pane and post it to the PR as an Approve, Comment or Request changes review. Comments on lines selected in a diff or a test's source are either sent to the agent or added to the review, where those on lines in the PR diff post as line-level comments. See [docs/high-level-review.md](docs/high-level-review.md)
|
|
152
152
|
- `--configure` - With `--high-level`: configure the checklist's `review.highLevel.*` keys instead of reviewing
|
|
153
|
-
- `--scope <
|
|
153
|
+
- `--scope <db|git>` - With `--configure`: write to repo (db), this repo's override in the shared assist database, or repo (git), the repo's `assist.yml`, instead of asking
|
|
154
154
|
- `--answer <key=value>` - With `--configure`: answer one key without prompting, repeatable; an empty value leaves the key unset
|
|
155
155
|
- `--address-comments` - Start an Address Comments session for the PR once comments are posted and the review submitted
|
|
156
156
|
- `--announce` - Announce the PR in Slack at the end of the chain
|
|
@@ -176,7 +176,7 @@ Every command supports `--help` for full detail on its flags and behaviour.
|
|
|
176
176
|
- `assist news remove <url>` - Remove a feed URL from `news.feeds`
|
|
177
177
|
- `news.feeds` - The feed URLs, stored in the assist database so every machine shares them; `assist config set news.feeds <url1>,<url2>` replaces the whole list
|
|
178
178
|
- `assist releases [list]` - Print the release promotion streams declared in `releases.streams`
|
|
179
|
-
- `assist releases configure --streams <file> [--scope <
|
|
179
|
+
- `assist releases configure --streams <file> [--scope <git|db>]` - Write release streams from a JSON or YAML file (`-` for stdin) to `releases.streams`, in repo (git), the repo's `assist.yml` (default), or repo (db), this repo's shared override in the assist database
|
|
180
180
|
|
|
181
181
|
### Backlog
|
|
182
182
|
|
|
@@ -237,12 +237,12 @@ A run entry's relative `cwd` (and a `link` path) resolves against the **repo roo
|
|
|
237
237
|
- `assist config keys [filter]` - List every config key with its type, default, effect and setter, optionally filtered by name
|
|
238
238
|
- `assist config get <key>` - Get a config value; secret values are hidden unless `--reveal` is passed
|
|
239
239
|
- `assist config list` - List the config values that are set, with secret values hidden
|
|
240
|
-
- `assist config set <key> <value>` - Set a config value.
|
|
241
|
-
- `assist config unset <key>` - Remove a config value so the key falls back to
|
|
240
|
+
- `assist config set <key> <value>` - Set a config value. With no scope flag it writes repo (git), the repo's `assist.yml`; `--repo [name]` writes repo (db), a per-repo override in the shared assist database that every node on that database sees; `--node` writes user (node), this node's `~/.assist.yml`; `--user` writes user (db), a layer in the shared database that applies to every repo on every node. Precedence is repo (git) > repo (db) > user (node) > user (db); array keys such as `advice.rules` and `deny` concatenate across scopes, user (db) entries first. `database.*` and `sync.autoConfirm` stay in user (node)
|
|
241
|
+
- `assist config unset <key>` - Remove a config value so the key falls back to a lower scope or the schema default, taking the same `--repo [name]`, `--node` and `--user` flags
|
|
242
242
|
- `assist config import-repos` - Move this machine's `~/.assist.yml` `repos:` overrides into the shared database: prints a per-key diff against each repo's shared override, then on confirmation writes the keys and removes `repos:` from `~/.assist.yml`
|
|
243
243
|
- `assist config import-user [keys...]` - Move keys (default `advice.rules`) from this node's `~/.assist.yml` into user (db): prints a diff against user (db) (array keys gain only the entries it lacks), then on confirmation writes them and removes the keys from `~/.assist.yml`. `loadConfig` warns while `~/.assist.yml` holds `advice.rules` entries user (db) lacks
|
|
244
244
|
|
|
245
|
-
The web config page's "
|
|
245
|
+
The web config page's "repo (db)" scope reads and writes the same shared override. Each node mirrors the shared per-repo overrides into `~/.assist/repo-config-cache.json` when its daemon starts, every minute while it runs, and after its own repo-scope writes, and resolves config from that snapshot, so an unreachable database leaves the last snapshot in effect. A `repos:` entry in `~/.assist.yml` still applies, with a warning naming `assist config import-repos`, until the shared database holds an override for that repo, after which it is ignored.
|
|
246
246
|
|
|
247
247
|
The Config tab of the sessions web dashboard never shows secret values; their fields are write-only.
|
|
248
248
|
|
|
@@ -294,8 +294,8 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
294
294
|
- `assist cli-hook add <cli>` - Discover a CLI's commands and auto-permit read-only ones
|
|
295
295
|
- `assist cli-hook check <command> [--tool <tool>]` - Check whether a command would be auto-approved
|
|
296
296
|
- `assist cli-hook deny` - List all deny rules
|
|
297
|
-
- `assist cli-hook deny add <pattern> <message
|
|
298
|
-
- `assist cli-hook deny remove <pattern
|
|
297
|
+
- `assist cli-hook deny add <pattern> <message> [--node]` - Add a deny rule for a command pattern to the repo's `assist.yml`, or with `--node` to user (node), this node's `~/.assist.yml`
|
|
298
|
+
- `assist cli-hook deny remove <pattern> [--node]` - Remove a deny rule by pattern
|
|
299
299
|
- `assist codex-hook` - Codex hook that auto-approves read-only commands and reports session status to the sessions dashboard
|
|
300
300
|
- `assist pi-hook` - pi permission gate that auto-approves read-only commands
|
|
301
301
|
- `assist edit-hook` - PreToolUse hook that blocks `Edit`/`Write`/`MultiEdit` calls from adding, changing, or removing a `// assist-maintainability-override` marker, or from introducing a code comment (use `code-comment set`/`confirm` for the rare comment that belongs)
|
|
@@ -303,7 +303,7 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
303
303
|
- `assist code-comment confirm <pin>` - Insert the pinned comment at its file/line
|
|
304
304
|
- `assist db-migration unlock` - Ask a human to approve creating the next migration module
|
|
305
305
|
- `assist db-migration confirm <pin>` - Confirm a pin from `db-migration unlock`, letting that migration's file be written once
|
|
306
|
-
- `assist advise [--hook] [--explain]` - Print the advice fragments that apply to the current repo; `--hook` runs it as a SessionStart hook and `--explain` shows why each fragment was or wasn't included. `advice.sections` forces a fragment in or out by name, `advice.verify` replaces the verify fragment's text, `advice.extra` appends repo notes and `advice.rules` (`{ title, text }` entries,
|
|
306
|
+
- `assist advise [--hook] [--explain]` - Print the advice fragments that apply to the current repo; `--hook` runs it as a SessionStart hook and `--explain` shows why each fragment was or wasn't included. `advice.sections` forces a fragment in or out by name, `advice.verify` replaces the verify fragment's text, `advice.extra` appends repo notes and `advice.rules` (`{ title, text }` entries, concatenated across every scope, user (db) first) adds a "Your rules" section
|
|
307
307
|
- `assist notify` - Show desktop notification from JSON stdin (macOS, Windows, WSL)
|
|
308
308
|
- `assist status-line` - Format Claude Code status line from JSON stdin
|
|
309
309
|
|
|
@@ -323,7 +323,7 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
323
323
|
- `assist jira auth` - Authenticate with Jira via API token
|
|
324
324
|
- `assist jira ac <issue-key>` - Print acceptance criteria for a Jira issue
|
|
325
325
|
- `assist jira view <issue-key>` - Print the title and description of a Jira issue
|
|
326
|
-
- `assist miro extract [name] [--items <file>] [--top-left <id|link> --bottom-right <id|link>] [--ignore <file>] [--out <file>] [--board <id>] [--frame <id>] [--save <name>] [
|
|
326
|
+
- `assist miro extract [name] [--items <file>] [--top-left <id|link> --bottom-right <id|link>] [--ignore <file>] [--out <file>] [--board <id>] [--frame <id>] [--save <name>] [--node] [-r [repo]]` - Extract the text of every box inside a rectangle on a Miro board as an ordered YAML list. Omit the anchors to pick them in the web preview pane; `--save <name>` saves the selection under `miro.extracts` so `assist miro extract <name>` replays it, in the repo's `assist.yml`, or with `--node` in user (node) or `-r [repo]` in repo (db)
|
|
327
327
|
- `assist litellm list-models [--json]` - List the model ids the configured LiteLLM proxy serves
|
|
328
328
|
- `assist ravendb auth add` - Add a new RavenDB connection
|
|
329
329
|
- `assist ravendb auth list` - List configured RavenDB connections
|
|
@@ -428,7 +428,7 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
428
428
|
|
|
429
429
|
Web sessions are owned by a long-lived daemon process, not the web server: the server is a thin client relaying WebSocket traffic to the daemon over a local IPC socket (`~/.assist/daemon/daemon.sock`; per-user named pipe `\\.\pipe\assist-sessions-daemon-<user>` on Windows). Restarting the web server leaves sessions running with scrollback intact. The daemon logs to `~/.assist/daemon/daemon.log` and auto-exits once no sessions remain and no client has connected for 60 seconds. See [docs/session-lifecycle.md](docs/session-lifecycle.md).
|
|
430
430
|
|
|
431
|
-
When assist is installed as a git clone, each daemon keeps that install current in the background: it runs `assist watch wait --pull --build` in the clone lap after lap, with no session card, logging each lap to `daemon.log` (prefixed `auto-update:`) and to the clone's history in `~/.assist/watchers/`. If the clone cannot fast-forward, the daemon starts one claude session in it that rebases (or merges) onto the upstream without force-pushing or resetting, pushes, rebuilds and closes; the loop pauses until that session ends. A rebuilt version takes effect once the daemon and web server are restarted. The version badge in the web UI opens the Updates page, which lists every node with its running and built version, restart advice and history, and offers Restart per node or for every ready node, Pause/Resume (a pause persists across daemon restarts) and Check now (an immediate fetch). Turn it off with `assist config set autoUpdate.enabled false
|
|
431
|
+
When assist is installed as a git clone, each daemon keeps that install current in the background: it runs `assist watch wait --pull --build` in the clone lap after lap, with no session card, logging each lap to `daemon.log` (prefixed `auto-update:`) and to the clone's history in `~/.assist/watchers/`. If the clone cannot fast-forward, the daemon starts one claude session in it that rebases (or merges) onto the upstream without force-pushing or resetting, pushes, rebuilds and closes; the loop pauses until that session ends. A rebuilt version takes effect once the daemon and web server are restarted. The version badge in the web UI opens the Updates page, which lists every node with its running and built version, restart advice and history, and offers Restart per node or for every ready node, Pause/Resume (a pause persists across daemon restarts) and Check now (an immediate fetch). Turn it off with `assist config set autoUpdate.enabled false --node`.
|
|
432
432
|
|
|
433
433
|
The topnav's **+** button (or Ctrl+N / Alt+N; Cmd+N on macOS) opens the new-session dialog, which replaces the old draft / bug / prompt / design topnav buttons. Its mode selector picks `draft`, `bug`, `prompt` or `design`; in `prompt` mode a harness selector under it picks Claude, Codex or pi when those are exposed, and Up/Down moves between the two rows. `design` launches an interactive `claude` session with the vendored design system prompt appended via `--append-system-prompt`. Left/Right change the mode or harness, and Tab steps through a selector's options before moving on to the next control.
|
|
434
434
|
|
|
@@ -442,7 +442,7 @@ Every hotkey is Alt plus a left-hand key, one keyboard row per screen region, an
|
|
|
442
442
|
|
|
443
443
|
Keys whose target is on Sessions return there first. Ctrl+/ (Cmd+/ on macOS) or the menu's **Keyboard shortcuts** item opens a sheet listing every sessions-view shortcut. The top-level tabs, the new-session button, the repo picker, the top-bar add agent / VS Code / done buttons, the active session's diff counts, the version badge, the config cog and the menu button show their chord in their tooltip on hover and keyboard focus.
|
|
444
444
|
|
|
445
|
-
Each shortcut's chord can be overridden under `sessions.hotkeys.<action>`, e.g. `assist config set sessions.hotkeys.focusTerminal Ctrl+Alt+J
|
|
445
|
+
Each shortcut's chord can be overridden under `sessions.hotkeys.<action>`, e.g. `assist config set sessions.hotkeys.focusTerminal Ctrl+Alt+J --node`; restart the web server and reload the page to apply it. `assist sessions web --help` lists every action with its default. A chord is modifiers plus one key joined by `+`, such as `Alt+S`, `Ctrl+Shift+K` or `Mod+/`: the modifiers are `Ctrl`, `Alt` (`Option`), `Shift`, `Meta` (`Cmd`) and `Mod` (Cmd on macOS, Ctrl elsewhere), at least one of them other than Shift, and the key is a letter, digit, punctuation, `F1`–`F12` or a named key such as `Enter` or `ArrowUp`. Keys match the physical key, so macOS Option chords work. `navTab` takes modifiers only (e.g. `Ctrl+Alt`); its digits stay 1–6. An override replaces all of an action's default chords, and `assist config set` rejects an invalid chord. Tab card-cycling is fixed.
|
|
446
446
|
|
|
447
447
|
Every live session card carries an **add-agent** button (👥) that starts a second agent inside that session's existing workspace rather than allocating a new one. While several agents share a workspace, only the last one to leave triggers teardown.
|
|
448
448
|
|
|
@@ -494,6 +494,8 @@ Needs macOS with Xcode, an iOS simulator or a device, and the Tailscale app on t
|
|
|
494
494
|
3. `npm run ios:run` to pick a simulator or connected device, or `npm run ios:open` to build and run from Xcode (a device needs your Apple ID team set under **Signing & Capabilities**).
|
|
495
495
|
4. On first launch, enter the home node's URL, e.g. `https://mac.<tailnet>.ts.net:3100`. It is stored on the device.
|
|
496
496
|
|
|
497
|
+
The app uses a phone layout rather than the desktop one. The session list groups sessions by status with **Needs you** (waiting and errored) first; pull down to refresh, tap **Done** to expand finished sessions, and use the clock icon for history. Tap a session to open it full screen: the terminal is read-only and never resizes the shared pty, so pinch to zoom and drag to pan. Type in the reply field (Return adds a line, the send button submits) or use the key strip for `1`/`2`/`3`, arrows, Esc, Tab and ⌃C.
|
|
498
|
+
|
|
497
499
|
### Session config keys
|
|
498
500
|
|
|
499
501
|
- `sessions.nodeName` — this install's node label. Defaults to the OS hostname, suffixed `-wsl` under WSL.
|
|
@@ -544,12 +546,12 @@ The **Next** tab (`/next`) recommends what to do next, in this order:
|
|
|
544
546
|
**Start session** runs in the item's local clone: PRs open the review dialog, issues open the new-session dialog, and pickups are assigned to you and moved to In Progress first. Project pickups need the gh `project` scope. See `assist sessions web --help` for each key.
|
|
545
547
|
|
|
546
548
|
```bash
|
|
547
|
-
assist config set next.peers alice,bob
|
|
548
|
-
assist config set next.repos my-org,other/web
|
|
549
|
-
assist config set next.projects my-org/3,my-org/5
|
|
550
|
-
assist config set next.pickStatuses Ready,Todo
|
|
551
|
-
assist config set next.excludeLabels blocked,spike
|
|
552
|
-
assist config set next.excludeTypes Epic
|
|
549
|
+
assist config set next.peers alice,bob --repo
|
|
550
|
+
assist config set next.repos my-org,other/web --repo
|
|
551
|
+
assist config set next.projects my-org/3,my-org/5 --repo
|
|
552
|
+
assist config set next.pickStatuses Ready,Todo --repo
|
|
553
|
+
assist config set next.excludeLabels blocked,spike --repo
|
|
554
|
+
assist config set next.excludeTypes Epic --repo
|
|
553
555
|
```
|
|
554
556
|
|
|
555
557
|
## Parallel work
|
package/claude/commands/miro.md
CHANGED
|
@@ -27,7 +27,7 @@ Write the raw response pages to a file (e.g. `board-items.json`) **exactly as re
|
|
|
27
27
|
|
|
28
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
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
|
|
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 `--node` (user (node)) or `-r [repo]` (repo (db)) only if the user asks for a config scope other than repo (git), the repo's `assist.yml`; the command prints the file it wrote and, on later runs, the file the extract came from.
|
|
31
31
|
|
|
32
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
33
|
|
|
@@ -35,8 +35,8 @@ A job with `uses: <owner>/<name>/.github/workflows/<file>@<ref>` calls a reusabl
|
|
|
35
35
|
|
|
36
36
|
Show the nodes and edges you intend to write, and say which workflow file each node came from — including the reusable ones, so the user can see the chain you followed. Ask them to accept or edit, and ask which config file it goes to:
|
|
37
37
|
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
38
|
+
- `git` — repo (git), the repo's own `assist.yml`, checked in, so the team sees the same graph
|
|
39
|
+
- `db` — repo (db), this repo's override in the shared assist database, personal to the user and seen by every node
|
|
40
40
|
|
|
41
41
|
Ask rather than guess: which jobs deserve a node at all, how jobs split into streams, what to call a stream, and any environment name that is computed rather than written literally.
|
|
42
42
|
|
|
@@ -45,7 +45,7 @@ Ask rather than guess: which jobs deserve a node at all, how jobs split into str
|
|
|
45
45
|
Write the accepted streams to a JSON file and pass it in. Run the command from the repo you are in, never from another checkout: the config it writes belongs to the directory it runs in, whichever repos its streams point at. Set `repo` on any stream that releases another repo; one left out defaults to the repo you are in.
|
|
46
46
|
|
|
47
47
|
```
|
|
48
|
-
assist releases configure --scope
|
|
48
|
+
assist releases configure --scope git --streams /tmp/streams.json
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
```json
|
|
@@ -35,8 +35,8 @@ Do not ask in chat. Write the proposal as markdown to a scratch file with the Wr
|
|
|
35
35
|
- `descriptionWordCap` with its value
|
|
36
36
|
- `collapsedPaths`, each glob as its own bullet like the others
|
|
37
37
|
- the scope you propose, with the other one named so the user can swap it:
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
38
|
+
- `db` — repo (db), this repo's override in the shared assist database, personal to the user and seen by every node (propose this unless the user has said otherwise)
|
|
39
|
+
- `git` — repo (git), the repo's own `assist.yml`, a file to check in so the team reviews against the same globs; only when the user asks for it, since it leaves a new file in a repo they may not own
|
|
40
40
|
|
|
41
41
|
Then run, **as a background task**, doing no other work until it returns:
|
|
42
42
|
|
|
@@ -55,7 +55,7 @@ Outside a web session `assist ask` only prints the markdown and exits 0 without
|
|
|
55
55
|
Pass every key, so nothing is prompted for — you have already asked:
|
|
56
56
|
|
|
57
57
|
```
|
|
58
|
-
assist review --high-level --configure --scope
|
|
58
|
+
assist review --high-level --configure --scope db \
|
|
59
59
|
--answer 'review.highLevel.criticalPaths=**/*.graphql,en-AU/translation.json' \
|
|
60
60
|
--answer 'review.highLevel.uiPaths=src/ui/**' \
|
|
61
61
|
--answer 'review.highLevel.descriptionWordCap=300' \
|