ai-whisper 0.13.0 → 0.15.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 +9 -6
- package/dist/bin/broker-daemon.js +2 -2
- package/dist/bin/companion-agent.js +366 -43
- package/dist/bin/relay-monitor.js +9 -3
- package/dist/bin/whisper.js +848 -112
- package/package.json +5 -4
- package/skills/ai-whisper-bugfix/SKILL.md +47 -147
- package/skills/ai-whisper-bugfix/evals/evals.json +36 -0
- package/skills/ai-whisper-bugfix/evals/files/bug-report.md +10 -0
- package/skills/ai-whisper-bugfix/evals/triggers.json +21 -0
- package/skills/ai-whisper-code-review/SKILL.md +93 -33
- package/skills/ai-whisper-code-review/evals/evals.json +62 -0
- package/skills/ai-whisper-code-review/evals/triggers.json +25 -0
- package/skills/ai-whisper-deliberation/SKILL.md +52 -145
- package/skills/ai-whisper-deliberation/evals/evals.json +36 -0
- package/skills/ai-whisper-deliberation/evals/files/seed-idea.md +2 -0
- package/skills/ai-whisper-deliberation/evals/triggers.json +21 -0
- package/skills/ai-whisper-deliberation-craft/SKILL.md +117 -16
- package/skills/ai-whisper-deliberation-craft/evals/evals.json +54 -0
- package/skills/ai-whisper-deliberation-craft/evals/triggers.json +25 -0
- package/skills/ai-whisper-plan-execution/SKILL.md +135 -31
- package/skills/ai-whisper-plan-execution/evals/evals.json +50 -0
- package/skills/ai-whisper-plan-execution/evals/files/rename-target.ts +5 -0
- package/skills/ai-whisper-plan-execution/evals/triggers.json +25 -0
- package/skills/ai-whisper-quick-task/SKILL.md +150 -41
- package/skills/ai-whisper-quick-task/evals/evals.json +63 -0
- package/skills/ai-whisper-quick-task/evals/files/notes.md +11 -0
- package/skills/ai-whisper-quick-task/evals/files/pagination.ts +3 -0
- package/skills/ai-whisper-quick-task/evals/triggers.json +25 -0
- package/skills/ai-whisper-ralph/SKILL.md +48 -147
- package/skills/ai-whisper-ralph/evals/evals.json +36 -0
- package/skills/ai-whisper-ralph/evals/files/GOAL.md +8 -0
- package/skills/ai-whisper-ralph/evals/triggers.json +21 -0
- package/skills/ai-whisper-sdd/SKILL.md +46 -139
- package/skills/ai-whisper-sdd/evals/evals.json +36 -0
- package/skills/ai-whisper-sdd/evals/files/approved-spec.md +9 -0
- package/skills/ai-whisper-sdd/evals/triggers.json +21 -0
- package/skills/ai-whisper-workflow/SKILL.md +302 -0
- package/skills/ai-whisper-workflow/evals/evals.json +47 -0
- package/skills/ai-whisper-workflow/evals/files/GOAL.md +8 -0
- package/skills/ai-whisper-workflow/evals/files/cache-design-spec.md +9 -0
- package/skills/ai-whisper-workflow/evals/files/empty-idea.md +0 -0
- package/skills/ai-whisper-workflow/evals/triggers.json +25 -0
- package/skills/ai-whisper-workflow/references/workflow-types.md +29 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ai-whisper
|
|
2
2
|
|
|
3
|
-
ai-whisper pairs two coding agents — mount any two of Claude, Codex, ezio, and
|
|
3
|
+
ai-whisper pairs two coding agents — mount any two of Claude, Codex, ezio, agy, and Cursor — into a terminal-native pair that hand work back and forth under a single baton, so one agent implements while the other reviews, and a structured workflow drives the loop to a finished, reviewed deliverable without a human babysitting every round.
|
|
4
4
|
|
|
5
5
|
## Magic moment
|
|
6
6
|
|
|
@@ -13,6 +13,8 @@ whisper collab mount claude
|
|
|
13
13
|
whisper collab mount codex
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
Swap in any of the four agents — `whisper collab mount cursor` drives Cursor's `agent` CLI the same way, so e.g. `claude` + `cursor` is a valid pair.
|
|
17
|
+
|
|
16
18
|
Then, from inside either agent's session, kick off a structured workflow against a spec — just ask in plain language:
|
|
17
19
|
|
|
18
20
|
```text
|
|
@@ -52,10 +54,11 @@ It is **not** for:
|
|
|
52
54
|
|
|
53
55
|
## Prerequisites
|
|
54
56
|
|
|
55
|
-
You pair any two of
|
|
57
|
+
You pair any two of five agents — `claude`, `codex`, `ezio`, `agy`, and `cursor`. ai-whisper drives the *real* Claude, Codex, Antigravity, and Cursor CLIs, so install and authenticate whichever of those you plan to mount first; `ezio` is protocol-native and ships with ai-whisper, so it needs no separate CLI.
|
|
56
58
|
|
|
57
59
|
- **[Claude Code CLI](https://claude.com/claude-code)** — the `claude` command, signed in.
|
|
58
60
|
- **[Codex CLI](https://github.com/openai/codex)** — the `codex` command, signed in.
|
|
61
|
+
- **[Cursor CLI](https://cursor.com/cli)** — the `agent` command, signed in. (Override the binary with `AI_WHISPER_CURSOR_CMD` if it is on your PATH under a different name.)
|
|
59
62
|
- **ezio** *(optional)* — bundled with ai-whisper; mount it with `whisper collab mount ezio`, no separate install.
|
|
60
63
|
- **agy** *(optional)* — the `agy` command (Antigravity CLI), signed in. Mount it with `whisper collab mount agy` (manual-mount parity; no auto-launch via `collab start`).
|
|
61
64
|
- **Node.js 22+**.
|
|
@@ -66,7 +69,7 @@ You pair any two of four agents — `claude`, `codex`, `ezio`, and `agy`. ai-whi
|
|
|
66
69
|
|
|
67
70
|
## Safety & permissions
|
|
68
71
|
|
|
69
|
-
ai-whisper launches each agent in **full-autonomy mode** so the relay can drive it unattended — `claude --dangerously-skip-permissions
|
|
72
|
+
ai-whisper launches each agent in **full-autonomy mode** so the relay can drive it unattended — `claude --dangerously-skip-permissions`, `codex --dangerously-bypass-approvals-and-sandbox`, and `agent --force` (Cursor). Inside the mounted workspace the agents read, write, and run commands without prompting. Point it at code you're willing to let two agents change autonomously, watch the run on the dashboard, and remember you are the final gatekeeper — review the result before you ship it. The deeper rationale is in [Concepts](docs/concepts.md).
|
|
70
73
|
|
|
71
74
|
## Quickstart
|
|
72
75
|
|
|
@@ -124,15 +127,15 @@ A run that stops short usually **escalates** — it does not crash. When the eva
|
|
|
124
127
|
|
|
125
128
|
ai-whisper is **not a swarm**. The agents never type at once — work moves by a single baton, one owner at a time. Mounted sessions are *real* agent sessions in your terminal — Claude or Codex CLIs, ezio, or agy — and those sessions are the source of truth. Autonomy is supervised: every handoff, verdict, and round is inspectable, and runs are resumable rather than fire-and-forget. Work is organized as structured workflows — explicit loops and state transitions, not a free-form chat.
|
|
126
129
|
|
|
127
|
-
Claude, Codex, ezio, and
|
|
130
|
+
Claude, Codex, ezio, agy, and Cursor are supported today — you mount any two of them; the architecture is provider-agnostic by design, so other coding-agent CLIs can be added behind the same relay.
|
|
128
131
|
|
|
129
132
|
For the full mental model, read [Concepts](docs/concepts.md).
|
|
130
133
|
|
|
131
134
|
## Duo characters
|
|
132
135
|
|
|
133
|
-
|
|
136
|
+
When enabled, a collab casts its two agents as a classic movie duo. The first `whisper collab mount` rolls a pair — Sherlock & Watson, Batman & Robin, Walter White & Jesse Pinkman, and four more — and each mount summons its character with ASCII art and an iconic one-liner before the agent CLI starts. The assignment sticks for the lifetime of the collab: the dashboard and relay chrome show `Batman (claude)` instead of a bare vendor name, and the agents themselves are told who they are (character flavor stays in conversational prose only — never in code, commits, or workflow verdicts).
|
|
134
137
|
|
|
135
|
-
It's cosmetic and
|
|
138
|
+
It's cosmetic and **off by default** — a plain `whisper collab mount` rolls nothing, shows nothing, and uses plain vendor names everywhere. Opt in by setting `AI_WHISPER_DUO=on` (also accepts `1`, `true`, `yes`) in your environment; once enabled, silence a single mount with `--no-duo`, which overrides the environment for that mount.
|
|
136
139
|
|
|
137
140
|
## Learn more
|
|
138
141
|
|
|
@@ -63,7 +63,7 @@ var threadStates = [
|
|
|
63
63
|
"failed"
|
|
64
64
|
];
|
|
65
65
|
var collabStates = ["active", "stopped"];
|
|
66
|
-
var agentTypes = ["codex", "claude", "ezio", "agy"];
|
|
66
|
+
var agentTypes = ["codex", "claude", "ezio", "agy", "cursor"];
|
|
67
67
|
var sessionRegistrationStates = ["registered"];
|
|
68
68
|
var workItemStates = [
|
|
69
69
|
"queued",
|
|
@@ -332,7 +332,7 @@ var mockProviderReplySchema = z14.object({
|
|
|
332
332
|
|
|
333
333
|
// ../shared/dist/relay-host.js
|
|
334
334
|
import { z as z15 } from "zod";
|
|
335
|
-
var relayTargets = ["codex", "claude", "ezio", "agy", "pull"];
|
|
335
|
+
var relayTargets = ["codex", "claude", "ezio", "agy", "cursor", "pull"];
|
|
336
336
|
var relayDirectiveSchema = z15.object({
|
|
337
337
|
raw: z15.string().min(1),
|
|
338
338
|
target: z15.enum(relayTargets),
|