paseo-bm 0.1.0-alpha.0 → 0.2.0-alpha.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 +23 -445
- package/dist/index.js +169 -22
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/plugin/client/agent-tree.ts +12 -1
- package/plugin/client/answer-state.ts +62 -0
- package/plugin/client/bead-chips.tsx +147 -0
- package/plugin/client/beads-model.ts +581 -0
- package/plugin/client/beads-screen.tsx +516 -0
- package/plugin/client/beads-tab.tsx +58 -0
- package/plugin/client/chat-card.tsx +492 -0
- package/plugin/client/chat-cards.ts +662 -0
- package/plugin/client/dashboard-actions.tsx +255 -0
- package/plugin/client/dashboard-model.ts +947 -0
- package/plugin/client/dashboard-view.ts +215 -0
- package/plugin/client/dashboard.tsx +318 -0
- package/plugin/client/launch-manager.ts +87 -51
- package/plugin/client/launcher.tsx +435 -55
- package/plugin/client/markdown-view.tsx +112 -0
- package/plugin/client/markdown.ts +145 -0
- package/plugin/client/settings.tsx +104 -0
- package/plugin/client/setup-model.ts +72 -0
- package/plugin/client/setup-screen.tsx +332 -0
- package/plugin/client/slot.ts +47 -0
- package/plugin/client/ui.tsx +262 -0
- package/plugin/client/waiting-pills-model.ts +88 -0
- package/plugin/client/waiting-pills.tsx +157 -0
- package/plugin/index.client.tsx +173 -1
- package/plugin/index.server.ts +60 -3
- package/plugin/roles/manager.md +172 -208
- package/plugin/roles/reviewer.md +140 -162
- package/plugin/roles/worker.md +371 -441
- package/plugin/server/agent-labels.ts +178 -0
- package/plugin/server/agent-role.ts +91 -0
- package/plugin/server/answer-marks.ts +120 -0
- package/plugin/server/bead-actions.ts +88 -0
- package/plugin/server/bead-work.ts +80 -0
- package/plugin/server/beads-store.ts +342 -0
- package/plugin/server/bm-report.ts +433 -0
- package/plugin/server/chat-peers.ts +62 -0
- package/plugin/server/chat-rpc.ts +116 -0
- package/plugin/server/chat-waiting.ts +130 -0
- package/plugin/server/collector.ts +630 -0
- package/plugin/server/cost.ts +66 -0
- package/plugin/server/dashboard-rpc.ts +596 -0
- package/plugin/server/format-check.ts +352 -0
- package/plugin/server/install-home.ts +187 -0
- package/plugin/server/live-timeline.ts +129 -0
- package/plugin/server/manager-instructions.ts +1 -1
- package/plugin/server/manager.ts +124 -54
- package/plugin/server/notices.ts +56 -0
- package/plugin/server/paseo-cli.ts +115 -0
- package/plugin/server/review-budget.ts +199 -0
- package/plugin/server/reviewer-instructions.ts +1 -1
- package/plugin/server/role-extras.ts +197 -0
- package/plugin/server/role-hook.ts +146 -15
- package/plugin/server/role-mode.ts +218 -0
- package/plugin/server/setup-rpc.ts +68 -0
- package/plugin/server/setup-skills.ts +106 -0
- package/plugin/server/setup-tools.ts +162 -0
- package/plugin/server/shell.ts +68 -0
- package/plugin/server/stop-propagation.ts +107 -24
- package/plugin/server/trace-store.ts +1137 -0
- package/plugin/server/traces.ts +1332 -0
- package/plugin/server/worker-instructions.ts +1 -1
- package/plugin/server/workflow-steps.ts +422 -0
- package/plugin/shared/bead-ids.ts +25 -0
- package/plugin/shared/bm-format.ts +424 -0
- package/plugin/shared/bm-questions.ts +213 -0
- package/plugin/shared/bm-report.ts +433 -0
- package/plugin/shared/contracts.ts +912 -1
- package/plugin/shared/new-request.ts +20 -0
- package/plugin/shared/order.ts +22 -0
- package/plugin/shared/prices.ts +65 -0
- package/plugin/shared/settings.ts +57 -0
- package/plugin/shared/sole-worker.ts +19 -0
- package/plugin/shared/version.ts +1 -1
- package/plugin/tsconfig.json +1 -1
package/README.md
CHANGED
|
@@ -1,463 +1,41 @@
|
|
|
1
1
|
# paseo-bm — Beads Management for Paseo
|
|
2
2
|
|
|
3
|
-
`paseo-bm`
|
|
3
|
+
`paseo-bm` adds a small agent team to [Paseo](https://paseo.sh). You describe a change in chat, and the team turns it into documents (only when the change needs them), beads (small, dependency-aware work items tracked with `br`) and working code. A separate agent reviews each stage.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+

|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- **Beads Manager** — your single point of contact in a workspace. It hands each request to a Worker right away and tells you the result.
|
|
8
|
+
- **Beads Worker** — carries one request from start to finish with the feature-workflow skills from [cuongntr/agent-skills](https://github.com/cuongntr/agent-skills) (another author's repository). Anything beyond your request becomes a suggestion, not work.
|
|
9
|
+
- **Reviewer** — checks each stage and returns a verdict. It never edits anything.
|
|
10
|
+
- **Screens in Paseo** — **Metric** (what each request did and cost), **Beads** (the workspace's beads) and **Setup** (tools, skills and your own role instructions).
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
> **Status:** prerelease (`0.2.0-alpha.*`). Command names, flags, exit codes and the `--json` shape are a public contract, but expect rough edges.
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
- [Requirements](#requirements)
|
|
13
|
-
- [Install](#install)
|
|
14
|
-
- [Using it: the orchestration loop](#using-it-the-orchestration-loop)
|
|
15
|
-
- [Everything paseo-bm writes](#everything-paseo-bm-writes)
|
|
16
|
-
- [Agent skills](#agent-skills)
|
|
17
|
-
- [Checking health: `doctor`](#checking-health-doctor)
|
|
18
|
-
- [Updating](#updating)
|
|
19
|
-
- [Uninstalling](#uninstalling)
|
|
20
|
-
- [Command reference](#command-reference)
|
|
21
|
-
- [Exit codes and JSON output](#exit-codes-and-json-output)
|
|
22
|
-
- [Troubleshooting](#troubleshooting)
|
|
23
|
-
- [Not available yet](#not-available-yet)
|
|
14
|
+
## Quick start
|
|
24
15
|
|
|
25
|
-
|
|
16
|
+
1. Open the Paseo app so its daemon is running. You need Paseo 0.8.0 or newer with the `paseo` CLI on your PATH, Node 22 or newer, and macOS or Linux.
|
|
17
|
+
2. In a terminal, run the installer and answer its questions:
|
|
26
18
|
|
|
27
|
-
|
|
19
|
+
```bash
|
|
20
|
+
npx paseo-bm
|
|
21
|
+
```
|
|
28
22
|
|
|
29
|
-
|
|
30
|
-
> **1. Plugin trust: `pluginsEnabled`.**
|
|
31
|
-
> Paseo plugins run **without a sandbox**. The paseo-bm plugin runs inside the Paseo daemon with the same access to your machine as the daemon itself: files, processes, credentials and network. Only enable it if you trust this package.
|
|
23
|
+
3. Open **Beads Manager** in Paseo's sidebar, press **Go to** next to your workspace, and describe the change you want.
|
|
32
24
|
|
|
33
|
-
>
|
|
34
|
-
> **2. Agent-creation permission: `daemon.mcp.injectIntoAgents`.**
|
|
35
|
-
> The Manager and the Worker need Paseo's tools to create, message and stop other agents. Paseo grants those tools to **every agent on this machine**, not only to paseo-bm's roles. Once the switch is on, any agent can create, prompt and stop other agents, which means it can start work and spend money on your model providers.
|
|
25
|
+
> **Run it, don't add it as a dependency.** `paseo-bm` is a command-line tool you run with `npx`. `npm i paseo-bm` only adds a useless dependency to your project.
|
|
36
26
|
|
|
37
|
-
|
|
27
|
+
## Before you install
|
|
38
28
|
|
|
39
|
-
|
|
29
|
+
- **Paseo plugins run without a sandbox.** The plugin has the same access to your machine as the Paseo daemon: files, processes, credentials and network.
|
|
30
|
+
- **One consent grants Paseo's agent tools to every agent on this machine**, not only to paseo-bm's roles. Any agent can then create, prompt and stop other agents, and spend money on your model providers.
|
|
31
|
+
- **The Worker runs without permission prompts.** Its limits (no commit or push, no destructive commands, no secret files) are role instructions only, so review `git diff` before you commit.
|
|
40
32
|
|
|
41
|
-
|
|
42
|
-
npx paseo-bm install --apply --enable-plugins
|
|
43
|
-
```
|
|
33
|
+
The full warnings, including what paseo-bm records on your machine, are in [GUIDE.md](GUIDE.md#before-you-install-read-these-warnings).
|
|
44
34
|
|
|
45
|
-
|
|
46
|
-
> **3. Sub-agent permission modes.**
|
|
47
|
-
> - **The Worker** is created in its provider's **no-prompt mode**: Claude `bypassPermissions`, Codex `full-access`, or the equivalent for other providers. Paseo does not ask you to approve its commands.
|
|
48
|
-
> - **The Reviewer** is created in **auto mode** (Claude `auto`, Codex `auto`), which does not grant full or network access.
|
|
49
|
-
> - **The Manager** runs in the mode of its `bm-manager` profile and never approves permission requests on your behalf.
|
|
50
|
-
>
|
|
51
|
-
> The Worker's boundaries (no git, no destructive commands, ask before dependencies, network or migrations) are therefore enforced **only by its role instructions**. No Paseo permission prompt backs them up. Use paseo-bm in repositories where you are comfortable with that, and review `git diff` before you commit anything.
|
|
35
|
+
## Documentation
|
|
52
36
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
| Requirement | Detail |
|
|
56
|
-
|---|---|
|
|
57
|
-
| Operating system | macOS or Linux. Native Windows is refused. WSL reports itself as Linux but is not covered by testing. |
|
|
58
|
-
| Node.js | 22 or newer |
|
|
59
|
-
| Paseo | Paseo desktop with its CLI and daemon at **0.8.0 or newer**, both reporting the **same** version. The daemon must be running, which usually means the Paseo app is open. |
|
|
60
|
-
| `paseo` CLI | On your `PATH`: `paseo --version` must work in the shell you install from |
|
|
61
|
-
| Beads CLI (`br` or `bd`) | Optional for installing, but **required for the orchestration loop**: the Worker uses it to create and update beads. A missing beads CLI is only a warning. |
|
|
62
|
-
| A logged-in agent provider | At least one provider Paseo offers (for example Claude or Codex), logged in with that tool's own login. paseo-bm never handles credentials. |
|
|
63
|
-
| Network | Needed for `npx` to download the package, and for the optional skills step. The plugin install itself runs locally. |
|
|
64
|
-
|
|
65
|
-
No `sudo` is needed. The npm package has no install scripts, so downloading it changes nothing on your machine until you run a command and confirm.
|
|
66
|
-
|
|
67
|
-
## Install
|
|
68
|
-
|
|
69
|
-
While paseo-bm is in prerelease, every build is published under the npm dist-tag `next`, so run:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
npx paseo-bm@next
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
There is no stable release yet, so `npx paseo-bm` without `@next` does not resolve. Once a stable version is published, `npx paseo-bm` installs it.
|
|
76
|
-
|
|
77
|
-
### What the interactive install asks
|
|
78
|
-
|
|
79
|
-
Run the command in a real terminal. If you pipe its output (for example `| tee`), paseo-bm sees no terminal and asks nothing: see [non-interactive](#non-interactive-install). `--json` also turns off every question.
|
|
80
|
-
|
|
81
|
-
1. **Environment check.** paseo-bm checks the operating system, the Node version, the `paseo` CLI, the daemon, the Paseo version and whether the install home can be created. If any check fails, it stops **before writing anything**, prints a remediation and exits `3`. A missing beads CLI is only a warning.
|
|
82
|
-
2. **Role configuration** (first install, or with `--reconfigure`). For each of the Manager, Worker and Reviewer it asks three things:
|
|
83
|
-
- a name (defaults: `Beads Manager`, `Beads Worker`, `Beads Reviewer`);
|
|
84
|
-
- a provider, from the providers Paseo offers;
|
|
85
|
-
- a model for that provider.
|
|
86
|
-
|
|
87
|
-
The Reviewer is asked separately: choosing a different provider from the Worker's gives the review an independent point of view. The Reviewer is the only role that is not granted Paseo tools.
|
|
88
|
-
3. **Preview.** Every file, Paseo registration and config key that would change is listed, along with the agent roles to register.
|
|
89
|
-
4. **`Apply these changes?`** (default No). Answering No writes nothing. If there is nothing to change, this question is skipped and every action is reported as skipped.
|
|
90
|
-
5. **Plugin registration.** The payload is copied into `~/.paseo-bm/plugin/<version>/` and registered with Paseo as plugin `paseo-bm`.
|
|
91
|
-
6. **`Enable Paseo plugins and grant Paseo tools to agents?`** (default No). This is the single trust consent described [above](#before-you-install-read-these-warnings). It is not asked when both switches are already on.
|
|
92
|
-
7. **Provider login.** For a chosen provider that is not logged in, paseo-bm prints that provider's own login command and asks `Run <command> now?`. If you decline, it prints manual steps. The role stays registered either way.
|
|
93
|
-
8. **Agent skills.** If recommended skills are missing, paseo-bm shows the exact `skills` command and asks `Run the skills CLI now to install the missing agent skills?`. See [Agent skills](#agent-skills). Declining is remembered; `--ask-skills-again` asks again.
|
|
94
|
-
9. **Summary.** This covers the plugin state, the registered roles, the login state, the skills state, and where everything was written.
|
|
95
|
-
|
|
96
|
-
Two extra questions appear only when they apply: overwriting files you edited by hand (a backup is taken first), and installing an **older** paseo-bm over a newer one.
|
|
97
|
-
|
|
98
|
-
When the summary shows the plugin as `running`, open Paseo and continue with [the orchestration loop](#using-it-the-orchestration-loop).
|
|
99
|
-
|
|
100
|
-
### Non-interactive install
|
|
101
|
-
|
|
102
|
-
Without a terminal, `install` needs `--apply` to write anything. Without `--apply` it prints the preview and exits `6`. Consent to each trust boundary needs its own flag:
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
npx paseo-bm install --apply --yes --enable-plugins --install-skills \
|
|
106
|
-
--role manager=claude/<model> --role worker=claude/<model> --role reviewer=codex/<model> \
|
|
107
|
-
--json
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
- `--enable-plugins` is the consent for both `pluginsEnabled` and `daemon.mcp.injectIntoAgents`. Without it, the install completes and exits `4`.
|
|
111
|
-
- `--install-skills` allows paseo-bm to run the third-party `skills` CLI. Without it, missing skills are only a warning.
|
|
112
|
-
- `--role <role>=<provider>/<model>` picks the tool for a role; `role` is `manager`, `worker` or `reviewer`. A role with no `--role` and no earlier configuration gets Paseo's default provider and model, with a warning. The provider/model pair must exist in Paseo, otherwise the run stops with `E_PROVIDER_UNAVAILABLE` before anything is written.
|
|
113
|
-
- Installing an older version over a newer one is refused without a terminal (exit `5`).
|
|
114
|
-
|
|
115
|
-
## Using it: the orchestration loop
|
|
116
|
-
|
|
117
|
-
1. **Open Beads Manager.** In Paseo, use the **Beads Manager** item in the sidebar, or **Open Beads Manager** in the Command Center. Each workspace reuses one Manager: an existing Manager is reopened rather than duplicated. The **Beads agents** workspace panel shows the Manager → Worker → Reviewer tree with each agent's status.
|
|
118
|
-
2. **Chat with the Manager.** Describe the feature or fix in the normal Paseo chat. The Manager does not do the work itself. It **immediately creates a Beads Worker in the same workspace** and tells you which Worker has the request. If recommended skills are missing, the Manager says so and still delegates.
|
|
119
|
-
3. **The Worker classifies the request** and tells you the size and the reason. The first rule that matches wins:
|
|
120
|
-
- **Large:** touches a public contract, a data schema, authentication, permissions, weak reversibility, or several independent components. This applies no matter how small the request sounds.
|
|
121
|
-
- **Small:** fits in one component, changes no contract, needs no new document, and the approach is clear from the start.
|
|
122
|
-
- **Medium:** everything else.
|
|
123
|
-
4. **The Worker follows feature-workflow through to implementation.** The path depends on the size:
|
|
124
|
-
|
|
125
|
-
| | Small | Medium | Large |
|
|
126
|
-
|---|---|---|---|
|
|
127
|
-
| New documents | none | only the affected parts | the full document chain |
|
|
128
|
-
| Before implementing | goes straight on | goes straight on | **asks you to confirm** |
|
|
129
|
-
| Reviews | exactly one, after implementing | at most 2 per batch | at most 2 per batch |
|
|
130
|
-
| Bead polish passes | none | at most 1 per bead batch | at most 1 per bead batch |
|
|
131
|
-
| Review + polish budget per request | 1 | 6 | 10 |
|
|
132
|
-
|
|
133
|
-
Before creating beads, the Worker searches open beads by label and updates a matching bead instead of creating a duplicate. It then implements the ready beads, runs the repository's tests, and closes each bead with evidence.
|
|
134
|
-
5. **A Reviewer checks each batch.** A batch is one coherent change: a document, a round of bead changes, or one implemented bead. The Reviewer only reads and comments. The Worker fixes blocking findings and re-reviews. If blocking findings remain after the second review, or the budget is reached, the Worker **stops and asks you** instead of reviewing again.
|
|
135
|
-
6. **The Worker reports and waits.** It sends structured progress reports to the Manager, so you can ask the Manager "what's the status?". When the Worker is finished it stays idle for you to inspect. **Only you archive or delete agents**: the Manager may stop a Worker, but no agent archives or deletes another.
|
|
136
|
-
|
|
137
|
-
**Limits you should know about:**
|
|
138
|
-
|
|
139
|
-
- **The review and polish budget is a behavioural guardrail, not a hard block.** The Worker counts and reports its own reviews, and the Manager watches those counts. Nothing in code prevents a Worker that ignores its instructions.
|
|
140
|
-
- **The Worker never commits, pushes or opens pull requests.** You review `git diff` and decide. It does not run destructive commands, write outside the workspace, or read credential files. It **asks first** before:
|
|
141
|
-
- installing or upgrading dependencies;
|
|
142
|
-
- running commands that need the network;
|
|
143
|
-
- running migrations;
|
|
144
|
-
- deploying or publishing;
|
|
145
|
-
- editing frozen documents, widening scope, or deleting or merging beads.
|
|
146
|
-
- **You can chat with the Worker directly** to clarify or redirect; you do not have to go through the Manager.
|
|
147
|
-
- **Stopping a Worker also stops its running Reviewers.** When you press Stop on a Worker in Paseo, the plugin sends a fixed stop notice to that Worker's running Reviewers, and the role instructions tell both agents to stand down. This is **not a hard cancel**: Paseo 0.8 gives plugins no way to cancel an agent. A stopped Reviewer takes one short extra turn to acknowledge, and the stopped Worker is woken once by the Reviewer's "finished" notification. It then reports where it stopped and waits for you.
|
|
148
|
-
- Your requests and source code go to the model providers you chose for each role. paseo-bm has no telemetry.
|
|
149
|
-
|
|
150
|
-
## Everything paseo-bm writes
|
|
151
|
-
|
|
152
|
-
This is the complete list. paseo-bm writes nowhere else.
|
|
153
|
-
|
|
154
|
-
### Install home: `~/.paseo-bm/**`
|
|
155
|
-
|
|
156
|
-
Change the location with `--home <dir>` or `PASEO_BM_HOME`. paseo-bm refuses an install home that is, or contains, your home directory, Paseo's directory or an agent configuration directory.
|
|
157
|
-
|
|
158
|
-
| Path | What it is |
|
|
159
|
-
|---|---|
|
|
160
|
-
| `~/.paseo-bm/plugin/<version>/` | The plugin payload for each installed version, including `roles/manager.md`, `roles/worker.md` and `roles/reviewer.md`. Older versions are kept until you run `install --prune`. |
|
|
161
|
-
| `~/.paseo-bm/install.json` | The install record and the source of truth for what paseo-bm owns: version, a hash of every file, Paseo config changes and their previous values, roles, and skills-step state. Do not edit or delete it by hand. |
|
|
162
|
-
| `~/.paseo-bm/backups/<timestamp>/` | A copy of `config.json` taken before paseo-bm edits it (`paseo-config.json`), and copies of files paseo-bm deliberately overwrote. Kept until you prune them or remove them at uninstall. |
|
|
163
|
-
| `~/.paseo-bm/.lock` | Process lock held while `install` or `uninstall` runs. `doctor` never takes it. |
|
|
164
|
-
|
|
165
|
-
### Paseo config: `~/.paseo/config.json`
|
|
166
|
-
|
|
167
|
-
The location follows `--paseo-home <dir>`, `PASEO_HOME`, or the directory the Paseo daemon reports. A backup is taken first, and only these keys are touched:
|
|
168
|
-
|
|
169
|
-
| Key | What paseo-bm writes | When |
|
|
170
|
-
|---|---|---|
|
|
171
|
-
| `pluginsEnabled` | `true` | Only with the trust consent |
|
|
172
|
-
| `daemon.mcp.injectIntoAgents` | `true`; the previous state is recorded so uninstall can restore it | Only with the trust consent (the same single consent) |
|
|
173
|
-
| `agents.providers.bm-manager`, `agents.providers.bm-worker`, `agents.providers.bm-reviewer` | A derived provider `{ extends, label, paseoTools }` that reuses your existing provider login, with no command and no environment | Role registration |
|
|
174
|
-
| `daemon.agentProfiles[]` entries whose `id` starts with `bm-` (`bm-manager`, `bm-worker`, `bm-reviewer`) | The role's provider, model and name. Other profiles and their order are left untouched. | Role registration |
|
|
175
|
-
|
|
176
|
-
The `plugins` key is written **by Paseo** when paseo-bm runs `paseo plugin install`, not by paseo-bm. After uninstall Paseo leaves an empty `plugins: {}` behind; that key belongs to Paseo.
|
|
177
|
-
|
|
178
|
-
### Temporary files
|
|
179
|
-
|
|
180
|
-
Every write goes to a temporary file first and is then renamed into place. If a run is killed mid-write, a leftover file such as `~/.paseo/.config.json.<pid>.<hex>.tmp`, or the same pattern beside a file in the install home, may remain. It is safe to delete once no paseo-bm command is running.
|
|
181
|
-
|
|
182
|
-
### What paseo-bm never writes
|
|
183
|
-
|
|
184
|
-
- **Agent skills.** paseo-bm only reads the skills directories. Skills are installed and removed only by the third-party `skills` CLI, and only when you consent (see below).
|
|
185
|
-
- Credentials and provider logins: it never reads, stores or prints them.
|
|
186
|
-
- Plugins, providers or profiles that other tools or you created. Only `bm-*` entries are paseo-bm's.
|
|
187
|
-
- Git: neither the installer nor the agents commit or push.
|
|
188
|
-
- Existing agents in Paseo. They are yours, and uninstall leaves them in place.
|
|
189
|
-
|
|
190
|
-
## Agent skills
|
|
191
|
-
|
|
192
|
-
The Worker follows the **feature-workflow** process, which comes from a set of agent skills. The skills are not required for paseo-bm to run, but **without them the Worker's results are noticeably worse**, which is why paseo-bm checks for them.
|
|
193
|
-
|
|
194
|
-
- **Source:** https://github.com/cuongntr/agent-skills. This is **another author's repository** (`cuongntr`). paseo-bm does not bundle, maintain, fork or patch these skills; their content and availability are outside paseo-bm's control.
|
|
195
|
-
- **Required skills** (checked and warned about):
|
|
196
|
-
- `feature-workflow`
|
|
197
|
-
- `reviewing-plan`
|
|
198
|
-
- `converting-plan-to-beads`
|
|
199
|
-
- `polishing-beads`
|
|
200
|
-
- `implementing-beads`
|
|
201
|
-
- **Optional skills** (suggested only, never warned about): `architecture-premise-audit` and `authoring-workspace-protocol`.
|
|
202
|
-
- **Where paseo-bm looks** (read-only):
|
|
203
|
-
- the shared `~/.agents/skills`;
|
|
204
|
-
- Claude Code's `~/.claude/skills` (follows `--claude-home` or `CLAUDE_CONFIG_DIR`);
|
|
205
|
-
- Codex's `~/.codex/skills` (follows `--codex-home` or `CODEX_HOME`).
|
|
206
|
-
|
|
207
|
-
Symlinked skills count as present. Only skill names are compared, not versions.
|
|
208
|
-
|
|
209
|
-
### How paseo-bm helps
|
|
210
|
-
|
|
211
|
-
When required skills are missing, paseo-bm shows the exact command and asks before running it. Without a terminal, it runs the command only with `--install-skills`. The target agents come from `--skills-agents`, which defaults to `claude,codex`. `claude` is passed to the skills CLI as `claude-code`, the name that CLI uses. With the defaults, the command is:
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
npx -y skills add cuongntr/agent-skills -g -a claude-code codex -s feature-workflow reviewing-plan converting-plan-to-beads polishing-beads implementing-beads -y
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
That is also the **equivalent manual install command**: run it yourself if you prefer not to let paseo-bm run it.
|
|
218
|
-
|
|
219
|
-
Before you run it, note the following:
|
|
220
|
-
|
|
221
|
-
- **Skills are installed as symlinks** (the skills CLI's default mode), so all your agents share **one copy** of each skill. Updating or removing that copy affects every agent that uses it.
|
|
222
|
-
- **The `skills` CLI is a third-party tool with its own data collection.** paseo-bm has no telemetry, but that promise does not cover the `skills` CLI.
|
|
223
|
-
- A skills failure, a timeout (300 seconds) or a missing network never blocks the plugin install and never changes the exit code. You get a warning and the manual command.
|
|
224
|
-
|
|
225
|
-
### Removing skills
|
|
226
|
-
|
|
227
|
-
paseo-bm never removes skills, and `uninstall` does not touch them. Remove them with the `skills` CLI itself; run `npx skills --help` to see its removal command.
|
|
228
|
-
|
|
229
|
-
## Checking health: `doctor`
|
|
230
|
-
|
|
231
|
-
```bash
|
|
232
|
-
npx paseo-bm doctor
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
`doctor` is **read-only**:
|
|
236
|
-
|
|
237
|
-
- it writes nothing and takes no lock;
|
|
238
|
-
- it does not touch the network and never runs the `skills` CLI;
|
|
239
|
-
- the only Paseo commands it calls are the read-only `paseo daemon status` and `paseo plugin ls`.
|
|
240
|
-
|
|
241
|
-
It reports each check with a remediation:
|
|
242
|
-
|
|
243
|
-
| Area | Check ids |
|
|
244
|
-
|---|---|
|
|
245
|
-
| Paseo | `paseo-daemon`, `paseo-version` |
|
|
246
|
-
| Install record | `install-record`, `install-version` |
|
|
247
|
-
| Payload files | `files-missing`, `files-modified` |
|
|
248
|
-
| Plugin | `plugin-registered`, `plugin-status`, `plugin-path` |
|
|
249
|
-
| Consent switches | `plugins-enabled`, `agent-tools` |
|
|
250
|
-
| Roles | `role-bm-manager`, `role-bm-worker`, `role-bm-reviewer` |
|
|
251
|
-
| Housekeeping | `payload-versions`, `backups` |
|
|
252
|
-
| Warnings only | `beads-cli`, the per-agent skills checks, provider login state |
|
|
253
|
-
|
|
254
|
-
Exit codes:
|
|
255
|
-
|
|
256
|
-
- `0`: healthy;
|
|
257
|
-
- `1`: drift in what paseo-bm owns;
|
|
258
|
-
- `2`: misuse.
|
|
259
|
-
|
|
260
|
-
Warnings about skills, the beads CLI or provider logins never change the exit code. After an uninstall, `doctor` reports that paseo-bm is not installed.
|
|
261
|
-
|
|
262
|
-
## Updating
|
|
263
|
-
|
|
264
|
-
Run the installer again with the newer version, for example `npx paseo-bm@latest` (or `npx paseo-bm@next` for prereleases):
|
|
265
|
-
|
|
266
|
-
- **New version.** The payload is copied into a new `~/.paseo-bm/plugin/<new version>/`. Because Paseo 0.8 cannot re-point a directory plugin, paseo-bm runs `paseo plugin remove paseo-bm` and then `paseo plugin install <new dir>`. The plugin is absent for a few seconds in between. If the new version fails to register or load, paseo-bm reinstalls the previous directory, keeps the record on the old version, and exits `7` with Paseo's own error message. Older versions stay on disk until `--prune`.
|
|
267
|
-
- **Same version.**
|
|
268
|
-
- Nothing to change: nothing is asked, every action is reported as skipped, and the exit code is `0`.
|
|
269
|
-
- Files repaired or changed in the active plugin directory: paseo-bm **reloads the plugin automatically** and waits for `running`.
|
|
270
|
-
- **Files you edited by hand** are never overwritten silently. On a terminal you are asked, and a backup is taken before overwriting. Without a terminal they are kept unless you pass `--force`.
|
|
271
|
-
- **Downgrade** (older over newer) needs an explicit answer on a terminal.
|
|
272
|
-
- **Role changes:** `npx paseo-bm install --reconfigure` asks the role questions again.
|
|
273
|
-
- **Clean up:** `npx paseo-bm install --apply --prune` removes old payload versions and backups. It never removes the version in use or files you edited, and it always **keeps the newest Paseo config backup** as a manual-recovery copy.
|
|
274
|
-
|
|
275
|
-
paseo-bm never restarts or stops the Paseo daemon.
|
|
276
|
-
|
|
277
|
-
## Uninstalling
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
npx paseo-bm uninstall # preview only
|
|
281
|
-
npx paseo-bm uninstall --apply # remove, after confirmation
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
Uninstall removes **only what `install.json` says paseo-bm owns**:
|
|
285
|
-
|
|
286
|
-
- it unregisters the `paseo-bm` plugin;
|
|
287
|
-
- it deletes the `bm-*` providers and profiles, and any config container paseo-bm created that is now empty;
|
|
288
|
-
- it puts `daemon.mcp.injectIntoAgents` back to its recorded previous state if paseo-bm changed it;
|
|
289
|
-
- it deletes the payload.
|
|
290
|
-
|
|
291
|
-
Questions you are asked, all defaulting to No:
|
|
292
|
-
|
|
293
|
-
1. `Uninstall paseo-bm as shown above?` (skipped with `--yes`)
|
|
294
|
-
2. `paseo-bm turned Paseo plugins on and no other plugin is installed. Turn plugins off again?` This is only asked when that is true.
|
|
295
|
-
3. `Also remove paseo-bm's backups? This cannot be undone.`
|
|
296
|
-
|
|
297
|
-
**Questions 2 and 3 are interactive-only.** Without a terminal, plugins stay enabled and backups are kept. To remove everything paseo-bm created, run uninstall in a terminal.
|
|
298
|
-
|
|
299
|
-
What stays, on purpose:
|
|
300
|
-
|
|
301
|
-
- **Files you edited by hand** are kept and listed. `--force` deletes them too, after copying them into a backup.
|
|
302
|
-
- **Backups**, unless you chose to remove them.
|
|
303
|
-
- **`install.json`, when the Paseo daemon is not running.** Files are removed, but the Paseo side cannot be undone without the daemon. Run `uninstall --apply` again once Paseo is running.
|
|
304
|
-
- **Agent skills**: see [Removing skills](#removing-skills).
|
|
305
|
-
- **Beads Manager, Worker and Reviewer agents** already in Paseo. Archive or delete them yourself in Paseo.
|
|
306
|
-
- The empty `plugins: {}` key that Paseo leaves in `config.json`.
|
|
307
|
-
|
|
308
|
-
`--restore-backups` copies backed-up **payload files** back before removing, and they are kept as your files. It **never restores the whole `config.json`**: that would discard every change made since the install. Only the keys paseo-bm owns are undone. If you need an older copy of the config, the backups under `~/.paseo-bm/backups/` are there for manual recovery.
|
|
309
|
-
|
|
310
|
-
## Command reference
|
|
311
|
-
|
|
312
|
-
```text
|
|
313
|
-
npx paseo-bm [command] [options]
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
| Command | Meaning |
|
|
317
|
-
|---|---|
|
|
318
|
-
| *(none)* | The install wizard on a terminal. Without a terminal, prints a preview and writes nothing. |
|
|
319
|
-
| `install` | Install or update. Without a terminal and without `--apply`, only previews. |
|
|
320
|
-
| `doctor` | Read-only health check |
|
|
321
|
-
| `uninstall` | Remove what paseo-bm owns. Only previews without `--apply`. |
|
|
322
|
-
|
|
323
|
-
| Option | Applies to | Meaning |
|
|
324
|
-
|---|---|---|
|
|
325
|
-
| `--apply` | install, uninstall | Actually write; without it the command only previews |
|
|
326
|
-
| `--yes` | install, uninstall | Skip the apply confirmation; never implies consent to any trust boundary |
|
|
327
|
-
| `--enable-plugins` | install | Consent to both halves of one trust boundary: enable `pluginsEnabled` and grant Paseo tools to agents |
|
|
328
|
-
| `--install-skills` | install | Consent to running the third-party skills CLI |
|
|
329
|
-
| `--skills-agents <list>` | install, doctor | Target agents for the skills CLI (default `claude,codex`) |
|
|
330
|
-
| `--role <role>=<provider>/<model>` | install | Pick the tool for a role; repeatable |
|
|
331
|
-
| `--reconfigure` | install | Ask the full role configuration again even when it already exists |
|
|
332
|
-
| `--skip-skills-check` | install, doctor | Skip the skills step entirely |
|
|
333
|
-
| `--force` | install, uninstall | Install: overwrite user-modified files. Uninstall: delete them too |
|
|
334
|
-
| `--ask-skills-again` | install | Clear the remembered "do not ask again" answer for the skills step |
|
|
335
|
-
| `--restore-backups` | uninstall | Restore backups before removing (payload files only) |
|
|
336
|
-
| `--prune` | install | Clean up old payloads and backups; only on request |
|
|
337
|
-
| `--home <dir>` | all | paseo-bm install home (env `PASEO_BM_HOME`) |
|
|
338
|
-
| `--paseo-home <dir>` | all | Paseo home directory (env `PASEO_HOME`) |
|
|
339
|
-
| `--claude-home <dir>` | all | Claude Code config directory used when detecting skills (env `CLAUDE_CONFIG_DIR`) |
|
|
340
|
-
| `--codex-home <dir>` | all | Codex config directory used when detecting skills (env `CODEX_HOME`) |
|
|
341
|
-
| `--json` | all | Emit exactly one JSON document on stdout |
|
|
342
|
-
| `--verbose` | all | Print more detail about each step |
|
|
343
|
-
| `-h`, `--help` | | Show help |
|
|
344
|
-
| `-v`, `--version` | | Print the version and exit |
|
|
345
|
-
|
|
346
|
-
Precedence: flag, then environment variable, then default. `npx paseo-bm <command> --help` shows the options for one command.
|
|
347
|
-
|
|
348
|
-
## Exit codes and JSON output
|
|
349
|
-
|
|
350
|
-
| Code | Meaning |
|
|
351
|
-
|---|---|
|
|
352
|
-
| `0` | success, an intentional preview, or a healthy doctor |
|
|
353
|
-
| `1` | doctor found drift in what paseo-bm owns |
|
|
354
|
-
| `2` | misuse of a command or flag |
|
|
355
|
-
| `3` | environment precondition failed; nothing was written |
|
|
356
|
-
| `4` | installed, but a trust boundary was not consented to |
|
|
357
|
-
| `5` | stopped on a conflict that needs a human decision |
|
|
358
|
-
| `6` | no terminal and no --apply; preview printed, nothing written |
|
|
359
|
-
| `7` | files installed, but Paseo could not install or load the plugin |
|
|
360
|
-
|
|
361
|
-
Exit codes `0` and `6` are different on purpose: `6` means a script forgot `--apply`, so nothing happened. Warnings, such as missing skills, a missing beads CLI or a provider that is not logged in, never change the exit code.
|
|
362
|
-
|
|
363
|
-
With `--json`, stdout carries exactly one JSON document, and output from child processes goes to stderr. The document contains:
|
|
364
|
-
|
|
365
|
-
- `schemaVersion`, `command` and `mode` (`preview` or `applied`);
|
|
366
|
-
- the versions;
|
|
367
|
-
- the `actions` (`checks` for `doctor`);
|
|
368
|
-
- `roles`, `skills` and `warnings`;
|
|
369
|
-
- a `result`.
|
|
370
|
-
|
|
371
|
-
A failed run with a registered error code adds `result.error`:
|
|
372
|
-
|
|
373
|
-
```json
|
|
374
|
-
{
|
|
375
|
-
"result": {
|
|
376
|
-
"exitCode": 3,
|
|
377
|
-
"pluginState": null,
|
|
378
|
-
"error": { "code": "E_TARGET_NOT_WRITABLE", "message": "…" }
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
`result.error` is present **only** when the command failed, so `"error" in result` tells a script whether it failed. Error codes (`E_…`) and warning codes (`W_…`) are stable: within a major version codes are only added, never renamed or given a new meaning.
|
|
384
|
-
|
|
385
|
-
## Troubleshooting
|
|
386
|
-
|
|
387
|
-
Start with `npx paseo-bm doctor` (add `--verbose` for detail). Every error prints a remediation.
|
|
388
|
-
|
|
389
|
-
**The plugin is not running, or Beads Manager does not appear in Paseo**
|
|
390
|
-
|
|
391
|
-
- Run `paseo plugin logs paseo-bm` to see Paseo's reason.
|
|
392
|
-
- Run `npx paseo-bm doctor`:
|
|
393
|
-
- `plugins-enabled` or `agent-tools` not ok means the trust consent was not given. Run `npx paseo-bm install --apply --enable-plugins`.
|
|
394
|
-
- `plugin-path` or `install-version` in error means Paseo is loading a different version than the one recorded. Run `npx paseo-bm install --apply` again.
|
|
395
|
-
- Check a plugin's `status` (`running` or `disabled`) in `paseo plugin ls`, not its `enabled` field.
|
|
396
|
-
|
|
397
|
-
**`E_PLUGIN_LOAD_FAILED` (exit 7)**
|
|
398
|
-
|
|
399
|
-
paseo-bm copied its files, but Paseo could not install or load the plugin. The files are kept. Run `paseo plugin logs paseo-bm`, fix the cause, then run `npx paseo-bm install --apply` again. During an update, the message also says whether the previous version was restored.
|
|
400
|
-
|
|
401
|
-
**The Paseo daemon is not running: `E_DAEMON_UNREACHABLE`, `E_PASEO_CLI_MISSING` or `E_VERSION_MISMATCH` (exit 3)**
|
|
402
|
-
|
|
403
|
-
- Open the Paseo app so its daemon is running.
|
|
404
|
-
- Make sure `paseo --version` works in the same shell.
|
|
405
|
-
- Upgrade Paseo so the CLI and the daemon are both 0.8.0 or newer and report the same version.
|
|
406
|
-
|
|
407
|
-
Nothing has been written at this point. Do not restart or stop the daemon while agents are running: that can kill them.
|
|
408
|
-
|
|
409
|
-
**Missing skills: `W_SKILLS_MISSING` or `W_SKILLS_ASSIST_FAILED`**
|
|
410
|
-
|
|
411
|
-
Run the printed `skills add` command yourself, or re-run `npx paseo-bm install --apply --install-skills`. If you declined earlier and want to be asked again, add `--ask-skills-again`. Then run `doctor`. Skills problems never block the install.
|
|
412
|
-
|
|
413
|
-
**Conflicts: `E_CONFLICT` (exit 5)**
|
|
414
|
-
|
|
415
|
-
Something paseo-bm does not own is in the way, or a file you edited would be overwritten. Inspect the reported target:
|
|
416
|
-
|
|
417
|
-
- move a foreign file aside yourself, or
|
|
418
|
-
- re-run with `--force` to overwrite files recorded as user-modified. A backup is always taken first.
|
|
419
|
-
|
|
420
|
-
Exit `5` also covers a downgrade attempted without a terminal.
|
|
421
|
-
|
|
422
|
-
**Other errors that exit 3 before writing**
|
|
423
|
-
|
|
424
|
-
| Code | What to do |
|
|
425
|
-
|---|---|
|
|
426
|
-
| `E_LOCKED` | Another install or uninstall holds `~/.paseo-bm/.lock`. Wait for it to finish; delete `.lock` only if you are sure no run is active. |
|
|
427
|
-
| `E_CONFIG_CONCURRENT_WRITE` | Something else changed `config.json` during the write, for example Paseo's settings screen or another run. Close it and retry. |
|
|
428
|
-
| `E_TARGET_NOT_WRITABLE`, `E_UNSAFE_INSTALL_HOME`, `E_SYMLINK_IN_PATH`, `E_PATH_ESCAPE` | Point `--home` at a dedicated directory you own, such as `~/.paseo-bm`, with no symlinks in the path. |
|
|
429
|
-
| `E_PROVIDER_UNAVAILABLE` | The provider or model given for a role does not exist in Paseo. Pick an existing pair with `--role`. |
|
|
430
|
-
| `E_RECORD_SCHEMA_TOO_NEW` | `install.json` was written by a newer paseo-bm. Upgrade with `npx paseo-bm@latest`. Do not edit the record. |
|
|
431
|
-
|
|
432
|
-
**Roles do not work, or the provider is not logged in: `W_PROVIDER_NOT_LOGGED_IN`**
|
|
433
|
-
|
|
434
|
-
- Run the provider's own login command. paseo-bm never handles credentials.
|
|
435
|
-
- Run `doctor` and check `role-bm-manager`, `role-bm-worker` and `role-bm-reviewer`.
|
|
436
|
-
- Change a role's provider or model with `npx paseo-bm install --reconfigure`.
|
|
437
|
-
|
|
438
|
-
If the Manager says it cannot create a Worker, check that `agent-tools` is ok in `doctor` and that the Worker's provider is logged in.
|
|
439
|
-
|
|
440
|
-
**The Worker cannot create or update beads**
|
|
441
|
-
|
|
442
|
-
Install the beads CLI (`br` or `bd`) and make sure it is on the `PATH` that Paseo's agents use.
|
|
443
|
-
|
|
444
|
-
**A script installed without asking**
|
|
445
|
-
|
|
446
|
-
Piping output (`| tee`) or passing `--json` removes the terminal, so no question is asked. Without a terminal, consent only comes from `--enable-plugins` and `--install-skills`.
|
|
447
|
-
|
|
448
|
-
## Not available yet
|
|
449
|
-
|
|
450
|
-
The following are planned for later phases and are **not** in this release:
|
|
451
|
-
|
|
452
|
-
- a separate `configure` command (use `install --reconfigure`);
|
|
453
|
-
- an in-Paseo skills reminder;
|
|
454
|
-
- suggested extra agent profiles;
|
|
455
|
-
- a limit on parallel Workers;
|
|
456
|
-
- a history of past requests;
|
|
457
|
-
- a bead progress dashboard in Paseo;
|
|
458
|
-
- remote daemons;
|
|
459
|
-
- Windows support;
|
|
460
|
-
- a hard, code-enforced review budget.
|
|
37
|
+
- **Guided tour:** [paseo-bm.erai.pro](https://paseo-bm.erai.pro)
|
|
38
|
+
- **Full reference:** [GUIDE.md](GUIDE.md) — requirements, install options, working with the agents, the screens, everything paseo-bm writes, agent skills, `doctor`, updating, uninstalling, commands, exit codes and troubleshooting.
|
|
461
39
|
|
|
462
40
|
## License
|
|
463
41
|
|