@staff0rd/assist 0.448.0 → 0.450.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
@@ -166,7 +166,7 @@ Backlog item ids are written and displayed in an `a`-prefixed form (e.g. item 55
166
166
  - `assist backlog import [file]` - Restore every table present in a dump (file or stdin) back into the backlog database in foreign-key-safe order, faithfully replacing all data and resyncing identity sequences; prompts for confirmation (use `-y, --yes` to skip; required when reading from stdin)
167
167
  - `assist backlog associate-jira <id> [key]` - Associate a Jira ticket with a backlog item; accepts a bare key (`PROJ-123`) or an Atlassian browse URL, validates the key shape, fetches the issue to confirm it exists, and stores the key (re-running with a different key replaces it). Clears any GitHub issue on the item (one external tracker per item). Use `--clear` to remove the association
168
168
  - `assist backlog associate-github <id> [issue]` - Associate a GitHub issue with a backlog item; accepts a full issue URL or `owner/repo#number` shorthand, normalises to `owner/repo#number`, and fetches the issue title via the `gh` CLI to confirm it. Clears any Jira key on the item (one external tracker per item). Use `--clear` to remove the association
169
- - `assist backlog add-activity <id> <kind> <ref>` - Attach an activity ref to a backlog item, where `kind` is `branch`, `commit`, `pr`, or `slack`; `branch`/`commit` auto-fill their GitHub URL. Use `--title`, `--url`, `--state` to supply or override metadata. Re-adding the same kind and ref upserts rather than duplicating
169
+ - `assist backlog add-activity <id> <kind> <ref>` - Attach an activity ref to a backlog item, where `kind` is `branch`, `commit`, `commit-parent`, `pr`, or `slack`; `branch`/`commit` auto-fill their GitHub URL. Use `--title`, `--url`, `--state` to supply or override metadata. Re-adding the same kind and ref upserts rather than duplicating
170
170
  - `assist backlog record-slack <url>` - Attach a Slack thread permalink to the current session's backlog item (resolved from `ASSIST_BACKLOG_ITEM_ID`) as a `slack` activity ref; used by `/prs-slack` after posting. Use `--title` to label the ref with the PR title. Re-recording the same permalink upserts rather than duplicating, and outside a backlog session it is a silent no-op
171
171
  - `assist backlog move-repo <old-origin> [new-origin]` - Retag all items from one origin to another after a repo rename; the new origin defaults to the current repo's remote, both accept URL or `git@` forms, and a bare repo name works for the old origin when unambiguous. Prompts for confirmation (use `-y, --yes` to skip)
172
172
  - `assist backlog clone <origin>` - Clone a repo over SSH into the configured base directory (`clone.baseDir`, default `~/git`), deriving the SSH remote from a stored origin (`host/org/repo` -> `git@host:org/repo.git`) and cloning into `<base-dir>/<repo>`; `local:` origins have no remote and are not clonable
@@ -309,7 +309,7 @@ From WSL, the selector can also surface and drive Windows-host repos (requires `
309
309
  - `sessions.windowsDaemonHost` / `sessions.windowsDaemonPort` — where the WSL daemon reaches the native Windows daemon (defaults `127.0.0.1` / `51764`; set the host to the Windows IP on WSL2 NAT-mode networking).
310
310
  - `sessions.windowsVersionCheck` — how the WSL↔Windows daemon handshake reacts to a protocol-version mismatch: `block` (default) refuses creates and auto-heals the host, `warn` logs and proceeds anyway, `off` skips the check. Use `warn`/`off` to keep working across an unfixable version gap.
311
311
 
312
- - `sessions.includeCommittedChanges` — when true (`assist config set sessions.includeCommittedChanges true -g`), the session card's change counts and the `/diff` view span the whole branch — `git diff` against `git merge-base HEAD <default branch>` — instead of only uncommitted work, so the change link survives the agent committing. Defaults to false; a silent no-op on the default branch, on detached HEAD, or when no default-branch ref resolves.
312
+ - `sessions.includeCommittedChanges` — when true (`assist config set sessions.includeCommittedChanges true -g`), the session card's change counts and the `/diff` view span the whole session's work rather than only uncommitted changes, so the change link survives the agent committing. The base is the session's own starting point where that is known: the card passes its Claude session id to `/api/git-status` and `/api/diff`, which map it to a backlog item (via `phase_usage`) and take the parent recorded by `assist commit` for that item's first commit (falling back to `<first commit>^`). Otherwise — no session id, no recorded commit, a root commit, or an unreachable database — it falls back to `git merge-base HEAD <default branch>`, and finally to `HEAD`. Defaults to false; a silent no-op on the default branch, on detached HEAD, or when nothing resolves. The lookup is cached per session so the 5s card poll never waits on Postgres.
313
313
 
314
314
  A `run:` entry in `assist.yml` flagged `server: true` (with an optional display-only `port:`) is treated as a singleton **dev server**: at most one may be live per normalised git remote (`getCurrentOrigin`), i.e. across a clone and all its sibling clones of the same repo. Every session card for a repo that defines a `server: true` run shows a **▶ start** button (surfaced by `GET /api/server-runs?cwd=`); clicking it sends `create-run`. The daemon enforces the singleton on `create-run` (and on relaunch via retry) — if a server run is already live for that remote it rejects with a conflict instead of starting a second one that would collide on the port. The web UI turns that conflict into a "replace running server?" prompt; confirming stops the old server and starts the new one, declining leaves it untouched. The serving session's own card shows a `serving :<port>` chip and a **⏹ stop** button (stop leaves a relaunchable card rather than dismissing it), and the slot frees automatically whenever that session stops, exits, or is killed. Non-`server` runs (`build`, `test`, …) are unconstrained.
315
315
 
@@ -318,6 +318,8 @@ Concurrent sessions in one repo can be isolated with native git worktrees instea
318
318
  - `worktree.enabled` (parallel work) — spill concurrent sessions into adjacent `<clone>-N` worktrees. Off means every session on the repo shares its single working copy, exactly as before.
319
319
  - `worktree.trunk` (trunk-based) — on, a spilled worktree's branch tracks `origin/<trunk>` so commits land on the mainline. Off (the default, branch-workflow) it starts off the remote default branch with no mainline tracking, leaving the session to raise its own branch and PR.
320
320
 
321
+ Every live session card carries an **add-agent** button (👥): submitting a prompt there starts a second agent inside that session's own workspace instead of allocating a new one, so both work on what is already in progress there. Starting a session the ordinary way still gets a fresh isolated stream. While several agents share a workspace, only the last one to leave triggers teardown — closing any other simply removes its card, and a card reaching done keeps the workspace for the agents still working in it.
322
+
321
323
  Neither flag leaves permanent state on the clone: nothing writes to the clone's `.git/config` (`assist commit` derives its push refspec from the current branch's upstream instead of relying on `push.default`), so turning parallel work back off leaves the repo as it was.
322
324
 
323
325
  When iterating on assist itself: web server changes only need the `assist sessions` process restarted — sessions survive. Daemon/session-core changes need `assist daemon restart` to load the new code; this kills the PTYs, then claude sessions — including assist sessions that wrap claude, like `assist draft` — are auto-respawned via `claude --resume` with scrollback starting fresh, while run sessions (and assist sessions whose claude sessionId was never discovered) reappear as not-restored tiles that can be retried. A `--once` draft/bug/refine session is respawned through its assist wrapper instead of bare `claude --resume`, so its `assist signal done` watcher is re-established and the card still auto-closes.