paseo-room 0.1.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/LICENSE +21 -0
- package/README.md +167 -0
- package/dist/index.js +1114 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Invoker
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# paseo-room
|
|
2
|
+
|
|
3
|
+
One CLI that seats a **Supervisor → Lead → Peer** room on your local [Paseo](https://paseo.sh) daemon,
|
|
4
|
+
using the Codex and/or Claude Code you already have installed.
|
|
5
|
+
|
|
6
|
+
It does three things:
|
|
7
|
+
|
|
8
|
+
1. Reads your existing Codex / Claude Code configuration.
|
|
9
|
+
2. Writes one isolated role home per seat under `~/.paseo-room`, sharing your login, skills and plugins by symlink.
|
|
10
|
+
3. Registers those role homes with your running Paseo daemon as providers — room tools on for Supervisor and Lead, off for Peer.
|
|
11
|
+
|
|
12
|
+
Everything it creates lives in `$HOME`, under one directory it owns outright. It reads
|
|
13
|
+
`~/.codex` and `~/.claude`; it never writes to them.
|
|
14
|
+
|
|
15
|
+
## Install and run
|
|
16
|
+
|
|
17
|
+
Nothing to install — run it with `npx`:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx paseo-room # guided setup (interactive terminal)
|
|
21
|
+
npx paseo-room setup # dry run: show exactly what would change
|
|
22
|
+
npx paseo-room setup --apply # do it (Codex seats)
|
|
23
|
+
npx paseo-room setup --agent codex --agent claude --apply
|
|
24
|
+
npx paseo-room verify # is the room still intact and compatible?
|
|
25
|
+
npx paseo-room remove --apply # delete ~/.paseo-room and its providers
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`setup` and `remove` are dry runs unless you pass `--apply`. Running with no arguments in a
|
|
29
|
+
terminal starts a short wizard: pick an action, pick the agents, review the plan, confirm.
|
|
30
|
+
|
|
31
|
+
### Options
|
|
32
|
+
|
|
33
|
+
| Flag | Default | Purpose |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| `--agent <codex\|claude>` | `codex` | Which coding agent to seat. Repeat the flag for both. |
|
|
36
|
+
| `--apply` | off | Actually write the changes. |
|
|
37
|
+
| `--json` | off | One machine-readable document instead of text. |
|
|
38
|
+
| `--room-home <path>` | `~/.paseo-room` | Where role homes are written. |
|
|
39
|
+
| `--codex-home <path>` | `~/.codex` | Source Codex configuration. |
|
|
40
|
+
| `--claude-home <path>` | `~/.claude` | Source Claude Code configuration. |
|
|
41
|
+
| `--codex-bin`, `--claude-bin`, `--paseo-bin` | found on `PATH` | Executable overrides. |
|
|
42
|
+
|
|
43
|
+
Environment equivalents: `PASEO_ROOM_HOME`, `CODEX_HOME`, `CLAUDE_CONFIG_DIR`, `PASEO_HOME`,
|
|
44
|
+
`CODEX_BIN`, `CLAUDE_BIN`, `PASEO_BIN`. Flags win over the environment.
|
|
45
|
+
|
|
46
|
+
`PASEO_PASSWORD` is used if your daemon requires one, and is redacted from all output.
|
|
47
|
+
|
|
48
|
+
Exit codes: `0` success, `1` a check failed, `2` bad usage.
|
|
49
|
+
|
|
50
|
+
## Requirements
|
|
51
|
+
|
|
52
|
+
- Node 22 or newer, macOS or Linux.
|
|
53
|
+
- A running Paseo daemon, version **0.8.0-beta.1 or newer**, with CLI and daemon on the same
|
|
54
|
+
version. `paseo-room` checks this before touching anything, and never installs or upgrades
|
|
55
|
+
Paseo for you.
|
|
56
|
+
- An initialised Codex home (`~/.codex/config.toml`) and/or Claude Code home (`~/.claude`).
|
|
57
|
+
Log in to those tools yourself first; the room shares that login, it does not create one.
|
|
58
|
+
|
|
59
|
+
## What gets created
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
~/.paseo-room/
|
|
63
|
+
room.json # what this CLI created; verify and remove read it
|
|
64
|
+
room/workspace-protocol.md # operator reference for a repo's docs/WORKSPACE_PROTOCOL.md
|
|
65
|
+
roles/codex/<role>/
|
|
66
|
+
config.toml # your config.toml + the room's overrides
|
|
67
|
+
role-instructions.md # readable copy of what this seat was told
|
|
68
|
+
model-catalog.json # your catalog with native multi-agent metadata removed
|
|
69
|
+
auth.json, AGENTS.md, skills, plugins, hooks.json → symlinks into ~/.codex
|
|
70
|
+
roles/claude/<role>/
|
|
71
|
+
CLAUDE.md # role instructions, as user memory
|
|
72
|
+
settings.json # your settings.json + PASEO_ROOM_ROLE
|
|
73
|
+
.claude.json # seeded once from yours, then owned by Claude
|
|
74
|
+
.credentials.json, skills, plugins, commands, hooks → symlinks into ~/.claude
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Each seat keeps its own sessions, history and projects inside its role home, so three seats
|
|
78
|
+
never share conversation state — but they do share one login and one set of skills.
|
|
79
|
+
|
|
80
|
+
## What the room changes
|
|
81
|
+
|
|
82
|
+
For Codex, the generated `config.toml` is a copy of yours with only these keys overridden:
|
|
83
|
+
|
|
84
|
+
| Key | Value | Why |
|
|
85
|
+
|---|---|---|
|
|
86
|
+
| `sandbox_mode` | `danger-full-access` | A seat that stops to ask for permission cannot be driven headless. |
|
|
87
|
+
| `approval_policy` | `never` | Same. |
|
|
88
|
+
| `developer_instructions` | the role contract | This is the room's whole instruction payload. |
|
|
89
|
+
| `model_catalog_json` | generated catalog | Strips `multi_agent_version` so the seat is not offered native collaboration. Skipped, with a warning, if your Codex cannot produce a catalog. |
|
|
90
|
+
| `[agents].enabled` | `false` | Paseo owns agent lifecycle. |
|
|
91
|
+
| `features.multi_agent`, `features.multi_agent_v2` | `false` | Same, at the feature-flag level. |
|
|
92
|
+
|
|
93
|
+
If your config has an active `profile`, the same sandbox and approval overrides are written
|
|
94
|
+
into that profile too, because a profile outranks the top-level keys. Your model, reasoning
|
|
95
|
+
effort, MCP servers, trusted projects and every other key are copied through untouched.
|
|
96
|
+
|
|
97
|
+
**The room never replaces an agent's base prompt.** Codex's `model_instructions_file` and
|
|
98
|
+
Claude's `--system-prompt` both *replace* the vendor's system prompt; using them would mean
|
|
99
|
+
vendoring a full copy of that prompt and re-vendoring it on every agent release. The role
|
|
100
|
+
contract is additive instead: `developer_instructions` for Codex, `CLAUDE.md` for Claude.
|
|
101
|
+
|
|
102
|
+
Each seat is also pinned at the Paseo provider level, because a provider entry outranks the
|
|
103
|
+
agent's own configuration:
|
|
104
|
+
|
|
105
|
+
| Pin | Applies to | Why |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `params: {sandbox_mode, approval_policy}` | Codex | Without it Paseo sends its own mode preset (default `auto-review`) to the Codex app-server, and that outranks the generated `config.toml`. |
|
|
108
|
+
| `disallowedTools: ["Task"]` | Claude | Claude's own subagents would be a second control plane. This is the counterpart of Codex's `[agents].enabled = false`. |
|
|
109
|
+
| `paseoTools: {enabled}` | both | Room tools for Supervisor and Lead, never for Peer. |
|
|
110
|
+
|
|
111
|
+
The Claude permission mode is deliberately **not** set here. Paseo passes `--permission-mode`
|
|
112
|
+
per agent (`plan`, `default`, `acceptEdits`, `auto`, `bypassPermissions`; default `auto`), and
|
|
113
|
+
a command-line flag beats anything in `settings.json`. Choose the mode in Paseo.
|
|
114
|
+
|
|
115
|
+
## Keeping the room current
|
|
116
|
+
|
|
117
|
+
Role homes are generated once, at `setup` time. After you edit `~/.codex/config.toml` or
|
|
118
|
+
`~/.claude/settings.json`, run `setup --apply` again to fold the change into every seat.
|
|
119
|
+
`verify` reports the drift in the meantime, and re-running `setup` is always safe: it
|
|
120
|
+
rewrites only what differs.
|
|
121
|
+
|
|
122
|
+
Changing which agents you seat also cleans up: `setup --agent codex --apply` after having
|
|
123
|
+
seated both removes the Claude role homes and their providers, and says so in the plan.
|
|
124
|
+
|
|
125
|
+
`remove --apply` deletes `~/.paseo-room` and the providers it registered. It refuses to run
|
|
126
|
+
if `--room-home` points at a directory containing your home directory, and it leaves
|
|
127
|
+
unrelated Paseo providers alone.
|
|
128
|
+
|
|
129
|
+
## The role contract
|
|
130
|
+
|
|
131
|
+
The exact wording every seat reads lives in [`src/room/clauses.ts`](src/room/clauses.ts).
|
|
132
|
+
In short:
|
|
133
|
+
|
|
134
|
+
- **Supervisor** routes Human directives to Lead and observes. It does not edit project work,
|
|
135
|
+
run validation, or decide technical acceptance. Room tools: on.
|
|
136
|
+
- **Lead** owns framing, decomposition, routing, integration and technical acceptance. One
|
|
137
|
+
moving write scope has exactly one owner, and at most one Peer is writable at a time.
|
|
138
|
+
Room tools: on.
|
|
139
|
+
- **Peer** owns one bounded outcome, may challenge a failed premise with
|
|
140
|
+
`REOPEN_REQUEST` / `DEPENDENCY_REQUEST` / `BLOCKED`, hands back a reproducible candidate,
|
|
141
|
+
and never accepts its own difficult change. Room tools: off.
|
|
142
|
+
|
|
143
|
+
Human keeps product goals, priority, material cost, external effects and irreversible risk.
|
|
144
|
+
|
|
145
|
+
## Documentation
|
|
146
|
+
|
|
147
|
+
- [docs/orchestration-model.md](docs/orchestration-model.md) — the reference model this
|
|
148
|
+
tool implements: roles, authority, instruction layers, invariants, anti-patterns and
|
|
149
|
+
operating checklists. Tool-agnostic; useful on its own.
|
|
150
|
+
- [docs/design.md](docs/design.md) — how and why this tool implements that model, and what
|
|
151
|
+
it deliberately does not do. Read this before changing an override.
|
|
152
|
+
- [AGENTS.md](AGENTS.md) — working rules for contributors and coding agents.
|
|
153
|
+
- [docs/product/paseo-room-prd.md](docs/product/paseo-room-prd.md) — the original PRD, kept
|
|
154
|
+
for history; the transactional-installer requirements in it were deliberately dropped.
|
|
155
|
+
|
|
156
|
+
## Development
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
npm run verify # typecheck, lint, test, build — the gate order
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Releases are published to npm from a GitHub Release; see
|
|
163
|
+
[AGENTS.md](AGENTS.md#releasing).
|
|
164
|
+
|
|
165
|
+
## License
|
|
166
|
+
|
|
167
|
+
[MIT](LICENSE) © Invoker
|