Add opinionated MCP modes for workspace workflows
Introduce explicit repro-fix, inspect, cold-start, and review-eval modes across the MCP server, CLI, and host helpers, with canonical mode-to-tool mappings, narrowed schemas, and mode-specific tool descriptions on top of the existing workspace runtime. Reposition the docs, host onramps, and use-case recipes so named modes are the primary user-facing startup story while the generic no-mode workspace-core path remains the escape hatch, and update the shared smoke runner to validate repro-fix and cold-start through mode-backed servers. Validation: UV_OFFLINE=1 UV_CACHE_DIR=.uv-cache uv run pytest --no-cov tests/test_api.py tests/test_server.py tests/test_host_helpers.py tests/test_public_contract.py tests/test_cli.py tests/test_workspace_use_case_smokes.py; UV_OFFLINE=1 UV_CACHE_DIR=.uv-cache make check; UV_OFFLINE=1 UV_CACHE_DIR=.uv-cache make dist-check; real guest-backed make smoke-repro-fix-loop smoke-cold-start-validation outside the sandbox.
This commit is contained in:
parent
dc86d84e96
commit
d0cf6d8f21
33 changed files with 1034 additions and 274 deletions
58
README.md
58
README.md
|
|
@ -30,7 +30,7 @@ SDK-first platform.
|
|||
- Troubleshooting: [docs/troubleshooting.md](docs/troubleshooting.md)
|
||||
- Stable workspace walkthrough GIF: [docs/assets/workspace-first-run.gif](docs/assets/workspace-first-run.gif)
|
||||
- Terminal walkthrough GIF: [docs/assets/first-run.gif](docs/assets/first-run.gif)
|
||||
- What's new in 4.3.0: [CHANGELOG.md#430](CHANGELOG.md#430)
|
||||
- What's new in 4.4.0: [CHANGELOG.md#440](CHANGELOG.md#440)
|
||||
- PyPI package: [pypi.org/project/pyro-mcp](https://pypi.org/project/pyro-mcp/)
|
||||
|
||||
## Who It's For
|
||||
|
|
@ -76,7 +76,7 @@ What success looks like:
|
|||
```bash
|
||||
Platform: linux-x86_64
|
||||
Runtime: PASS
|
||||
Catalog version: 4.3.0
|
||||
Catalog version: 4.4.0
|
||||
...
|
||||
[pull] phase=install environment=debian:12
|
||||
[pull] phase=ready environment=debian:12
|
||||
|
|
@ -95,13 +95,15 @@ for the guest image.
|
|||
|
||||
## Chat Host Quickstart
|
||||
|
||||
After the quickstart works, the intended next step is to connect a chat host.
|
||||
Use the helper flow first:
|
||||
After the quickstart works, the intended next step is to connect a chat host in
|
||||
one named mode. Use the helper flow first:
|
||||
|
||||
```bash
|
||||
uvx --from pyro-mcp pyro host connect claude-code
|
||||
uvx --from pyro-mcp pyro host connect codex
|
||||
uvx --from pyro-mcp pyro host print-config opencode
|
||||
uvx --from pyro-mcp pyro host connect codex --mode repro-fix
|
||||
uvx --from pyro-mcp pyro host connect codex --mode inspect
|
||||
uvx --from pyro-mcp pyro host connect claude-code --mode cold-start
|
||||
uvx --from pyro-mcp pyro host connect claude-code --mode review-eval
|
||||
uvx --from pyro-mcp pyro host print-config opencode --mode repro-fix
|
||||
```
|
||||
|
||||
If setup drifts or you want to inspect it first:
|
||||
|
|
@ -113,15 +115,28 @@ uvx --from pyro-mcp pyro host repair codex
|
|||
uvx --from pyro-mcp pyro host repair opencode
|
||||
```
|
||||
|
||||
Those helpers wrap the same `pyro mcp serve` entrypoint. From a repo root,
|
||||
bare `pyro mcp serve` starts `workspace-core`, auto-detects the current Git
|
||||
checkout, and lets the first `workspace_create` omit `seed_path`.
|
||||
Those helpers wrap the same `pyro mcp serve` entrypoint. Use a named mode when
|
||||
one workflow already matches the job. Fall back to the generic no-mode path
|
||||
when the mode feels too narrow.
|
||||
|
||||
Mode examples:
|
||||
|
||||
```bash
|
||||
uvx --from pyro-mcp pyro mcp serve --mode repro-fix
|
||||
uvx --from pyro-mcp pyro mcp serve --mode inspect
|
||||
uvx --from pyro-mcp pyro mcp serve --mode cold-start
|
||||
uvx --from pyro-mcp pyro mcp serve --mode review-eval
|
||||
```
|
||||
|
||||
Generic escape hatch:
|
||||
|
||||
```bash
|
||||
uvx --from pyro-mcp pyro mcp serve
|
||||
```
|
||||
|
||||
If the host does not preserve the server working directory, use:
|
||||
From a repo root, the generic path auto-detects the current Git checkout and
|
||||
lets the first `workspace_create` omit `seed_path`. If the host does not
|
||||
preserve the server working directory, use:
|
||||
|
||||
```bash
|
||||
uvx --from pyro-mcp pyro host connect codex --project-path /abs/path/to/repo
|
||||
|
|
@ -142,16 +157,16 @@ Copy-paste host-specific starts:
|
|||
- OpenCode: [examples/opencode_mcp_config.json](examples/opencode_mcp_config.json)
|
||||
- Generic MCP config: [examples/mcp_client_config.md](examples/mcp_client_config.md)
|
||||
|
||||
Claude Code:
|
||||
Claude Code cold-start or review-eval:
|
||||
|
||||
```bash
|
||||
claude mcp add pyro -- uvx --from pyro-mcp pyro mcp serve
|
||||
claude mcp add pyro -- uvx --from pyro-mcp pyro mcp serve --mode cold-start
|
||||
```
|
||||
|
||||
Codex:
|
||||
Codex repro-fix or inspect:
|
||||
|
||||
```bash
|
||||
codex mcp add pyro -- uvx --from pyro-mcp pyro mcp serve
|
||||
codex mcp add pyro -- uvx --from pyro-mcp pyro mcp serve --mode repro-fix
|
||||
```
|
||||
|
||||
OpenCode `opencode.json` snippet:
|
||||
|
|
@ -162,7 +177,7 @@ OpenCode `opencode.json` snippet:
|
|||
"pyro": {
|
||||
"type": "local",
|
||||
"enabled": true,
|
||||
"command": ["uvx", "--from", "pyro-mcp", "pyro", "mcp", "serve"]
|
||||
"command": ["uvx", "--from", "pyro-mcp", "pyro", "mcp", "serve", "--mode", "repro-fix"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -176,18 +191,19 @@ array.
|
|||
If `pyro-mcp` is already installed, replace `uvx --from pyro-mcp pyro` with
|
||||
`pyro` in the same command or config shape.
|
||||
|
||||
Use `--profile workspace-full` only when the chat truly needs shells, services,
|
||||
Use the generic no-mode path when the named mode feels too narrow. Move to
|
||||
`--profile workspace-full` only when the chat truly needs shells, services,
|
||||
snapshots, secrets, network policy, or disk tools.
|
||||
|
||||
## Zero To Hero
|
||||
|
||||
1. Validate the host with `pyro doctor`.
|
||||
2. Pull `debian:12` and prove guest execution with `pyro run debian:12 -- git --version`.
|
||||
3. Connect Claude Code, Codex, or OpenCode with `pyro host connect ...` or
|
||||
`pyro host print-config opencode`, then fall back to raw `pyro mcp serve`
|
||||
with `--project-path` / `--repo-url` when cwd is not the source of truth.
|
||||
3. Connect Claude Code, Codex, or OpenCode with one named mode such as
|
||||
`pyro host connect codex --mode repro-fix`, then fall back to raw
|
||||
`pyro mcp serve --mode ...` or the generic no-mode path when needed.
|
||||
4. Start with one recipe from [docs/use-cases/README.md](docs/use-cases/README.md).
|
||||
`repro-fix-loop` is the shortest chat-first story.
|
||||
`repro-fix` is the shortest chat-first mode and story.
|
||||
5. Use `make smoke-use-cases` as the trustworthy guest-backed verification path
|
||||
for the advertised workflows.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue