@sma1lboy/kobe 0.8.77 → 0.8.79

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: kobe
3
3
  description: Use when controlling kobe tasks, parallel coding attempts, hosted agent sessions, task lifecycle, or the daemon-owned issue tracker from a shell.
4
4
  ---
5
5
 
6
- <!-- kobe-skill-version: 17 — bump in lockstep with KOBE_SKILL_VERSION (src/lib/skill-install.ts). -->
6
+ <!-- kobe-skill-version: 18 — bump in lockstep with KOBE_SKILL_VERSION (src/lib/skill-install.ts). -->
7
7
 
8
8
  # kobe shell control
9
9
 
@@ -61,6 +61,79 @@ in a kobe task. Do not recursively fan out from a spawned task.
61
61
  When the check fails, none of this applies — use `kobe api` only if the
62
62
  user asks for kobe by name.
63
63
 
64
+ ## Vocabulary — what the user's words map to
65
+
66
+ | Term | What it is | Isolation it gives | Users also say |
67
+ |---|---|---|---|
68
+ | **Task** | one Worktree + branch + the Terminal Tabs inside it — one sidebar row | its own files AND its own branch | "a task", "a new one", "a separate attempt" |
69
+ | **Worktree** | that task's file tree on disk (`.task.worktreePath`) | — | "workspace", "this checkout", "this branch", "here" |
70
+ | **Terminal Tab** | one engine session inside a task | its own conversation, SAME files | "tab", "chattab", "another chat", "a second agent on this" |
71
+ | **Split** | the tree that divides ONE Terminal Tab into several regions (the `pane-open` verb's unit; a leaf is not called a pane) | none — same session's screen, same files | "split it", "side by side", "put the logs next to it" |
72
+
73
+ Two of those colloquialisms are traps, so read them as INTENT, not as
74
+ product terms: in kobe's own vocabulary **Workspace** is the center Terminal
75
+ Tab region of the UI (CONTEXT.md), not a checkout, and **ChatTab** is
76
+ retired vocabulary for Terminal Tab. A user saying "in this workspace" means
77
+ the worktree they are looking at — answer the intent, keep writing the real
78
+ term.
79
+
80
+ They nest — **Task ⊃ Terminal Tab ⊃ Split** — and isolation drops at every
81
+ level down:
82
+
83
+ ```text
84
+ new Task → own worktree + own branch (parallel work can't collide)
85
+ new Tab → own engine session, SAME files (a helper in the same checkout)
86
+ new Split → same session's screen, one tab divided (a monitor beside the work)
87
+ ```
88
+
89
+ The distinction that decides every routing call: **a new tab shares the
90
+ worktree and branch; only a new task gets its own.** Two tabs in one task
91
+ edit the same files, so they can collide — that is a feature when the user
92
+ wants a helper in the same checkout, and a bug when they wanted parallel
93
+ attempts. A split isolates nothing at all: it is a layout, for watching
94
+ something (logs, `btop`, a test loop) next to the work — never the answer to
95
+ "do this work".
96
+
97
+ ### Where does this work land?
98
+
99
+ Inside a kobe session (`$KOBE_TASK_ID` non-empty — check first: it is what
100
+ makes the tab/split rows addressable at all), match top to bottom and take
101
+ the first row that fits:
102
+
103
+ | The user says | Lands in | Command |
104
+ |---|---|---|
105
+ | "you do it", "just fix it", "change X to Y" | you, right here | no kobe verb — edit the files yourself |
106
+ | "try it N ways", "compare approaches" | N new tasks | `kobe api fan-out --repo "$PWD" --count N --prompt "…"` |
107
+ | "split", "side by side", "keep an eye on X while…" | a new region in the CURRENT tab | `kobe api pane-open --command "…"` |
108
+ | names a tab: "tell the agent in tab 3" | that exact tab | `kobe api send --task-id <id> --tab tab-3 --prompt "…"` |
109
+ | a LOCATION word: "in this workspace/worktree/checkout", "on this branch", "here", "same task" | THIS task, a NEW Terminal Tab | `kobe api send --task-id "$KOBE_TASK_ID" --tab new --prompt "…"` |
110
+ | **anything else — no row above matched** | a NEW task — new worktree + branch | `kobe api add --repo "$PWD" --prompt "…"` |
111
+
112
+ Order is the tiebreak: a count ("3 ways in this workspace") beats a location
113
+ word, and delegation language loses to "you do it" — the user asking YOU is
114
+ not asking for a fleet. Two more rules the table can't show:
115
+
116
+ - No location word at all ⇒ new task. It is the only routing whose isolation
117
+ cannot corrupt work-in-progress, so it is the safe default.
118
+ - "this repo" / "this project" are NOT location words — they name the repo,
119
+ not the checkout. Only worktree-scoped words route to a tab.
120
+
121
+ Outside a kobe session none of this applies: there is no "this task" to add
122
+ a tab to, so `add` / `fan-out` are the only routings available.
123
+
124
+ ### Know where you are before you route
125
+
126
+ ```bash
127
+ echo "$KOBE_TASK_ID / $KOBE_TAB_ID" # who you are (empty = not a kobe session)
128
+ kobe api get-task --task-id "$KOBE_TASK_ID" # .task.worktreePath, .task.branch, .running, .tabs[]
129
+ ```
130
+
131
+ `get-task` is the per-task read that answers "what is my worktree, my
132
+ branch, and which sibling tabs exist" — `.tabs[]` carries each tab's `id`, `kind`,
133
+ `vendor`, `lastTitle` and `alive`, which is exactly the target list for
134
+ `send --tab`. A tab flagged `unregistered: true` is a live session the tab
135
+ snapshot lost; it is addressable like any other.
136
+
64
137
  ## Discover before calling
65
138
 
66
139
  ```bash
@@ -95,8 +168,9 @@ kobe api send --task-id <id> --prompt "<complete next turn>"
95
168
  # Reply home: no --task-id inside a dispatched task = the dispatcher's tab.
96
169
  kobe api send --prompt "succeeded: <one line> (branch <final branch>)"
97
170
 
98
- # A task can hold several chat tabs. Enumerate them first (inspect's .tabs is
99
- # the sidebar's tab snapshot: id, kind, vendor, lastTitle), then address one:
171
+ # A task can hold several Terminal Tabs. `get-task` lists ONE task's tabs (the
172
+ # usual read before addressing one); `inspect` is the wider diagnostic — every
173
+ # task's snapshot plus daemon activity and live pty sessions.
100
174
  kobe api inspect --task-id <id>
101
175
  kobe api send --task-id <id> --tab tab-3 --prompt "<turn>" # exact alive tab
102
176
  kobe api send --task-id <id> --tab new --prompt "<turn>" # fresh engine tab
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.8.77",
4
+ "version": "0.8.79",
5
5
  "description": "TUI orchestrator for Claude Code (codename)",
6
6
  "type": "module",
7
7
  "packageManager": "bun@1.3.13",