@sma1lboy/kobe 0.9.18 → 0.9.20

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.
@@ -3,7 +3,7 @@ name: rove
3
3
  description: Use when controlling Rove tasks, parallel coding attempts, hosted agent sessions, task lifecycle, or the daemon-owned issue tracker from a shell. Also the ONLY channel for messaging another agent session on this machine — `rove api send`, never a peer/MCP side channel.
4
4
  ---
5
5
 
6
- <!-- rove-skill-version: 35 — bump in lockstep with KOBE_SKILL_VERSION (src/lib/skill-install.ts). -->
6
+ <!-- rove-skill-version: 36 — bump in lockstep with KOBE_SKILL_VERSION (src/lib/skill-install.ts). -->
7
7
 
8
8
  # Rove shell control
9
9
 
@@ -215,7 +215,7 @@ turn either. These five carry almost all traffic:
215
215
  add --repo(REQ) --prompt --title --command --count --agents --activate
216
216
  send --prompt(REQ) --task-id --tab --command --plain
217
217
  get-task --task-id(REQ) list (no flags)
218
- collect --task-ids <csv> | --repo
218
+ collect --group <groupId> | --task-ids <csv> | --repo
219
219
  ```
220
220
 
221
221
  Four names that have actually been guessed wrong here: `add --vendor` is
@@ -277,7 +277,10 @@ rove api send --task-id <id> --tab new --prompt "<turn>" # fresh engine tab
277
277
  rove api send --task-id <id> --tab new --command codex --prompt "<turn>"
278
278
 
279
279
  rove api get-task --task-id <id>
280
- rove api collect --task-ids <id1>,<id2>,<id3> --pretty
280
+ # One read for the whole round — the groupId `add --count` returned. Never
281
+ # hand-copy N task ids across turns: collect by group. Lost the groupId? Any
282
+ # sibling task's `.groupId` in `list` output recovers it.
283
+ rove api collect --group <groupId> --pretty
281
284
  rove api list --pretty
282
285
  ```
283
286
 
@@ -286,7 +289,13 @@ command, or content tab alone does not count.
286
289
  Omitting BOTH `--task-id` and `--tab` inside a task that has a dispatcher
287
290
  targets that dispatcher's tab (see the reply rule above); otherwise the
288
291
  target is the active task. Omitting only `--tab` targets a live engine tab
289
- (`tab-1` first, then any surviving engine tab). Only when the task has NO live session at all does `send`
292
+ (`tab-1` first, then any surviving engine tab). **Trap: omitting only
293
+ `--task-id` while giving `--tab tab-N` inside a dispatched task delivers to
294
+ `tab-N` of the DISPATCHER's task** — the dispatcher's id fills in for
295
+ `--task-id`, but an explicit `--tab` is kept, so your `send --tab tab-3`
296
+ lands in the middle of another session's tab-3, not yours. Target your own
297
+ task's tab with `--task-id "$ROVE_TASK_ID" --tab tab-N`. Only when the task
298
+ has NO live session at all does `send`
290
299
  auto-start the canonical engine in the task's worktree (`started: true` in
291
300
  the result marks that fresh session). If live tabs exist but none resolves
292
301
  as an engine, it refuses with `NO_ENGINE_TAB` — address one with `--tab
@@ -330,18 +339,19 @@ logs, dashboards), don't scatter panes for work `add` should own.
330
339
  | `set-branch --task-id ID --branch B` | Rename its branch |
331
340
  | `set-command --task-id ID --command CMD` | Change the engine launch command for the next launch |
332
341
  | `set-status --task-id ID --status S` | Set lifecycle status |
333
- | `archive --task-id ID [--archived=false]` | Archive/unarchive; stops live sessions |
334
342
  | `pin --task-id ID [--pinned=false]` | Pin/unpin |
335
343
  | `set-active --task-id ID` / `--none` | Change shared active task |
336
344
  | `ensure-worktree --task-id ID` | Materialize without starting an engine |
337
- | `land --task-id ID [--strategy merge\|squash] [--delete-branch] [--then-archive] [--remove-worktree=false]` | Merge the task's branch into the base repo's current branch; the Worktree is removed by default (`--remove-worktree=false` keeps it). The branch always stays; dirty/self/base removals are refused, outcome in the result's `worktree` field |
345
+ | `land --task-id ID [--strategy merge\|squash] [--delete-branch] [--remove-worktree=false]` | Merge the task's branch into the base repo's current branch; the Worktree is removed by default (`--remove-worktree=false` keeps it). The branch always stays; dirty/self/base removals are refused, outcome in the result's `worktree` field |
338
346
  | `delete --task-id ID [--force] [--delete-branch]` | Remove task + Worktree; the git branch stays unless `--delete-branch` (and `--force` never implies it) |
339
347
  | `discover-adoptable --repo PATH` | Find untracked Worktrees |
340
348
  | `adopt --repo PATH --worktree PATH` | Import a Worktree |
341
349
 
342
350
  Once a task's work is merged, `delete` is the normal cleanup — the branch is
343
- git's durable record and survives. `archive` remains as a manual "hide the
344
- row" override. `--delete-branch` (or a dirty-worktree `--force`) still needs
351
+ git's durable record and survives. There is no "hide the row without
352
+ deleting" verb anymore (`archive` was removed); a merged task you want out of
353
+ the way is a `delete`, and its branch is still there if you need the history
354
+ back. `--delete-branch` (or a dirty-worktree `--force`) still needs
345
355
  explicit user authorization.
346
356
 
347
357
  ## Issue tracker
@@ -462,15 +472,17 @@ After comparing attempts, finish the round instead of leaving tasks behind:
462
472
  ```bash
463
473
  # Land the winner: merge its branch into the base repo's CURRENT branch.
464
474
  # Verify the base checkout is on the intended branch first.
465
- rove api land --task-id <winner> --then-archive
475
+ rove api land --task-id <winner>
466
476
 
467
- # Archive the losers (non-destructive; branches survive).
468
- rove api archive --task-id <loser1>
469
- rove api archive --task-id <loser2>
477
+ # Delete the losers: task + worktree go away, the git branch survives
478
+ # (recoverable). NOT --delete-branch — that destroys history and needs
479
+ # explicit user authorization.
480
+ rove api delete --task-id <loser1>
481
+ rove api delete --task-id <loser2>
470
482
  ```
471
483
 
472
484
  `land` refuses a dirty base checkout; on merge conflict it aborts cleanly and
473
- returns the conflicted files for manual resolution. `delete` removes a loser's
474
- Worktree but keeps its branch (recoverable); still don't use it — or
475
- `--delete-branch`, which destroys the history without explicit user
476
- authorization.
485
+ returns the conflicted files for manual resolution. `delete` removes a
486
+ loser's Worktree but keeps its branch (recoverable); `--delete-branch`
487
+ destroys the history and is never part of closing a round without explicit
488
+ user authorization.
@@ -41,6 +41,7 @@ Four flag names that have actually been guessed wrong here, and what they are:
41
41
 
42
42
  | Gone | Now |
43
43
  |---|---|
44
+ | `archive` | `delete` (task + worktree go; the git branch survives unless `--delete-branch`) |
44
45
  | `fan-out` | `add --count N` / `add --agents claude:2,codex:1` |
45
46
  | `task-list` | `list` |
46
47
  | `send-tab` | `send --tab tab-N` |
@@ -52,7 +53,7 @@ Seeing one of these in guidance means that guidance predates the rename —
52
53
  ## read
53
54
 
54
55
  ```text
55
- list (none) every task, archived included
56
+ list (none) every task
56
57
  get-task --task-id(REQ) one task + .tabs[] — the read before `send --tab`
57
58
  collect --task-ids <csv> --repo comparison snapshot across tasks
58
59
  inspect --task-id daemon activity + pty walk + tab snapshots
@@ -113,9 +114,8 @@ rename --task-id(REQ) --title(REQ)
113
114
  set-branch --task-id(REQ) --branch(REQ)
114
115
  set-command --task-id(REQ) --command(REQ) next launch only
115
116
  set-status --task-id(REQ) --status(REQ)[backlog|in_progress|in_review|done|canceled|error]
116
- archive --task-id(REQ) --archived(true)
117
117
  pin --task-id(REQ) --pinned(true)
118
- land --task-id(REQ) --strategy[merge|squash] --delete-branch --then-archive --remove-worktree(true)
118
+ land --task-id(REQ) --strategy[merge|squash] --delete-branch --remove-worktree(true)
119
119
  delete --task-id(REQ) --force --delete-branch
120
120
  ```
121
121
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@sma1lboy/kobe",
4
- "version": "0.9.18",
4
+ "version": "0.9.20",
5
5
  "description": "Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions.",
6
6
  "keywords": [
7
7
  "terminal",