Files
webstudio/fixtures
Oleg Isonen 3304819d7e feat: Add complete, client-compatible MCP output schemas (#5882)
## What changed\n\n- Define concrete output schemas for every public
runtime operation.\n- Expose output schemas through generated runtime
contracts and MCP tool discovery.\n- Validate runtime results against
their declared schemas, including mutation result envelopes.\n- Add
output contracts for project-session status, refresh, reset, Collection
insertion, and generated-preview tools.\n- Make every advertised MCP
output schema explicitly object-shaped for strict clients.\n- Keep
generated schema definitions at the correct root so local references
resolve during tool discovery.\n- Report the correct session operation
metadata for refresh and reset.\n- Preserve local workspace package
resolution when the local CLI builds a generated React Router
preview.\n\n## Why\n\nAgents could discover input requirements, but
several tools did not describe their returned data. Strict MCP clients
could also reject the complete tool catalog during reconnect because
output schemas were not consistently object-shaped or contained
unresolved local references.\n\n## User impact\n\n- Agents can plan
calls from complete input and output contracts.\n- MCP clients can fetch
the full Webstudio tool catalog without schema-validation failures.\n-
Agents can reliably parse and validate command results.\n- Local
generated previews continue to work for visual verification.\n\n##
Validation\n\n- Every public runtime operation has an output schema.\n-
Every advertised MCP output schema is object-shaped and has resolvable
local references.\n- A real stdio MCP client connected through the local
CLI and fetched 154 tools, including 119 valid output schemas.\n-
Runtime output contracts validate representative query and mutation
results.\n- A fresh subagent refreshed a real project session, built and
started the generated site, captured the target route with HTTP 200,
checked preview status, and stopped the server.\n- Focused project-build
tests, project-build and CLI typechecks, lint, formatting, and
generated-doc checks passed.\n
2026-07-15 12:13:14 +02:00
..

Webstudio Fixtures

Fixtures are test projects that ensure the CLI and build process work correctly across different deployment targets.

Updating Fixtures After Changes

# From repository root - updates all fixtures
pnpm fixtures

This command will:

  1. Link all fixtures to their respective projects
  2. Sync the latest data from the development environment
  3. Build all fixtures with the latest code

Working with Individual Fixtures

# Go to fixture folder
cd fixtures/webstudio-features

# Link to project
pnpm fixtures:link

# Sync latest data
pnpm fixtures:sync

# Build fixture
pnpm fixtures:build

# Start it
pnpm run dev

Adding Assets to Fixtures

To add a new asset (image, video, audio, etc.) to a fixture:

  1. Publish to staging

    • Make your changes in the builder
    • Publish to the staging environment
  2. Get the build ID from CI

    • After publishing, check the CI logs
    • Find the build ID that was created
  3. Update the fixture's build ID

    • Edit fixtures/[fixture-name]/package.json
    • Update the --buildId parameter in the fixtures:sync script
    "fixtures:sync": "pnpm cli sync --buildId NEW_BUILD_ID_HERE && pnpm oxfmt ./.webstudio/"
    
  4. Sync with the correct environment

    # Go to fixture folder
    cd fixtures/webstudio-features
    
    # Sync from staging environment (replace with your branch)
    BUILDER_HOST=fix-assets.staging.webstudio.is pnpm run fixtures
    
  5. Fix the origin URL

    • After syncing, edit .webstudio/data.json
    • Change the origin back to:
    "origin": "https://main.development.webstudio.is"
    
    • This is necessary because sync changes it to the current branch
  6. Commit the changes

    git add fixtures/
    git commit -m "chore: update fixtures with new assets"
    git push