Files
webstudio/packages/project-build/package.json
Oleg Isonen dde30ffb54 feat: Improve MCP authoring, compact output, and agent onboarding (#5883)
## Summary

This improves how agents discover, author, inspect, and verify Webstudio
projects while reducing unnecessary MCP context usage.

## What changed

- Adds an **Agents** section to Project Settings with ready-to-run setup
commands and client configuration for Claude Code, Codex, Cursor, and VS
Code.
- Makes large list and schema responses compact and paginated by
default, with **verbose** available when complete records or diagnostics
are needed.
- Applies consistent compact output to assets, instances, styles, design
tokens, CLI schemas, and project-session metadata.
- Returns actionable expression warnings for props, resources, and
Collection bindings, including unknown variables and risky render-time
mutation resources.
- Improves Collection expression guidance so agents can bind array items
with the correct scoped variables.
- Reports rendered audit outcomes explicitly as complete, partial,
confirmation-required, or failed.
- Expands runtime output schemas so MCP clients can validate responses
reliably.
- Strengthens the packaged CLI smoke workflow with a realistic
seven-page stdio MCP scenario.

## Architecture

- Consolidates `project-build` from 65 file-oriented entrypoints to 11
architecture-owned surfaces.
- Separates the core model, contracts, runtime authoring, transfer,
state, project sessions, MCP, visual tooling, persistence codecs, and
authenticated server services.
- Isolates Node-only JSX evaluation from browser-safe transfer utilities
and authenticated server modules.
- Keeps persistence codecs independent from authenticated database
services, preventing unrelated module initialization.
- Defines shared instance-path types once and reuses them across runtime
modules.
- Preserves Immer initialization through explicit package side-effect
metadata.
- Adds package tests that prevent a return to source-file entrypoints or
generic exposure of Node-only surfaces.

## Validation

- Full repository checks, tests, typechecks, generated-file checks, and
fixtures
- All 163 Builder test files and 2,141 tests
- All 71 project-build test files and 1,794 tests
- Lint and package-boundary validation
- Full packed CLI release smoke test, including install, preview, agent
setup, seven-page stdio MCP workflow, rendered audit, and structured
commands
2026-07-15 18:11:28 +02:00

108 lines
3.2 KiB
JSON

{
"name": "@webstudio-is/project-build",
"version": "0.0.0",
"description": "Webstudio Project Build",
"author": "Webstudio <github@webstudio.is>",
"homepage": "https://webstudio.is",
"license": "AGPL-3.0-or-later",
"private": true,
"type": "module",
"exports": {
".": {
"webstudio": "./src/index.ts",
"partykit": "./src/index.ts"
},
"./contracts": {
"webstudio": "./src/contracts.ts",
"import": "./src/contracts.ts",
"default": "./src/contracts.ts"
},
"./runtime": {
"webstudio": "./src/runtime.ts",
"import": "./src/runtime.ts",
"default": "./src/runtime.ts"
},
"./transfer": {
"webstudio": "./src/transfer.ts",
"import": "./src/transfer.ts",
"default": "./src/transfer.ts"
},
"./transfer/server": {
"webstudio": "./src/transfer.server.ts"
},
"./state": {
"webstudio": "./src/state.ts",
"import": "./src/state.ts",
"default": "./src/state.ts"
},
"./project-session": {
"webstudio": "./src/project-session.ts",
"import": "./src/project-session.ts",
"default": "./src/project-session.ts"
},
"./mcp": {
"webstudio": "./src/mcp.ts"
},
"./visual": {
"webstudio": "./src/visual.ts"
},
"./persistence": {
"webstudio": "./src/persistence.ts",
"import": "./src/persistence.ts",
"default": "./src/persistence.ts"
},
"./server": {
"webstudio": "./src/server.ts"
}
},
"sideEffects": [
"./src/state/immer.ts"
],
"scripts": {
"generate-docs": "node scripts/generate-docs.mjs && oxfmt src/docs.generated.ts",
"generate-runtime-operation-contracts": "tsx --import ../../scripts/register-react-global.ts --conditions=webstudio scripts/generate-runtime-operation-contracts.ts && oxfmt src/contracts/__generated__/runtime-operation-contracts.ts",
"typecheck": "tsc --noEmit",
"test": "vitest run"
},
"dependencies": {
"@emotion/hash": "^0.9.2",
"@modelcontextprotocol/sdk": "^1.10.0",
"@webstudio-is/authorization-token": "workspace:*",
"@webstudio-is/css-data": "workspace:*",
"@webstudio-is/css-engine": "workspace:*",
"@webstudio-is/fonts": "workspace:*",
"@webstudio-is/html-data": "workspace:*",
"@webstudio-is/postgrest": "workspace:*",
"@webstudio-is/project": "workspace:*",
"@webstudio-is/project-migrations": "workspace:*",
"@webstudio-is/react-sdk": "workspace:*",
"@webstudio-is/sdk": "workspace:*",
"@webstudio-is/sdk-components-registry": "workspace:*",
"@webstudio-is/template": "workspace:*",
"@webstudio-is/trpc-interface": "workspace:*",
"@webstudio-is/wsauth": "workspace:*",
"acorn": "^8.14.1",
"acorn-jsx": "^5.3.2",
"allof-merge": "^0.6.8",
"bcp-47": "^2.1.0",
"css-tree": "^3.1.0",
"esbuild": "^0.25.3",
"fast-deep-equal": "^3.1.3",
"fast-png": "8.0.0",
"immer": "^10.1.1",
"nanoid": "^5.1.5",
"papaparse": "^5.5.3",
"parse5": "7.3.0",
"slugify": "^1.6.6",
"title-case": "^4.3.2",
"urlpattern-polyfill": "^10.1.0",
"valid-filename": "^4.0.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@types/papaparse": "^5.5.2",
"@webstudio-is/tsconfig": "workspace:*",
"vitest": "^3.1.2"
}
}