@staff0rd/assist 0.750.0 → 0.752.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 +10 -26
- package/allowed.cli-reads +0 -1
- package/allowed.cli-writes +0 -1
- package/claude/settings.json +1 -22
- package/claude/skills/review-ci/scripts/review.mjs +111 -111
- package/dist/allowed.cli-reads +0 -1
- package/dist/allowed.cli-writes +0 -1
- package/dist/commands/sessions/web/bundle.js +1 -1
- package/dist/index.js +1835 -2276
- package/package.json +1 -1
- package/claude/commands/handover.md +0 -65
- package/claude/commands/journal.md +0 -74
- package/claude/commands/recall.md +0 -55
- package/claude/commands/standup.md +0 -35
- package/claude/commands/voice-logs.md +0 -5
- package/claude/commands/voice-setup.md +0 -5
- package/claude/commands/voice-start.md +0 -5
- package/claude/commands/voice-status.md +0 -5
- package/claude/commands/voice-stop.md +0 -5
- package/dist/commands/voice/python/CLAUDE.md +0 -11
- package/dist/commands/voice/python/audio_capture.py +0 -52
- package/dist/commands/voice/python/check_mi.py +0 -21
- package/dist/commands/voice/python/dispatch.py +0 -14
- package/dist/commands/voice/python/keyboard.py +0 -73
- package/dist/commands/voice/python/list_devices.py +0 -20
- package/dist/commands/voice/python/logger.py +0 -38
- package/dist/commands/voice/python/pyproject.toml +0 -26
- package/dist/commands/voice/python/setup_models.py +0 -91
- package/dist/commands/voice/python/smart_turn.py +0 -63
- package/dist/commands/voice/python/stt.py +0 -54
- package/dist/commands/voice/python/uv.lock +0 -5946
- package/dist/commands/voice/python/vad.py +0 -50
- package/dist/commands/voice/python/voice_daemon.py +0 -528
- package/dist/commands/voice/python/wake_word.py +0 -26
package/README.md
CHANGED
|
@@ -52,13 +52,11 @@ After installation, the `assist` command will be available globally. You can als
|
|
|
52
52
|
- `/fix-conflict [--rebase]` - Resolve the current PR branch's conflicts against the remote default, verify, then push; merges by default, `--rebase` replays the branch and pushes with `--force-with-lease`
|
|
53
53
|
- `/fix-rules [dir]` - Put existing rules into the `## Rules` format `assist rules` reads
|
|
54
54
|
- `/forward-comments` - Split a coarse PR comment into per-line review comments, attributed to the original reviewer
|
|
55
|
-
- `/handover` - Write a session handover note for the next conversation
|
|
56
55
|
- `/pr` - Raise a PR with a concise description, then watch CI in the background
|
|
57
56
|
- `/prs-slack <number> [--no-confirm]` - Post a PR's title and URL to the Slack channel configured in `prs.slack`; `--no-confirm` skips the confirmation and posts straight away (used by chained announces)
|
|
58
57
|
- `/prs-status [channel] <owner/repo>...` - Post an overview of the open PRs across the named repos to Slack: a summary line in the channel, the PRs grouped by what they are waiting on in its thread; the channel falls back to `slack.channel`
|
|
59
58
|
- `/refactor` - Run refactoring checks for code quality
|
|
60
59
|
- `/prompts` - Analyze denied tool calls and suggest settings changes to auto-allow recurring prompts
|
|
61
|
-
- `/recall` - Recall the most recent handover note for this repo
|
|
62
60
|
- `/run-logs [session-id|group]` - Read a run session's output via `assist sessions output` — a session id, or else a server group (default `default`) for this repo — and summarise its errors and relevant lines
|
|
63
61
|
- `/releases-configure` - Set this repo's release promotion topology: read its workflow files, follow every `uses:` reusable-workflow call to whatever depth it nests, flatten the `needs:` graph across those boundaries into nodes and edges, put the graph to the user to accept or edit, then write it with `assist releases configure --streams ...` to the project `assist.yml` or this repo's block in `~/.assist.yml`. The repo is the one you are in — it is never passed
|
|
64
62
|
- `/refine` - Refine an existing backlog item through conversation
|
|
@@ -70,10 +68,8 @@ After installation, the `assist` command will be available globally. You can als
|
|
|
70
68
|
- `/review-pr-comments` - Process PR review comments one by one
|
|
71
69
|
- `/jira [action] [KEY] [args]` - Jira actions: `view`, `associate`, `update`, `started`, `done`, `help`. `[KEY]` is optional — it resolves from the session's backlog item
|
|
72
70
|
- `/github [action] [ref] [args]` - GitHub issue actions: `view`, `edit`, `associate`, `update`, `started`, `done`, `help`. `[ref]` is optional — it resolves from the session's backlog item. A bare `/github <ref>` runs `edit`, which opens the issue in the web preview pane; outside a web session the command prints the issue to chat instead
|
|
73
|
-
- `/journal` - Append a journal entry summarising recent work
|
|
74
71
|
- `/next [id]` - Signal completion and chain into the next backlog item
|
|
75
72
|
- `/slack-post [channel] [--thread <ts-or-permalink>] <what to say>` - Compose a markdown message, preview it in the web pane via `assist slack post`, then post the approved body to that Slack channel with the Slack MCP connector and report the permalink. The channel falls back to `slack.channel`; `--thread` posts the message as a reply in that thread. Asked for a thread of several messages, it composes all of them up front and previews the batch in a single `assist slack post --parts` call — a pane per message, in order — and posts nothing until every one is approved: the first message opens the thread and the rest follow under the `thread_ts` it returns, or all of them reply under the resolved `thread_ts` when `--thread` was given. A rejection posts nothing at all; the rejected message is revised in its working file and the whole batch re-previewed from the first message
|
|
76
|
-
- `/standup` - Summarise recent journal entries as a standup update
|
|
77
73
|
- `/subtask <text>` - Add a sub-task to the session's current backlog item
|
|
78
74
|
- `/strip-code-comments` - Strip redundant comments from tracked source files
|
|
79
75
|
- `/sync` - Sync commands and settings to ~/.claude
|
|
@@ -91,11 +87,6 @@ After installation, the `assist` command will be available globally. You can als
|
|
|
91
87
|
- `/verify` - Run all verification commands in parallel
|
|
92
88
|
- `/verify-new` - Add a new verify:\* run command to assist.yml
|
|
93
89
|
- `/transcripts` - Format and summarise meeting transcripts end to end
|
|
94
|
-
- `/voice-setup` - Download required voice models (VAD, STT)
|
|
95
|
-
- `/voice-start` - Start the voice interaction daemon
|
|
96
|
-
- `/voice-stop` - Stop the voice interaction daemon
|
|
97
|
-
- `/voice-status` - Check voice daemon status
|
|
98
|
-
- `/voice-logs` - Show recent voice daemon logs
|
|
99
90
|
|
|
100
91
|
## CLI Commands
|
|
101
92
|
|
|
@@ -109,6 +100,7 @@ Every command supports `--help` for full detail on its flags and behaviour.
|
|
|
109
100
|
- `assist backup schedule remove` - Remove the backup schedule block from the crontab
|
|
110
101
|
- `assist db migrate` - Apply pending backlog database migrations in order
|
|
111
102
|
- `assist db status` - Report whether the database is in sync with the build's bundled migrations
|
|
103
|
+
- `assist db drop-retired` - Drop retired tables left by removed features (e.g. `handovers`), showing each table's row count and asking for confirmation first
|
|
112
104
|
|
|
113
105
|
### Git and GitHub
|
|
114
106
|
|
|
@@ -341,10 +333,6 @@ The Config tab of the sessions web dashboard never receives secret values: `GET
|
|
|
341
333
|
- `assist netcap extract-linkedin-posts [file]` - Parse a netcap capture into structured LinkedIn posts, written to `posts.json` beside the capture
|
|
342
334
|
- `assist criteria-extension [--sign]` - Print the directory to load the [acceptance criteria outliner extension](#acceptance-criteria-outliner-extension) unpacked from (copies to `C:\tools\criteria-extension` under WSL); `--sign` signs it on AMO's unlisted channel and prints the `.xpi` for a permanent Firefox install
|
|
343
335
|
- `assist screenshot <process>` - Capture a screenshot of a running application window (`screenshot.outputDir`, default `./screenshots`)
|
|
344
|
-
- `assist handover save --summary <s>` - Save a session handover note (content from stdin), scoped by the repo's git origin
|
|
345
|
-
- `assist handover list` - List unrecalled handovers for this repo, most recent first
|
|
346
|
-
- `assist handover recall [id]` - Print an unrecalled handover and mark it recalled (most recent by default)
|
|
347
|
-
- `assist handover load` - SessionStart hook entry point advising how many unrecalled handovers exist
|
|
348
336
|
- `assist mermaid export [file.md]` - Render each fenced mermaid block to `<stem>-<index>.svg` via [Kroki](https://kroki.io) (`--out`, `--index`, `mermaid.krokiUrl`)
|
|
349
337
|
- `assist prompts` - Show top 10 denied tool calls by frequency with count and repo breakdown
|
|
350
338
|
- `assist chart [--title <title>]` - Draw a terminal line chart of a `label value` series piped in on stdin, one pair per line, separated by a comma, tab or whitespace. Points are charted in the order given — nothing is sorted or aggregated — and the chart closes on q, Esc or Ctrl-C. The y axis fits the data range with 20% padding rather than starting at zero, so a series that only moves in its third decimal still reads as a shape; a flat series is padded so the line does not sit on the axis. Blank lines are skipped, fewer than two points prints `Not enough data points to chart.`, and a non-numeric value exits 1 naming the line
|
|
@@ -372,19 +360,13 @@ The Config tab of the sessions web dashboard never receives secret values: `GET
|
|
|
372
360
|
- `assist complexity maintainability [pattern]` - Calculate maintainability index per file (`--ignore <glob>`, plus `complexity.ignore`). A file can declare its own threshold with a `// assist-maintainability-override: N` comment in its first ~10 lines, replacing `--threshold` for that file only
|
|
373
361
|
- `assist complexity sloc [pattern]` - Count source lines of code per file
|
|
374
362
|
|
|
375
|
-
### Transcripts
|
|
363
|
+
### Transcripts
|
|
376
364
|
|
|
377
365
|
- `assist transcript configure` - Configure transcript directories
|
|
378
366
|
- `assist transcript clean <path>` - Clean any .vtt file and write the result to stdout (`--format <md|vtt>`, default `md`). Markdown chat log: `assist transcript clean ./raw.vtt > clean.md`; cleaned WebVTT with timings preserved: `assist transcript clean ./raw.vtt --format vtt > fixed.vtt`. `--timestamps` prefixes each markdown speaker turn with `[hh:mm:ss]`, so passages can be cited as ranges for `merge --select`: `assist transcript clean ./raw.vtt --format md --timestamps`
|
|
379
367
|
- `assist transcript list` - List raw .vtt filenames waiting in the pick-up directory
|
|
380
368
|
- `assist transcript merge <path...>` - Collapse several .vtt files into one transcript with `NOTE` provenance, rebasing cue times onto a continuous timeline (`--out <path>` to write a file instead of stdout): `assist transcript merge ./a.vtt ./b.vtt --out ./refinement.vtt`. `--select <file|->` takes keep/removed JSON (`-` reads it from stdin) naming the ranges to keep, so only those passages survive and the dropped ones are counted in the header: `assist transcript merge ./a.vtt ./b.vtt --select ./selection.json`. `--no-provenance` omits every `NOTE` — the Collapsed-from header, the per-passage source marks and the removed count — for an output going somewhere the source names and cut points should not follow: `assist transcript merge ./a.vtt ./b.vtt --select ./selection.json --no-provenance`. `--widen-audience` retunes the language for a reader who was not in the call: the casual asides pitched at the people who were — an intensifier before a word, emphasis after a wh-word, a standalone interjection — are deleted, along with any cue that is nothing but one, leaving anything that carries meaning (verb, idiom, decision marker, predicate adjective, noun, reported speech) for you to judge: `assist transcript merge ./a.vtt ./b.vtt --no-provenance --widen-audience`
|
|
381
369
|
- `assist transcript move <file>` - Convert a raw .vtt to a dated markdown transcript and archive the original
|
|
382
|
-
- `assist voice setup` - Download required voice models (VAD, STT)
|
|
383
|
-
- `assist voice start [--foreground]` - Start the voice daemon (always-on, listens for wake word)
|
|
384
|
-
- `assist voice stop` - Stop the voice daemon
|
|
385
|
-
- `assist voice status` - Check voice daemon status and recent events
|
|
386
|
-
- `assist voice devices` - List available audio input devices
|
|
387
|
-
- `assist voice logs [-n <count>]` - Show recent voice daemon log entries
|
|
388
370
|
|
|
389
371
|
### Sessions
|
|
390
372
|
|
|
@@ -397,6 +379,7 @@ The Config tab of the sessions web dashboard never receives secret values: `GET
|
|
|
397
379
|
- `assist sessions nodes [--json]` - List this node and every linked node with its link state (see [Linked nodes](#linked-nodes))
|
|
398
380
|
- `assist sessions nodes link <name> [url] [--tailscale <host> --port <port>] [--ssh <alias> --port <port>] [--local-port <port>]` - Link a peer node by its web server URL, its Tailscale name, or over an ssh tunnel
|
|
399
381
|
- `assist sessions nodes unlink <name>` - Remove a linked node
|
|
382
|
+
- `assist sessions nodes serve [-p, --port <port>]` - Expose this node's web server on the tailnet with `tailscale serve` and print the command that links it
|
|
400
383
|
- `assist sessions nodes doctor [name] [--json]` - Probe each hop of every link (or one) and stop at the first failure with a remediation
|
|
401
384
|
- `assist sessions nodes logs <name> [-n, --lines <count>] [--json]` - Tail a linked node's `daemon.log` through its web server
|
|
402
385
|
- `assist sessions set-status <status>` - Report the current session's status (`running`/`waiting`) to the daemon; invoked by the Claude Code hooks the daemon wires into each session
|
|
@@ -436,6 +419,7 @@ Each assist install is a **node** with its own daemon and web server. A node can
|
|
|
436
419
|
- `assist sessions nodes [--json]` — this node and each link's state (connected / connecting / disconnected / version-blocked), peer version and last error.
|
|
437
420
|
- `assist sessions nodes link <name> <url>` — link a peer by its web server URL, e.g. `assist sessions nodes link <name> http://127.0.0.1:<port>`. `<name>` must match the peer's `sessions.nodeName`. A running daemon picks up the change immediately; the command confirms the reload, or warns when the daemon could not be notified. With `--tailscale <host> --port <port>` it writes a url link to `https://<host>.<tailnet>.ts.net:<port>`, reading the tailnet's MagicDNS suffix from `tailscale status --json` (`tailscale.exe` under WSL); see [Linking machines over Tailscale](#linking-machines-over-tailscale). With `--ssh <alias> --port <port>` the link goes over ssh instead: the daemon keeps `ssh -N -L <local-port>:127.0.0.1:<port> <alias>` up, restarting it behind the link's circuit breaker and logging its stderr to `daemon.log` as `link <name> ssh:`, and the link and `?node=` panel requests dial the local end. `--local-port` defaults to 43000 + `port` % 1000, bumped past any other link's.
|
|
438
421
|
- `assist sessions nodes unlink <name>` — remove a link.
|
|
422
|
+
- `assist sessions nodes serve [-p, --port <port>]` — runs `tailscale serve --bg --https=<port> http://127.0.0.1:<port>` for this node's web server port (default 3100; `tailscale.exe` under WSL), skipping it when `tailscale serve status --json` already proxies that port there, then prints the `https://<host>.<tailnet>.ts.net:<port>` URL and the `assist sessions nodes link <this node> --tailscale <host> --port <port>` command to run on other nodes.
|
|
439
423
|
- `assist sessions nodes doctor [name] [--json]` — probes each link's hops in order: for a `*.ts.net` link, local Tailscale running and the peer host online in `tailscale status`; for an ssh link, the SSH agent (the alias's `IdentityAgent` answering `ssh-add -l`), `ssh -o BatchMode=yes <alias>` reach and auth, and the local tunnel port accepting; then the peer's web server (`GET /api/health`, including that its `nodeName` matches the link), the peer's daemon (as its health reports it), a WebSocket `hello` (version and protocol), then this node's own link state. It stops at the first failing hop and prints the raw error with a remediation, and exits 1 on any failure. On WSL with no links, it reports a Windows node answering on `127.0.0.1:3101` and prints the command that links it.
|
|
440
424
|
- `assist sessions nodes logs <name> [-n, --lines <count>] [--json]` — tail a linked node's `daemon.log` (default 200 lines) through its web server's `GET /api/daemon-log`; naming this node reads the local log.
|
|
441
425
|
- `sessions.linkVersionCheck` — reaction to a version mismatch with a linked node: `block` (default) heals an older peer by calling its `POST /api/self-update` (runs `assist update`, then restarts its daemon and web server) and reconnects, latching with an error if the gap remains or this node is the older side (a latched link re-checks the peer every minute and reconnects once the versions match); `warn` proceeds anyway; `off` skips the check.
|
|
@@ -444,14 +428,14 @@ With more than one node, a machine picker appears in the top nav and a machine s
|
|
|
444
428
|
|
|
445
429
|
#### Linking machines over Tailscale
|
|
446
430
|
|
|
447
|
-
Each peer exposes
|
|
431
|
+
The sessions web server listens on `127.0.0.1` only. Each peer exposes it on its tailnet name with `tailscale serve`, and the linking node dials it over HTTPS, so links keep working off the home network.
|
|
448
432
|
|
|
449
433
|
1. Install Tailscale on every machine and sign in to the same tailnet. In the admin console's DNS page, turn on MagicDNS and HTTPS certificates. On WSL the Tailscale CLI is the Windows one, `tailscale.exe`.
|
|
450
|
-
2. On each peer, serve its web server port on the tailnet
|
|
434
|
+
2. On each peer, serve its web server port on the tailnet with `assist sessions nodes serve --port <port>`, which prints the link command for step 3. On a PC whose WSL node serves 3100 and Windows node 3101, run it in WSL and in Windows (Windows' `tailscale serve` reaches WSL's `127.0.0.1:3100` through localhost forwarding):
|
|
451
435
|
|
|
452
436
|
```
|
|
453
|
-
|
|
454
|
-
|
|
437
|
+
assist sessions nodes serve --port 3100 # in WSL
|
|
438
|
+
assist sessions nodes serve --port 3101 # in Windows
|
|
455
439
|
```
|
|
456
440
|
|
|
457
441
|
3. Link the nodes by Tailscale host name. From the Mac to both PC nodes:
|
|
@@ -461,11 +445,11 @@ Each peer exposes its loopback web server on its tailnet name with `tailscale se
|
|
|
461
445
|
assist sessions nodes link pc-windows --tailscale pc --port 3101
|
|
462
446
|
```
|
|
463
447
|
|
|
464
|
-
4. Check each link with `assist sessions nodes doctor`; a failed web hop on a `*.ts.net` link names the `
|
|
448
|
+
4. Check each link with `assist sessions nodes doctor`; a failed web hop on a `*.ts.net` link names the `assist sessions nodes serve` command to run on the peer.
|
|
465
449
|
|
|
466
450
|
#### Linking machines over ssh
|
|
467
451
|
|
|
468
|
-
|
|
452
|
+
A remote node is reached through an ssh tunnel to its loopback web server, with keys held by the 1Password SSH agent.
|
|
469
453
|
|
|
470
454
|
1. On a Windows peer, install and start OpenSSH Server: `Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0`, then `Set-Service sshd -StartupType Automatic; Start-Service sshd`. For an administrator account, put the linking node's public key in `C:\ProgramData\ssh\administrators_authorized_keys`, otherwise in `~\.ssh\authorized_keys`.
|
|
471
455
|
2. On a Mac peer, turn on System Settings → General → Sharing → Remote Login and add the linking node's public key to `~/.ssh/authorized_keys`.
|
package/allowed.cli-reads
CHANGED
package/allowed.cli-writes
CHANGED
package/claude/settings.json
CHANGED
|
@@ -40,10 +40,7 @@
|
|
|
40
40
|
"SessionStart": [
|
|
41
41
|
{
|
|
42
42
|
"matcher": "",
|
|
43
|
-
"hooks": [
|
|
44
|
-
{ "type": "command", "command": "assist handover load" },
|
|
45
|
-
{ "type": "command", "command": "assist advise --hook" }
|
|
46
|
-
]
|
|
43
|
+
"hooks": [{ "type": "command", "command": "assist advise --hook" }]
|
|
47
44
|
}
|
|
48
45
|
]
|
|
49
46
|
},
|
|
@@ -55,26 +52,12 @@
|
|
|
55
52
|
"SlashCommand(/refactor)",
|
|
56
53
|
"SlashCommand(/review-pr-comments)",
|
|
57
54
|
"SlashCommand(/transcripts)",
|
|
58
|
-
"SlashCommand(/voice-setup)",
|
|
59
|
-
"SlashCommand(/voice-start)",
|
|
60
|
-
"SlashCommand(/voice-stop)",
|
|
61
|
-
"SlashCommand(/voice-status)",
|
|
62
|
-
"SlashCommand(/voice-logs)",
|
|
63
|
-
"SlashCommand(/journal)",
|
|
64
|
-
"SlashCommand(/standup)",
|
|
65
55
|
"Skill(verify)",
|
|
66
56
|
"Skill(commit)",
|
|
67
57
|
"Skill(devlog)",
|
|
68
58
|
"Skill(refactor)",
|
|
69
59
|
"Skill(review-pr-comments)",
|
|
70
60
|
"Skill(transcripts)",
|
|
71
|
-
"Skill(journal)",
|
|
72
|
-
"Skill(standup)",
|
|
73
|
-
"Skill(voice-setup)",
|
|
74
|
-
"Skill(voice-start)",
|
|
75
|
-
"Skill(voice-stop)",
|
|
76
|
-
"Skill(voice-status)",
|
|
77
|
-
"Skill(voice-logs)",
|
|
78
61
|
"Skill(jira)",
|
|
79
62
|
"SlashCommand(/jira)",
|
|
80
63
|
"Skill(github)",
|
|
@@ -96,10 +79,6 @@
|
|
|
96
79
|
"SlashCommand(/test-cover)",
|
|
97
80
|
"Skill(test-review)",
|
|
98
81
|
"SlashCommand(/test-review)",
|
|
99
|
-
"Skill(handover)",
|
|
100
|
-
"SlashCommand(/handover)",
|
|
101
|
-
"Skill(recall)",
|
|
102
|
-
"SlashCommand(/recall)",
|
|
103
82
|
"Skill(strip-code-comments)",
|
|
104
83
|
"SlashCommand(/strip-code-comments)",
|
|
105
84
|
"Skill(subtask)",
|