{
  "globalOptions": [
    {
      "flags": "-t, --token <token>",
      "description": "API Token",
      "default": null
    },
    {
      "flags": "--ef-host <host>",
      "description": "Editframe Host",
      "default": "https://editframe.com"
    },
    {
      "flags": "--ef-render-host <host>",
      "description": "Editframe Render Host",
      "default": "https://editframe.com"
    }
  ],
  "commands": [
    {
      "name": "auth",
      "usage": "auth",
      "description": "Fetch organization data using API token",
      "options": []
    },
    {
      "name": "check",
      "usage": "check",
      "description": "Check on dependencies and other requirements",
      "options": []
    },
    {
      "name": "cloud-render",
      "usage": "cloud-render [directory]",
      "description": "Render a directory's index.html file as a video in the editframe cloud",
      "options": []
    },
    {
      "name": "dev-server",
      "usage": "dev-server [directory]",
      "description": "Start the Editframe dev media server as a standalone service",
      "options": [
        {
          "flags": "-p, --port <number>",
          "description": "Port to listen on",
          "default": "3099"
        },
        {
          "flags": "--cache-root <path>",
          "description": "Directory for cached transcoded assets",
          "default": null
        },
        {
          "flags": "--public-origin <origin>",
          "description": "Public-facing origin injected into JIT manifests",
          "default": null
        }
      ]
    },
    {
      "name": "preview",
      "usage": "preview [directory]",
      "description": "Preview a directory's index.html file",
      "options": []
    },
    {
      "name": "process",
      "usage": "process [directory]",
      "description": "Process's a directory's index.html file, analyzing assets and processing them for rendering",
      "options": []
    },
    {
      "name": "process-file",
      "usage": "process-file <file>",
      "description": "Upload a audio/video to Editframe for processing.",
      "options": []
    },
    {
      "name": "render",
      "usage": "render [directory]",
      "description": "Render a video composition locally",
      "options": [
        {
          "flags": "-o, --output <path>",
          "description": "Output file path",
          "default": "output.mp4"
        },
        {
          "flags": "--url <url>",
          "description": "URL to render (bypasses directory/server startup)",
          "default": null
        },
        {
          "flags": "-d, --data <json>",
          "description": "Custom render data (JSON string)",
          "default": null
        },
        {
          "flags": "--data-file <path>",
          "description": "Custom render data from JSON file",
          "default": null
        },
        {
          "flags": "--fps <number>",
          "description": "Frame rate",
          "default": "30"
        },
        {
          "flags": "--scale <number>",
          "description": "Resolution scale (0-1)",
          "default": "1"
        },
        {
          "flags": "--include-audio",
          "description": "Include audio track",
          "default": true
        },
        {
          "flags": "--no-include-audio",
          "description": "Exclude audio track",
          "default": null
        },
        {
          "flags": "--from-ms <number>",
          "description": "Start time in milliseconds",
          "default": null
        },
        {
          "flags": "--to-ms <number>",
          "description": "End time in milliseconds",
          "default": null
        },
        {
          "flags": "--capture <strategy>",
          "description": "Frame capture strategy: auto, native, foreign-object, painter",
          "default": "auto"
        },
        {
          "flags": "--experimental-native-render",
          "description": "Alias for --capture native (enables Chrome's canvas-draw-element flag)",
          "default": null
        },
        {
          "flags": "--profile",
          "description": "Enable CPU profiling",
          "default": null
        },
        {
          "flags": "--profile-output <path>",
          "description": "Profile output path",
          "default": "./render-profile.cpuprofile"
        }
      ]
    },
    {
      "name": "sync",
      "usage": "sync",
      "description": "Sync assets to Editframe servers for rendering",
      "options": []
    },
    {
      "name": "transcribe",
      "usage": "transcribe <input>",
      "description": "Generate captions from audio/video file using whisper_timestamped",
      "options": [
        {
          "flags": "-o, --output <file>",
          "description": "Output JSON file",
          "default": "captions.json"
        },
        {
          "flags": "-l, --language <lang>",
          "description": "Language code (e.g., en, es, fr)",
          "default": "en"
        }
      ]
    },
    {
      "name": "webhook",
      "usage": "webhook",
      "description": "Send a test webhook event to the URL configured on your API key",
      "options": []
    }
  ]
}
