@staff0rd/assist 0.961.0 → 0.963.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 +20 -16
- package/claude/commands/add-rule.md +7 -7
- package/claude/commands/miro.md +1 -1
- package/claude/skills/review-ci/scripts/review.mjs +130 -130
- package/dist/commands/sessions/web/bundle.js +521 -521
- package/dist/index.js +1620 -1363
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -237,11 +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
|
+
- `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
|
|
243
244
|
|
|
244
|
-
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.
|
|
245
246
|
|
|
246
247
|
The Config tab of the sessions web dashboard never shows secret values; their fields are write-only.
|
|
247
248
|
|
|
@@ -275,7 +276,8 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
275
276
|
|
|
276
277
|
- `assist rules list [path] [--full]` - List the rules in scope for a path (default: cwd); `--full` adds each rule's description
|
|
277
278
|
- `assist rules add <text> [--title <title>] [--scope <path>]` - Add a rule to the `## Rules` section of the `CLAUDE.md` nearest `--scope` (default cwd)
|
|
278
|
-
- `assist rules add <text> --title <title> --
|
|
279
|
+
- `assist rules add <text> --title <title> --user` - Append a `{ title, text }` entry to `advice.rules` in user (db) instead, for rules about agent conduct that hold in every repo on every node; it takes no R-code and can't be combined with `--scope`
|
|
280
|
+
- `assist rules add <text> --title <title> --node` - As `--user`, but append to `advice.rules` in user (node), this node's `~/.assist.yml`
|
|
279
281
|
- `assist rules index` - Record the directories that carry their own `## Rules` in the repo root's `CLAUDE.md`; run it after hand-editing a `## Rules` section
|
|
280
282
|
|
|
281
283
|
### Devlog
|
|
@@ -292,8 +294,8 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
292
294
|
- `assist cli-hook add <cli>` - Discover a CLI's commands and auto-permit read-only ones
|
|
293
295
|
- `assist cli-hook check <command> [--tool <tool>]` - Check whether a command would be auto-approved
|
|
294
296
|
- `assist cli-hook deny` - List all deny rules
|
|
295
|
-
- `assist cli-hook deny add <pattern> <message
|
|
296
|
-
- `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
|
|
297
299
|
- `assist codex-hook` - Codex hook that auto-approves read-only commands and reports session status to the sessions dashboard
|
|
298
300
|
- `assist pi-hook` - pi permission gate that auto-approves read-only commands
|
|
299
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)
|
|
@@ -301,7 +303,7 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
301
303
|
- `assist code-comment confirm <pin>` - Insert the pinned comment at its file/line
|
|
302
304
|
- `assist db-migration unlock` - Ask a human to approve creating the next migration module
|
|
303
305
|
- `assist db-migration confirm <pin>` - Confirm a pin from `db-migration unlock`, letting that migration's file be written once
|
|
304
|
-
- `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
|
|
305
307
|
- `assist notify` - Show desktop notification from JSON stdin (macOS, Windows, WSL)
|
|
306
308
|
- `assist status-line` - Format Claude Code status line from JSON stdin
|
|
307
309
|
|
|
@@ -321,7 +323,7 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
321
323
|
- `assist jira auth` - Authenticate with Jira via API token
|
|
322
324
|
- `assist jira ac <issue-key>` - Print acceptance criteria for a Jira issue
|
|
323
325
|
- `assist jira view <issue-key>` - Print the title and description of a Jira issue
|
|
324
|
-
- `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)
|
|
325
327
|
- `assist litellm list-models [--json]` - List the model ids the configured LiteLLM proxy serves
|
|
326
328
|
- `assist ravendb auth add` - Add a new RavenDB connection
|
|
327
329
|
- `assist ravendb auth list` - List configured RavenDB connections
|
|
@@ -426,7 +428,7 @@ Rules are `- **<code>** — **<title>** — <text>` bullets, the title optional,
|
|
|
426
428
|
|
|
427
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).
|
|
428
430
|
|
|
429
|
-
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`.
|
|
430
432
|
|
|
431
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.
|
|
432
434
|
|
|
@@ -440,7 +442,7 @@ Every hotkey is Alt plus a left-hand key, one keyboard row per screen region, an
|
|
|
440
442
|
|
|
441
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.
|
|
442
444
|
|
|
443
|
-
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.
|
|
444
446
|
|
|
445
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.
|
|
446
448
|
|
|
@@ -492,6 +494,8 @@ Needs macOS with Xcode, an iOS simulator or a device, and the Tailscale app on t
|
|
|
492
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**).
|
|
493
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.
|
|
494
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
|
+
|
|
495
499
|
### Session config keys
|
|
496
500
|
|
|
497
501
|
- `sessions.nodeName` — this install's node label. Defaults to the OS hostname, suffixed `-wsl` under WSL.
|
|
@@ -542,12 +546,12 @@ The **Next** tab (`/next`) recommends what to do next, in this order:
|
|
|
542
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.
|
|
543
547
|
|
|
544
548
|
```bash
|
|
545
|
-
assist config set next.peers alice,bob
|
|
546
|
-
assist config set next.repos my-org,other/web
|
|
547
|
-
assist config set next.projects my-org/3,my-org/5
|
|
548
|
-
assist config set next.pickStatuses Ready,Todo
|
|
549
|
-
assist config set next.excludeLabels blocked,spike
|
|
550
|
-
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
|
|
551
555
|
```
|
|
552
556
|
|
|
553
557
|
## Parallel work
|
|
@@ -25,9 +25,9 @@ Ask the user a clarifying question only when the note is genuinely too vague to
|
|
|
25
25
|
|
|
26
26
|
## Step 3: Work out the scope
|
|
27
27
|
|
|
28
|
-
The scope is the directory whose `CLAUDE.md` gets the rule, or
|
|
28
|
+
The scope is the directory whose `CLAUDE.md` gets the rule, or `user (db)`. Infer it — do not ask by default:
|
|
29
29
|
|
|
30
|
-
- If the rule is about agent conduct that holds in every repo rather than about this repo's code or docs (e.g. "give the URL, not a nav path", "don't ask for sign-off in chat"), the scope is
|
|
30
|
+
- If the rule is about agent conduct that holds in every repo rather than about this repo's code or docs (e.g. "give the URL, not a nav path", "don't ask for sign-off in chat"), the scope is **`user (db)`**: it goes to `advice.rules` in the shared db and reaches every session in every repo on every node. A rule that only makes sense for this repo's files, conventions or tooling never goes there. Use `user (node)` (this node's `~/.assist.yml`) only when the user asks for the rule to stay on this node.
|
|
31
31
|
- With a file path, the default is the nearest `CLAUDE.md` walking up from that file's directory to the repo root. `assist rules list <path>` shows what is already in scope there, which tells you where sibling rules live.
|
|
32
32
|
- If the note is clearly about a kind of document that lives in one directory (and the file sits in it), that directory's `CLAUDE.md` is the scope — pass `--scope <dir>/CLAUDE.md` to create it there when it does not exist yet.
|
|
33
33
|
- If the rule plainly applies repo-wide, use the root `CLAUDE.md`.
|
|
@@ -43,20 +43,20 @@ assist rules add '<rule text>' --title '<title>' --scope <path> 2>&1
|
|
|
43
43
|
|
|
44
44
|
`--scope` takes a file, a directory, or a `CLAUDE.md` path directly. A file or directory resolves to the nearest existing `CLAUDE.md` at or above it; a `CLAUDE.md` path is written to as given, created if absent. The command allocates the next repo-wide code, creates the `## Rules` section when the file has none, and records the directories that carry their own `## Rules` in the root `CLAUDE.md`.
|
|
45
45
|
|
|
46
|
-
For a
|
|
46
|
+
For a `user (db)` rule, pass `--user` instead of `--scope` (the two can't be combined); `--title` is required:
|
|
47
47
|
|
|
48
48
|
```
|
|
49
|
-
assist rules add '<rule text>' --title '<title>' --
|
|
49
|
+
assist rules add '<rule text>' --title '<title>' --user 2>&1
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
-
It appends the rule to `advice.rules` in
|
|
52
|
+
It appends the rule to `advice.rules` in `user (db)` with no R-code. For `user (node)`, pass `--node` instead of `--user`.
|
|
53
53
|
|
|
54
54
|
Use single quotes around the rule text to avoid shell escaping issues.
|
|
55
55
|
|
|
56
|
-
Show the command output — it names the allocated code (or, for a
|
|
56
|
+
Show the command output — it names the allocated code (or, for a `user (db)` or `user (node)` rule, the title) and where it went — then tell the user in one line which rule was added and where.
|
|
57
57
|
|
|
58
58
|
## Step 5: Fix what broke it
|
|
59
59
|
|
|
60
|
-
The rule exists because something broke it, so the quoted text is now a live violation. Rectify it in the same pass, without being asked: edit the quoted text in the file the `File:` line named, so it follows the rule you just wrote. Where there was no `File:` line, fix the draft or the text the quote came from. A
|
|
60
|
+
The rule exists because something broke it, so the quoted text is now a live violation. Rectify it in the same pass, without being asked: edit the quoted text in the file the `File:` line named, so it follows the rule you just wrote. Where there was no `File:` line, fix the draft or the text the quote came from. A `user (db)` or `user (node)` rule is no exception: the quoted violation still gets fixed, even though the rule went to `advice.rules` rather than a file in this repo.
|
|
61
61
|
|
|
62
62
|
Fix the instance you were given. Do not sweep the rest of the repo for other violations of the new rule unless the user asks for that.
|
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
|
|