talking-stick 0.1.0 → 0.1.1

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
@@ -2,32 +2,52 @@
2
2
 
3
3
  An MCP coordination server that lets multiple AI coding agents share a single workspace without stepping on each other. One agent holds the stick at a time; handoffs carry structured context so the next agent doesn't have to re-derive it.
4
4
 
5
- **Version:** 0.1.0. Multi-process-safe (SQLite WAL), liveness-aware, no daemon. Supports Claude Code, Codex CLI, Gemini CLI, and OpenCode out of the box.
5
+ **Version:** 0.1.1. Multi-process-safe (SQLite WAL), liveness-aware, no daemon. Supports Claude Code, Codex CLI, Gemini CLI, and OpenCode out of the box.
6
6
 
7
7
  ## Quickstart
8
8
 
9
- Three commands from zero to coordinated agents. No repo clone required.
9
+ Three steps, then you're coordinating two agents in the same repo.
10
+
11
+ ### 1. Install the `tt` binary
10
12
 
11
13
  ```bash
12
- # 1. Install the `tt` binary from npm
13
14
  npm i -g talking-stick
15
+ ```
16
+
17
+ ### 2. Register the MCP server and skill in every harness
14
18
 
15
- # 2. Register Talking Stick as an MCP server + install the coordination skill
16
- # across every harness detected on your machine
19
+ ```bash
17
20
  tt install --all
18
21
  tt install-skill --all
19
-
20
- # 3. Restart your agent harness (Claude Code, Codex, Gemini, OpenCode).
21
- # The `talking_stick` tools now appear in any workspace.
22
22
  ```
23
23
 
24
- That's it. The next time two agents `cd` into the same repo, they see each other as members of one room, take turns automatically, and hand off structured context when they release the stick.
24
+ Restart any harness that was already running so it loads the new MCP server. The `talking_stick` tools and skill now appear in every workspace.
25
+
26
+ ### 3. Try it: two agents, one repo
27
+
28
+ Open two terminal panes side by side — tmux split, iTerm split, two windows, whatever you like. `cd` into the same repo in each, and launch a different harness in each pane:
29
+
30
+ | Pane A — Claude Code | Pane B — Codex |
31
+ |---|---|
32
+ | `cd ~/myrepo && claude [--dangerously-skip-permissions]` | `cd ~/myrepo && codex` |
33
+
34
+ Then prompt them.
35
+
36
+ **Pane A (Claude Code):**
37
+
38
+ > Draft a plan to add OAuth login. When it's solid, pass the stick to Codex for critique. After Codex hands it back with revisions, finalize, then pass to Codex to implement — you'll test and review. `/talking-stick`
39
+
40
+ **Pane B (Codex):**
41
+
42
+ > Join the room and wait for the stick. When Claude passes you a plan, critique it sharply and pass it back with revisions. Later, when Claude hands you the implementation turn, build it and pass back for review. `$talking-stick`
43
+
44
+ That's the whole workflow. They negotiate turns automatically, hand off structured context (status, next action, artifacts) at each transition, and never edit the repo at the same time.
25
45
 
26
46
  ### Install options
27
47
 
28
48
  | Method | Command | Notes |
29
49
  |---|---|---|
30
- | **From npm** | `npm i -g talking-stick` | Published as `0.1.0`. Requires Node ≥ 22. |
50
+ | **From npm** | `npm i -g talking-stick` | Published as `0.1.1`. Requires Node ≥ 22. |
31
51
  | **From GitHub** | `npm i -g github:mostlydev/talking-stick` | Tracks the `master` branch; builds on install via the `prepare` hook. |
32
52
  | **From source** | `git clone … && npm install && npm link` | For contributors. |
33
53
 
@@ -51,6 +71,16 @@ tt install-skill gemini
51
71
 
52
72
  During normal execution, install commands skip harnesses that are not present instead of failing or creating new harness config roots. For example, `tt install-skill codex` only creates `~/.codex/skills/` if `~/.codex/` already exists.
53
73
 
74
+ ### Update
75
+
76
+ Uses the right npm/pnpm/yarn by default:
77
+
78
+ ```bash
79
+ tt self-update
80
+ ```
81
+
82
+ Skills are symlinked automatically, so they don't need an update.
83
+
54
84
  ### Remove
55
85
 
56
86
  ```bash
@@ -27,7 +27,7 @@ export function createMcpServer(service = new TalkingStickService()) {
27
27
  const resolveConnectionIdentity = createConnectionIdentityResolver();
28
28
  const server = new McpServer({
29
29
  name: "talking-stick",
30
- version: "0.1.0"
30
+ version: "0.1.1"
31
31
  });
32
32
  server.registerTool("list_rooms", {
33
33
  title: "List Rooms",
@@ -0,0 +1,30 @@
1
+ # Talking Stick 0.1.1
2
+
3
+ Date: 2026-04-27
4
+
5
+ Patch release focused on onboarding clarity and tighter multi-agent wait
6
+ cadence.
7
+
8
+ ## Changed
9
+
10
+ ### Clearer quickstart
11
+
12
+ The README quickstart now presents the setup as three steps: install `tt`,
13
+ register the MCP server and skill across harnesses, then try a concrete
14
+ two-agent Claude Code / Codex workflow in one repo.
15
+
16
+ ### Wait cycles before scheduled wakeups
17
+
18
+ The bundled skill now tells agents to prefer direct `wait_for_turn` wait cycles
19
+ and background long-polls over scheduled wakeups. Scheduled wakeups are framed
20
+ as fallback behavior, and active multi-agent wakeups are capped at 60-120
21
+ seconds unless the operator explicitly pauses the room or the task is blocked
22
+ outside the room.
23
+
24
+ ## Verification
25
+
26
+ - `npm run typecheck`
27
+ - `npm test` — 208 tests across 14 files
28
+ - `npm run build`
29
+ - `git diff --check`
30
+ - `npm pack --dry-run --ignore-scripts`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "talking-stick",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "MCP coordination server for path-scoped agent handoffs.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -70,15 +70,15 @@ Possible outcomes:
70
70
 
71
71
  **Prefer to run the wait in the background.** If your harness supports running a command or subtask in the background, launch the wait (`wait_for_turn` or `tt wait`) as a background process so your foreground stays free for other work — reading, planning, answering the operator — until your turn arrives. Blocking the whole harness on the wait defeats the point.
72
72
 
73
- **Even better: use a wakeup if your harness supports one.** Some harnesses (for example Claude Code with `ScheduleWakeup`, cron-backed agents, or runtime-resumed sleeps) can sleep without keeping conversation context loaded. Prefer that over repeated long-polls: a long-poll re-evaluates your full conversation each cycle, while a wakeup pays one re-entry per actual room event.
73
+ **Prefer wait cycles over scheduled wakeups.** A direct `wait_for_turn` long-poll keeps your cadence aligned with other agents and usually notices a released stick within the same cycle. Use scheduling only when your harness cannot keep a wait running in the background, or when it must return control between checks.
74
74
 
75
75
  Wakeup pattern:
76
76
 
77
77
  1. Probe `wait_for_turn` with `max_wait_ms: 0`.
78
- 2. If it returns `not_yet`, schedule a wakeup and return control to the harness. Use 60-240 s in active multi-agent sessions, or 1200-1800 s at idle/operator-blocked pause points. Avoid roughly 300 s; most prompt caches expire around 5 minutes, so stay under that window or choose a much longer interval.
78
+ 2. If it returns `not_yet`, schedule a wakeup and return control to the harness. Keep active multi-agent wakeups tight: use 60-120 s, and never more than 120 s unless the operator explicitly pauses the room or the task is blocked outside the room.
79
79
  3. On wakeup, repeat from step 1.
80
80
 
81
- This converts repeated re-prompts into roughly one re-entry per actual event. If your harness has neither background work nor wakeups, fall back to synchronous long-polls with the longest client-safe `max_wait_ms` from §3.
81
+ Scheduled wakeups are a fallback, not a reason to check in more slowly than agents using `wait_for_turn` directly. If your harness has neither background work nor wakeups, fall back to synchronous long-polls with the longest client-safe `max_wait_ms` from §3.
82
82
 
83
83
  Whether the wait runs in the foreground or the background, call it **once** with the client-safe `max_wait_ms` budget from above and let the server long-poll. When it returns without `your_turn`, call it again. Do not busy-loop with short waits — that generates log noise and burns cache without buying anything.
84
84