@sma1lboy/kobe 0.6.3 → 0.6.5

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.
Files changed (3) hide show
  1. package/README.md +38 -41
  2. package/dist/cli/index.js +5192 -4393
  3. package/package.json +3 -2
package/README.md CHANGED
@@ -78,28 +78,20 @@ Once you're in, the keys you'll use most:
78
78
 
79
79
  | Key | What it does |
80
80
  | ------------------ | -------------------------------------------------------------- |
81
- | `ctrl+h` / `ctrl+j` / `ctrl+k` / `ctrl+l` | Jump straight to a pane (sidebar, workspace, files, terminal) |
82
- | `tab` | Cycle focus to the next pane |
83
- | `ctrl+q` | Detach back to the sidebar (your task keeps streaming) |
84
- | `ctrl+o` | Open the active task's worktree in your editor |
85
- | `F1` | Show the full keybinding help dialog |
86
- | `ctrl+,` | Open Settings (theme, transparent background, dev reset) |
87
- | `q` | Quit (with confirm) |
81
+ | `ctrl+h` / `ctrl+j` / `ctrl+k` / `ctrl+l` | Move between tmux panes (Tasks, engine, Ops files, shell) |
82
+ | `ctrl+q` | Detach back to your launching shell; the task tmux session keeps running |
83
+ | `ctrl+t` | Open a same-engine ChatTab window on the current task/worktree |
84
+ | `ctrl+shift+t` or tmux `prefix T` | Pick an engine, then open a new ChatTab window |
85
+ | `ctrl+[` / `ctrl+]` | Switch to previous / next ChatTab window |
86
+ | `ctrl+w` | Close the current ChatTab window; the final window is protected |
87
+ | `F2` | Rename the current ChatTab window |
88
+ | tmux `prefix f` | Open the Tasks pane's new-task dialog from anywhere in the session |
88
89
 
89
- Inside the sidebar, with a task highlighted: `n` creates a task, `j/k` moves,
90
- `enter` opens, `r` renames, `a` archives, `d` deletes, `s` opens Settings, and
91
- `[` / `]` switches between the working session and the archives view.
90
+ Inside the Tasks pane, with a task highlighted: `n` creates a task, `j/k` moves, `enter` opens, `r` renames, `b` renames the branch, `v` cycles the engine, `o` opens the worktree in your editor, `a` archives/unarchives, `d` deletes, `s` opens Settings, and `[` / `]` switches between Working session and Archives. Archive/delete also kill the task's cached tmux session when one exists.
92
91
 
93
- Inside the chat composer:
92
+ Inside the Ops files pane: `[` / `]` switches All / Changes, `enter` opens the preview, `a` injects an `@file` mention into the engine pane, `p` injects the create-PR prompt, `r` refreshes, and `o` opens a file externally when that makes sense.
94
93
 
95
- - `enter` to send, `shift+enter` for a newline.
96
- - `shift+tab` toggles the per-task tool-permission mode between `default` and `plan`. `default` is the trusted-bypass mode — kobe forwards it to `claude` as `--permission-mode bypassPermissions` because `claude -p` has no interactive permission protocol, so the only meaningful choice is "auto-deny outside cwd" or "auto-approve everything." `plan` forwards unchanged.
97
- - Click the model label in the footer to pick the model for this task (opus / sonnet / haiku).
98
- - Type `/` to open the slash-command dropdown. Bundled `claude-code` commands and your own `.claude/{commands,skills}/*.md` are merged in.
99
- - A `Create PR` chip on the chat header injects a PR-instructions prompt into the active task and routes the resulting PR through the orchestrator.
100
-
101
- A given task can host **multiple chat tabs** on the same worktree — useful when
102
- you want a parallel sub-conversation without losing the main thread.
94
+ A given task can host **multiple ChatTab tmux windows** on the same worktree — useful when you want a parallel sub-conversation without losing the main thread.
103
95
 
104
96
  ## Opening tasks in your editor
105
97
 
@@ -211,24 +203,33 @@ kobe daemon stop # tell the daemon to drain and exit
211
203
  > was removed in favor of the single-bin surface (KOB-136); any script with
212
204
  > `kobed restart` needs a one-time rename to `kobe daemon restart`.
213
205
 
214
- ### `kobe api <verb>` — five shell verbs
206
+ ### `kobe api <verb>` — six shell verbs
215
207
 
216
- Each call is a short-lived process: open the daemon socket, do one RPC, print
217
- JSON to stdout, exit. Any tool with a `Bash` capability (Claude Code, Codex,
218
- Cursor, a custom agent) can drive it.
208
+ Each call is a short-lived process: connect to (or auto-start) the daemon, do
209
+ the work, print JSON to stdout, exit. Any tool with a `Bash` capability (Claude
210
+ Code, Codex, Cursor, a custom agent) can drive it.
219
211
 
220
212
  | verb | flags | what it does |
221
213
  |---|---|---|
222
- | `spawn-task` | `--repo PATH --prompt TEXT [--title T] [--base-branch B]` | Create a new task + worktree + chat session. |
223
- | `create-tab` | `--task-id ID [--title T]` | Open an extra chat tab on an existing task. |
224
- | `send` | `--task-id ID --prompt TEXT [--tab-id TID]` | Resume the task's session with a new prompt. |
225
- | `get-task` | `--task-id ID` | Read task metadata (status, branch, worktree, tabs). |
226
- | `get-tab` | `--task-id ID --tab-id TID` | Read a single tab off the task. |
214
+ | `spawn-task` | `--repo PATH [--prompt TEXT] [--title T] [--base-branch B] [--vendor V]` | Create one task + worktree. With `--prompt`, also start the engine in tmux and deliver the prompt. |
215
+ | `fan-out` | `--repo PATH --prompt TEXT [--count N \| --agents claude:2,codex:1] [--base-branch B]` | Spawn N tasks of the same prompt in one call (per-engine counts optional). Returns `{count, tasks[]}`. Capped at 10. |
216
+ | `send` | `[--task-id ID] --prompt TEXT` | Paste a prompt into a task's engine pane (bracketed paste, then Enter — multi-line stays one turn). Defaults to the active task; prefer `--task-id` for unattended fan-out. |
217
+ | `get-task` | `--task-id ID` | Read task metadata; `.running` is true when the tmux session is live. |
218
+ | `collect` | `--task-ids a,b,c \| --repo PATH` | Read-only aggregation snapshot: per task, branch + `.running` + uncommitted `.changes` ({added, deleted}) for comparing attempts. |
219
+ | `list` | — | List all tasks. |
220
+
221
+ `spawn-task --prompt` and `send` also return `.engineReady` — `false` means a freshly-started engine didn't confirm it was ready before the prompt was pasted (delivered best-effort).
227
222
 
228
223
  Output is one JSON object on stdout, `\n` terminated, exit 0. Errors land on
229
224
  stderr as `{"error":{"message":"...","code":"..."}}` with a non-zero exit.
230
225
  Add `--pretty` for human inspection.
231
226
 
227
+ v0.6 is tmux-native — a task's chat history lives in its tmux session, not in
228
+ the daemon — so `send` types the prompt into the engine pane and there is no
229
+ verb that reads the reply back. Results are reviewed in the TUI. (The v0.5
230
+ `create-tab` / `get-tab` verbs are gone; extra chat tabs are tmux windows
231
+ opened from inside the TUI.)
232
+
232
233
  Fan-out from a shell:
233
234
 
234
235
  ```bash
@@ -237,19 +238,17 @@ T2=$(kobe api spawn-task --repo "$PWD" --prompt "Approach B: event sourcing" |
237
238
  T3=$(kobe api spawn-task --repo "$PWD" --prompt "Approach C: reducer pattern" | jq -r .taskId)
238
239
 
239
240
  # Tell the user three tasks are running — they'll appear in the sidebar.
240
- echo "Spawned $T1 $T2 $T3"
241
+ echo "Spawned $T1 $T2 $T3 — open the kobe TUI to watch them"
241
242
 
242
- # Poll until each settles.
243
+ # Confirm each session came up.
243
244
  for ID in $T1 $T2 $T3; do
244
- until [ "$(kobe api get-task --task-id "$ID" | jq -r .task.status)" = "idle" ]; do
245
- sleep 10
246
- done
245
+ kobe api get-task --task-id "$ID" | jq -r '"\(.task.id) running=\(.running)"'
247
246
  done
248
247
  ```
249
248
 
250
- If the daemon isn't running, `kobe api ...` exits 2 with
251
- `{"error":{"code":"BAD_DAEMON",...}}` on stderr. Start it with
252
- `kobe daemon start` (or just launch the TUI).
249
+ `kobe api ...` auto-starts the daemon, so there is nothing to launch first. If
250
+ the daemon cannot be reached or started, it exits 2 with
251
+ `{"error":{"code":"BAD_DAEMON",...}}` on stderr.
253
252
 
254
253
  ### Install the agent skill
255
254
 
@@ -270,12 +269,10 @@ After install, Claude Code automatically picks up the skill on its next launch.
270
269
  For project-level overrides, copy the file to `<repo>/.claude/skills/kobe/SKILL.md`
271
270
  and customise — Claude Code's discovery order is project > user > none.
272
271
 
273
- `kobe diagnose` reports whether the skill is installed, which is the
274
- fastest way to confirm.
272
+ To confirm it installed, check that `~/.claude/skills/kobe/SKILL.md` exists.
275
273
 
276
- > `kobe skill install` is deprecated as of v0.6 — use the `npx skills`
277
- > command above. `kobe skill uninstall` still works for cleaning up an
278
- > older copy.
274
+ > The old built-in `kobe skill install` / `kobe diagnose` commands were
275
+ > removed in v0.6 use the `npx skills` command above to manage the skill.
279
276
 
280
277
  ## Coming later
281
278