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
|
|
@ -499,8 +499,15 @@ class _FakePyro:
|
|||
workspace.shells.pop(shell_id, None)
|
||||
return {"workspace_id": workspace_id, "shell_id": shell_id, "closed": True}
|
||||
|
||||
def create_server(self, *, profile: str, project_path: Path) -> Any:
|
||||
def create_server(
|
||||
self,
|
||||
*,
|
||||
profile: str = "workspace-core",
|
||||
mode: str | None = None,
|
||||
project_path: Path,
|
||||
) -> Any:
|
||||
assert profile == "workspace-core"
|
||||
assert mode in {"repro-fix", "cold-start"}
|
||||
seed_path = Path(project_path)
|
||||
outer = self
|
||||
|
||||
|
|
@ -554,7 +561,7 @@ def test_use_case_docs_and_targets_stay_aligned() -> None:
|
|||
recipe_text = (repo_root / recipe.doc_path).read_text(encoding="utf-8")
|
||||
assert recipe.smoke_target in index_text
|
||||
assert recipe.doc_path.rsplit("/", 1)[-1] in index_text
|
||||
assert recipe.profile in recipe_text
|
||||
assert recipe.mode in recipe_text
|
||||
assert recipe.smoke_target in recipe_text
|
||||
assert f"{recipe.smoke_target}:" in makefile_text
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue