Add use-case recipes and smoke packs
Turn the stable workspace surface into five documented, runnable stories with a shared guest-backed smoke runner, new docs/use-cases recipes, and Make targets for cold-start validation, repro/fix loops, parallel workspaces, untrusted inspection, and review/eval workflows. Bump the package and catalog surface to 3.6.0, update the main docs to point users from the stable workspace walkthrough into the recipe index and smoke packs, and mark the 3.6.0 roadmap milestone done. Fix a regression uncovered by the real parallel-workspaces smoke: workspace_file_read must not bump last_activity_at. Verified with uv lock, UV_CACHE_DIR=.uv-cache make check, UV_CACHE_DIR=.uv-cache make dist-check, and USE_CASE_ENVIRONMENT=debian:12 UV_CACHE_DIR=.uv-cache make smoke-use-cases.
This commit is contained in:
parent
21a88312b6
commit
894706af50
22 changed files with 1310 additions and 16 deletions
42
docs/use-cases/repro-fix-loop.md
Normal file
42
docs/use-cases/repro-fix-loop.md
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# Repro Plus Fix Loop
|
||||
|
||||
Recommended profile: `workspace-core`
|
||||
|
||||
Smoke target:
|
||||
|
||||
```bash
|
||||
make smoke-repro-fix-loop
|
||||
```
|
||||
|
||||
Use this flow when the agent has to reproduce a bug, patch files without shell
|
||||
quoting tricks, rerun the failing command, diff the result, export the fix, and
|
||||
reset back to baseline.
|
||||
|
||||
Canonical SDK flow:
|
||||
|
||||
```python
|
||||
from pyro_mcp import Pyro
|
||||
|
||||
pyro = Pyro()
|
||||
created = pyro.create_workspace(environment="debian:12", seed_path="./broken-repro")
|
||||
workspace_id = str(created["workspace_id"])
|
||||
|
||||
pyro.exec_workspace(workspace_id, command="sh check.sh")
|
||||
pyro.read_workspace_file(workspace_id, "message.txt")
|
||||
pyro.apply_workspace_patch(
|
||||
workspace_id,
|
||||
patch="--- a/message.txt\n+++ b/message.txt\n@@ -1 +1 @@\n-broken\n+fixed\n",
|
||||
)
|
||||
pyro.exec_workspace(workspace_id, command="sh check.sh")
|
||||
pyro.diff_workspace(workspace_id)
|
||||
pyro.export_workspace(workspace_id, "message.txt", output_path="./message.txt")
|
||||
pyro.reset_workspace(workspace_id)
|
||||
pyro.delete_workspace(workspace_id)
|
||||
```
|
||||
|
||||
Canonical MCP/chat example:
|
||||
|
||||
- [examples/openai_responses_workspace_core.py](../../examples/openai_responses_workspace_core.py)
|
||||
|
||||
This is the main `workspace-core` story: model-native file ops, repeatable exec,
|
||||
structured diff, explicit export, and reset-over-repair.
|
||||
Loading…
Add table
Add a link
Reference in a new issue