{
  "$schema": "http://json-schema.org/schema",
  "$id": "LensmcpAgentDev",
  "title": "agent-dev",
  "description": "Run a host project under the LensMCP lens.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "kind": {
      "type": "string",
      "enum": ["vite-react", "nestjs", "nextjs", "imported"],
      "default": "vite-react"
    },
    "devTarget": {
      "type": "string",
      "description": "Nx target that starts the host's dev server (e.g. \"web:serve\"). If omitted, the executor runs `vite` on the current project."
    },
    "devCommand": {
      "type": "string",
      "description": "For kind \"imported\": the shell command that starts the host's own dev server (e.g. \"npm run dev\" or \"webpack serve\"). Run with LENSMCP_EVENT_FILE + LENSMCP_WS_PORT exported and (when @lensmcp/node-instrumentation is installed) NODE_OPTIONS=--import for backend taps."
    },
    "wsPort": {
      "type": "number",
      "default": 5747,
      "description": "For kind \"imported\": fixed port the standalone bridge listens on. The injected @lensmcp/client-runtime connects here (default 5747)."
    },
    "node": {
      "type": "boolean",
      "default": true,
      "description": "For kind \"imported\": inject NODE_OPTIONS=--import @lensmcp/node-instrumentation/register into the dev command so backend taps install with no code change. Skipped automatically if the package isn't installed."
    },
    "projectRoot": {
      "type": "string",
      "description": "Override the project root passed to Vite. Defaults to the running project's root."
    },
    "chrome": {
      "type": "boolean",
      "default": true,
      "description": "Launch a Chrome sidecar attached to the dev URL."
    },
    "headless": {
      "type": "boolean",
      "default": true
    },
    "port": {
      "type": "number",
      "description": "Override the Vite dev port (default: project's vite.config.ts setting or 5173)."
    },
    "openUrl": {
      "type": "string",
      "description": "Override the URL Chrome navigates to."
    }
  },
  "required": []
}
