{
  "id": "mosaic-framework",
  "name": "Mosaic Framework",
  "description": "Mechanically injects Mosaic rails and mission context into all agent sessions and ACP worker spawns. Ensures no worker starts without the framework contract.",
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "mosaicHome": {
        "type": "string",
        "description": "Path to the Mosaic config home (default: ~/.config/mosaic)"
      },
      "projectRoots": {
        "type": "array",
        "items": { "type": "string" },
        "description": "List of project root paths to scan for active missions. Plugin checks each for .mosaic/orchestrator/mission.json."
      },
      "requireMission": {
        "type": "boolean",
        "description": "If true, ACP coding worker spawns are BLOCKED when no active Mosaic mission exists in any configured project root. Default: false."
      },
      "injectAgentIds": {
        "type": "array",
        "items": { "type": "string" },
        "description": "Agent IDs that receive framework context via before_agent_start (appendSystemContext). Default: all agents."
      },
      "acpAgentIds": {
        "type": "array",
        "items": { "type": "string" },
        "description": "ACP agent IDs that trigger runtime contract injection (subagent_spawning). Default: ['codex', 'claude']."
      }
    }
  }
}
