{
  "schema_version": 1,
  "generated_by": "BuildTools/docs_helper_cli.py",
  "source_manifest": "BuildTools/HelperCliInterface.json",
  "repository": "cvet/fonline",
  "source_ref": "master",
  "description": "Canonical ownership and publication boundary for executable FOnline helper-script command lines.",
  "scope": {
    "surface": "helper-cli",
    "stability": "internal",
    "since": null,
    "support_note": "Helper command lines are revision-pinned implementation interfaces; automation must pin an engine revision.",
    "included": [
      "engine-owned Python helper scripts that expose a top-level create_parser() factory",
      "exact argparse usage, help output, arguments, subcommands, ownership, audience, and invocation context"
    ],
    "excluded": [
      "the separately modeled BuildTools/buildtools.py command line",
      "the separately modeled BuildTools/package.py command line and package declaration contract",
      "documentation generators, tests, library-only modules, shell scripts, and embedding-project tools"
    ]
  },
  "discovery": {
    "root": "BuildTools",
    "excluded_directories": [
      "tests"
    ],
    "excluded_name_prefixes": [
      "docs_"
    ],
    "excluded_parser_sources": [
      {
        "source": "BuildTools/buildtools.py",
        "reason": "Owned by Docs/generated/cli.json, Docs/en/reference/buildtools/, and BuildTools/docs_cli.py."
      },
      {
        "source": "BuildTools/package.py",
        "reason": "Owned by Docs/generated/package.json and BuildTools/docs_package.py."
      }
    ]
  },
  "helpers": [
    {
      "id": "helper-cli.codegen",
      "name": "Code generation",
      "source": "BuildTools/codegen.py",
      "factory": "create_parser",
      "program": "codegen.py",
      "owner": "build-release",
      "audiences": [
        "engine-contributor",
        "embedding-project-build-system"
      ],
      "invocation_owner": "BuildTools/cmake/stages/Codegen.cmake",
      "description": "Generate engine configuration, metadata registration, script bindings, and embedded-resource source files.",
      "parser_description": "FOnline code generator",
      "usage": "usage: codegen.py [-h] -maincfg MAINCFG -buildhash BUILDHASH -devname DEVNAME -nicename NICENAME -embedded EMBEDDED [-enginedefine ENGINEDEFINE] -meta META [-commonheader COMMONHEADER] -genoutput GENOUTPUT [-verbose]",
      "help_output": "usage: codegen.py [-h] -maincfg MAINCFG -buildhash BUILDHASH -devname DEVNAME -nicename NICENAME -embedded EMBEDDED [-enginedefine ENGINEDEFINE] -meta META [-commonheader COMMONHEADER] -genoutput GENOUTPUT [-verbose]\n\nFOnline code generator\n\noptions:\n  -h, --help            show this help message and exit\n  -maincfg MAINCFG      main config file\n  -buildhash BUILDHASH  build hash\n  -devname DEVNAME      dev game name\n  -nicename NICENAME    nice game name\n  -embedded EMBEDDED    embedded buffer capacity\n  -enginedefine ENGINEDEFINE\n                        engine configuration define NAME=VALUE emitted as a macro into EngineConfig.gen.h\n  -meta META            path to script api metadata (///@ tags)\n  -commonheader COMMONHEADER\n                        path to common header file\n  -genoutput GENOUTPUT  generated code output dir\n  -verbose              verbose mode\n",
      "global_arguments": [
        {
          "id": "helper-cli.codegen.argument.maincfg",
          "destination": "maincfg",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "-maincfg"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "main config file"
        },
        {
          "id": "helper-cli.codegen.argument.buildhash",
          "destination": "buildhash",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "-buildhash"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "build hash"
        },
        {
          "id": "helper-cli.codegen.argument.devname",
          "destination": "devname",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "-devname"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "dev game name"
        },
        {
          "id": "helper-cli.codegen.argument.nicename",
          "destination": "nicename",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "-nicename"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "nice game name"
        },
        {
          "id": "helper-cli.codegen.argument.embedded",
          "destination": "embedded",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "-embedded"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "embedded buffer capacity"
        },
        {
          "id": "helper-cli.codegen.argument.enginedefine",
          "destination": "enginedefine",
          "kind": "option",
          "action": "append",
          "option_strings": [
            "-enginedefine"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": [],
          "type": null,
          "description": "engine configuration define NAME=VALUE emitted as a macro into EngineConfig.gen.h"
        },
        {
          "id": "helper-cli.codegen.argument.meta",
          "destination": "meta",
          "kind": "option",
          "action": "append",
          "option_strings": [
            "-meta"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "path to script api metadata (///@ tags)"
        },
        {
          "id": "helper-cli.codegen.argument.commonheader",
          "destination": "commonheader",
          "kind": "option",
          "action": "append",
          "option_strings": [
            "-commonheader"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": [],
          "type": null,
          "description": "path to common header file"
        },
        {
          "id": "helper-cli.codegen.argument.genoutput",
          "destination": "genoutput",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "-genoutput"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "generated code output dir"
        },
        {
          "id": "helper-cli.codegen.argument.verbose",
          "destination": "verbose",
          "kind": "option",
          "action": "store_true",
          "option_strings": [
            "-verbose"
          ],
          "metavar": null,
          "required": false,
          "nargs": 0,
          "choices": null,
          "default": false,
          "type": null,
          "description": "verbose mode"
        }
      ],
      "commands": []
    },
    {
      "id": "helper-cli.codecoverage",
      "name": "Code coverage",
      "source": "BuildTools/codecoverage.py",
      "factory": "create_parser",
      "program": "codecoverage.py",
      "owner": "quality",
      "audiences": [
        "engine-contributor",
        "ci-maintainer"
      ],
      "invocation_owner": "BuildTools/cmake/stages/Applications.cmake",
      "description": "Clean, collect, and report engine code coverage for generated test targets.",
      "parser_description": "Run and analyze engine code coverage",
      "usage": "usage: codecoverage.py [-h] {clean,run,report,full} ...",
      "help_output": "usage: codecoverage.py [-h] {clean,run,report,full} ...\n\nRun and analyze engine code coverage\n\npositional arguments:\n  {clean,run,report,full}\n    clean               Remove previously collected coverage data and reports\n    run                 Run the instrumented test binary and collect coverage data\n    report              Generate text and HTML reports from collected coverage data\n    full                Clean, run the instrumented binary, and generate reports\n\noptions:\n  -h, --help            show this help message and exit\n",
      "global_arguments": [],
      "commands": [
        {
          "id": "helper-cli.codecoverage.command.clean",
          "name": "clean",
          "summary": "Remove previously collected coverage data and reports",
          "description": "Remove previously collected coverage data and reports",
          "usage": "usage: codecoverage.py clean [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...",
          "help_output": "usage: codecoverage.py clean [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...\n\nRemove previously collected coverage data and reports\n\npositional arguments:\n  binary_args           arguments passed to the test binary\n\noptions:\n  -h, --help            show this help message and exit\n  --workspace-root WORKSPACE_ROOT\n                        embedding-project source directory\n  --build-dir BUILD_DIR\n                        configured CMake build directory\n  --binary BINARY       instrumented test executable\n  --backend {gcc,llvm,msvc}\n                        coverage compiler/toolchain backend\n  --output-dir OUTPUT_DIR\n                        coverage data and report output directory\n  --object OBJECTS      additional instrumented executable or shared library for LLVM reporting; repeatable\n",
          "arguments": [
            {
              "id": "helper-cli.codecoverage.command.clean.argument.workspace_root",
              "destination": "workspace_root",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--workspace-root"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "embedding-project source directory"
            },
            {
              "id": "helper-cli.codecoverage.command.clean.argument.build_dir",
              "destination": "build_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--build-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "configured CMake build directory"
            },
            {
              "id": "helper-cli.codecoverage.command.clean.argument.binary",
              "destination": "binary",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--binary"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "instrumented test executable"
            },
            {
              "id": "helper-cli.codecoverage.command.clean.argument.backend",
              "destination": "backend",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--backend"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": [
                "gcc",
                "llvm",
                "msvc"
              ],
              "default": null,
              "type": null,
              "description": "coverage compiler/toolchain backend"
            },
            {
              "id": "helper-cli.codecoverage.command.clean.argument.output_dir",
              "destination": "output_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--output-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "coverage data and report output directory"
            },
            {
              "id": "helper-cli.codecoverage.command.clean.argument.objects",
              "destination": "objects",
              "kind": "option",
              "action": "append",
              "option_strings": [
                "--object"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": [],
              "type": "Path",
              "description": "additional instrumented executable or shared library for LLVM reporting; repeatable"
            },
            {
              "id": "helper-cli.codecoverage.command.clean.argument.binary_args",
              "destination": "binary_args",
              "kind": "positional",
              "action": "store",
              "option_strings": [],
              "metavar": null,
              "required": true,
              "nargs": "...",
              "choices": null,
              "default": null,
              "type": null,
              "description": "arguments passed to the test binary"
            }
          ]
        },
        {
          "id": "helper-cli.codecoverage.command.run",
          "name": "run",
          "summary": "Run the instrumented test binary and collect coverage data",
          "description": "Run the instrumented test binary and collect coverage data",
          "usage": "usage: codecoverage.py run [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...",
          "help_output": "usage: codecoverage.py run [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...\n\nRun the instrumented test binary and collect coverage data\n\npositional arguments:\n  binary_args           arguments passed to the test binary\n\noptions:\n  -h, --help            show this help message and exit\n  --workspace-root WORKSPACE_ROOT\n                        embedding-project source directory\n  --build-dir BUILD_DIR\n                        configured CMake build directory\n  --binary BINARY       instrumented test executable\n  --backend {gcc,llvm,msvc}\n                        coverage compiler/toolchain backend\n  --output-dir OUTPUT_DIR\n                        coverage data and report output directory\n  --object OBJECTS      additional instrumented executable or shared library for LLVM reporting; repeatable\n",
          "arguments": [
            {
              "id": "helper-cli.codecoverage.command.run.argument.workspace_root",
              "destination": "workspace_root",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--workspace-root"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "embedding-project source directory"
            },
            {
              "id": "helper-cli.codecoverage.command.run.argument.build_dir",
              "destination": "build_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--build-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "configured CMake build directory"
            },
            {
              "id": "helper-cli.codecoverage.command.run.argument.binary",
              "destination": "binary",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--binary"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "instrumented test executable"
            },
            {
              "id": "helper-cli.codecoverage.command.run.argument.backend",
              "destination": "backend",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--backend"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": [
                "gcc",
                "llvm",
                "msvc"
              ],
              "default": null,
              "type": null,
              "description": "coverage compiler/toolchain backend"
            },
            {
              "id": "helper-cli.codecoverage.command.run.argument.output_dir",
              "destination": "output_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--output-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "coverage data and report output directory"
            },
            {
              "id": "helper-cli.codecoverage.command.run.argument.objects",
              "destination": "objects",
              "kind": "option",
              "action": "append",
              "option_strings": [
                "--object"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": [],
              "type": "Path",
              "description": "additional instrumented executable or shared library for LLVM reporting; repeatable"
            },
            {
              "id": "helper-cli.codecoverage.command.run.argument.binary_args",
              "destination": "binary_args",
              "kind": "positional",
              "action": "store",
              "option_strings": [],
              "metavar": null,
              "required": true,
              "nargs": "...",
              "choices": null,
              "default": null,
              "type": null,
              "description": "arguments passed to the test binary"
            }
          ]
        },
        {
          "id": "helper-cli.codecoverage.command.report",
          "name": "report",
          "summary": "Generate text and HTML reports from collected coverage data",
          "description": "Generate text and HTML reports from collected coverage data",
          "usage": "usage: codecoverage.py report [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...",
          "help_output": "usage: codecoverage.py report [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...\n\nGenerate text and HTML reports from collected coverage data\n\npositional arguments:\n  binary_args           arguments passed to the test binary\n\noptions:\n  -h, --help            show this help message and exit\n  --workspace-root WORKSPACE_ROOT\n                        embedding-project source directory\n  --build-dir BUILD_DIR\n                        configured CMake build directory\n  --binary BINARY       instrumented test executable\n  --backend {gcc,llvm,msvc}\n                        coverage compiler/toolchain backend\n  --output-dir OUTPUT_DIR\n                        coverage data and report output directory\n  --object OBJECTS      additional instrumented executable or shared library for LLVM reporting; repeatable\n",
          "arguments": [
            {
              "id": "helper-cli.codecoverage.command.report.argument.workspace_root",
              "destination": "workspace_root",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--workspace-root"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "embedding-project source directory"
            },
            {
              "id": "helper-cli.codecoverage.command.report.argument.build_dir",
              "destination": "build_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--build-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "configured CMake build directory"
            },
            {
              "id": "helper-cli.codecoverage.command.report.argument.binary",
              "destination": "binary",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--binary"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "instrumented test executable"
            },
            {
              "id": "helper-cli.codecoverage.command.report.argument.backend",
              "destination": "backend",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--backend"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": [
                "gcc",
                "llvm",
                "msvc"
              ],
              "default": null,
              "type": null,
              "description": "coverage compiler/toolchain backend"
            },
            {
              "id": "helper-cli.codecoverage.command.report.argument.output_dir",
              "destination": "output_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--output-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "coverage data and report output directory"
            },
            {
              "id": "helper-cli.codecoverage.command.report.argument.objects",
              "destination": "objects",
              "kind": "option",
              "action": "append",
              "option_strings": [
                "--object"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": [],
              "type": "Path",
              "description": "additional instrumented executable or shared library for LLVM reporting; repeatable"
            },
            {
              "id": "helper-cli.codecoverage.command.report.argument.binary_args",
              "destination": "binary_args",
              "kind": "positional",
              "action": "store",
              "option_strings": [],
              "metavar": null,
              "required": true,
              "nargs": "...",
              "choices": null,
              "default": null,
              "type": null,
              "description": "arguments passed to the test binary"
            }
          ]
        },
        {
          "id": "helper-cli.codecoverage.command.full",
          "name": "full",
          "summary": "Clean, run the instrumented binary, and generate reports",
          "description": "Clean, run the instrumented binary, and generate reports",
          "usage": "usage: codecoverage.py full [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...",
          "help_output": "usage: codecoverage.py full [-h] --workspace-root WORKSPACE_ROOT --build-dir BUILD_DIR --binary BINARY --backend {gcc,llvm,msvc} --output-dir OUTPUT_DIR [--object OBJECTS] ...\n\nClean, run the instrumented binary, and generate reports\n\npositional arguments:\n  binary_args           arguments passed to the test binary\n\noptions:\n  -h, --help            show this help message and exit\n  --workspace-root WORKSPACE_ROOT\n                        embedding-project source directory\n  --build-dir BUILD_DIR\n                        configured CMake build directory\n  --binary BINARY       instrumented test executable\n  --backend {gcc,llvm,msvc}\n                        coverage compiler/toolchain backend\n  --output-dir OUTPUT_DIR\n                        coverage data and report output directory\n  --object OBJECTS      additional instrumented executable or shared library for LLVM reporting; repeatable\n",
          "arguments": [
            {
              "id": "helper-cli.codecoverage.command.full.argument.workspace_root",
              "destination": "workspace_root",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--workspace-root"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "embedding-project source directory"
            },
            {
              "id": "helper-cli.codecoverage.command.full.argument.build_dir",
              "destination": "build_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--build-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "configured CMake build directory"
            },
            {
              "id": "helper-cli.codecoverage.command.full.argument.binary",
              "destination": "binary",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--binary"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "instrumented test executable"
            },
            {
              "id": "helper-cli.codecoverage.command.full.argument.backend",
              "destination": "backend",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--backend"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": [
                "gcc",
                "llvm",
                "msvc"
              ],
              "default": null,
              "type": null,
              "description": "coverage compiler/toolchain backend"
            },
            {
              "id": "helper-cli.codecoverage.command.full.argument.output_dir",
              "destination": "output_dir",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--output-dir"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "Path",
              "description": "coverage data and report output directory"
            },
            {
              "id": "helper-cli.codecoverage.command.full.argument.objects",
              "destination": "objects",
              "kind": "option",
              "action": "append",
              "option_strings": [
                "--object"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": [],
              "type": "Path",
              "description": "additional instrumented executable or shared library for LLVM reporting; repeatable"
            },
            {
              "id": "helper-cli.codecoverage.command.full.argument.binary_args",
              "destination": "binary_args",
              "kind": "positional",
              "action": "store",
              "option_strings": [],
              "metavar": null,
              "required": true,
              "nargs": "...",
              "choices": null,
              "default": null,
              "type": null,
              "description": "arguments passed to the test binary"
            }
          ]
        }
      ]
    },
    {
      "id": "helper-cli.gameplay-test-runner",
      "name": "Gameplay test runner",
      "source": "BuildTools/gameplay_test_runner.py",
      "factory": "create_parser",
      "program": "gameplay_test_runner.py",
      "owner": "quality",
      "audiences": [
        "game-developer",
        "engine-contributor",
        "embedding-project-build-system",
        "ci-maintainer"
      ],
      "invocation_owner": "embedding-project CMake targets and CI gameplay smoke jobs",
      "description": "Run ordered multi-process gameplay smoke scenarios with readiness, marker, deadline, cleanup, and JSON-report contracts.",
      "parser_description": "Run project-neutral multi-process gameplay smoke scenarios from a checked JSON manifest.",
      "usage": "usage: gameplay_test_runner.py [-h] --manifest MANIFEST [--value KEY=VALUE] [--report REPORT]",
      "help_output": "usage: gameplay_test_runner.py [-h] --manifest MANIFEST [--value KEY=VALUE] [--report REPORT]\n\nRun project-neutral multi-process gameplay smoke scenarios from a checked JSON manifest.\n\noptions:\n  -h, --help           show this help message and exit\n  --manifest MANIFEST  scenario manifest path\n  --value KEY=VALUE    placeholder value; repeat as needed\n  --report REPORT      optional JSON result path\n",
      "global_arguments": [
        {
          "id": "helper-cli.gameplay-test-runner.argument.manifest",
          "destination": "manifest",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--manifest"
          ],
          "metavar": null,
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "scenario manifest path"
        },
        {
          "id": "helper-cli.gameplay-test-runner.argument.value",
          "destination": "value",
          "kind": "option",
          "action": "append",
          "option_strings": [
            "--value"
          ],
          "metavar": "KEY=VALUE",
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": [],
          "type": null,
          "description": "placeholder value; repeat as needed"
        },
        {
          "id": "helper-cli.gameplay-test-runner.argument.report",
          "destination": "report",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--report"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "optional JSON result path"
        }
      ],
      "commands": []
    },
    {
      "id": "helper-cli.ai-control-client",
      "name": "AiControl protocol client",
      "source": "BuildTools/ai_control_client.py",
      "factory": "create_parser",
      "program": "ai_control_client.py",
      "owner": "tooling",
      "audiences": [
        "game-developer",
        "engine-contributor",
        "tool-developer",
        "ci-maintainer"
      ],
      "invocation_owner": "embedding-project AI adapters, protocol smoke tests, and direct developer diagnostics",
      "description": "Call an Engine-compatible project AiControl bridge through the versioned NDJSON/TCP envelope without exposing shared tokens on the command line.",
      "parser_description": "Call an Engine-compatible AiControl bridge over NDJSON/TCP.",
      "usage": "usage: ai_control_client.py [-h] [--host HOST] [--port PORT] [--timeout TIMEOUT] [--token-env TOKEN_ENV] [--allow-remote] {ping,status,observe,events,act} ...",
      "help_output": "usage: ai_control_client.py [-h] [--host HOST] [--port PORT] [--timeout TIMEOUT] [--token-env TOKEN_ENV] [--allow-remote] {ping,status,observe,events,act} ...\n\nCall an Engine-compatible AiControl bridge over NDJSON/TCP.\n\npositional arguments:\n  {ping,status,observe,events,act}\n    ping                Check bridge liveness.\n    status              Read bridge status and queue limits.\n    observe             Read the latest project observation.\n    events              Read events after a sequence cursor.\n    act                 Enqueue one project-defined command.\n\noptions:\n  -h, --help            show this help message and exit\n  --host HOST           Bridge host.\n  --port PORT           Bridge port.\n  --timeout TIMEOUT     Socket timeout in seconds.\n  --token-env TOKEN_ENV\n                        Environment variable containing the shared token.\n  --allow-remote        Permit a non-loopback endpoint; transport remains unencrypted.\n",
      "global_arguments": [
        {
          "id": "helper-cli.ai-control-client.argument.host",
          "destination": "host",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--host"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": "127.0.0.1",
          "type": null,
          "description": "Bridge host."
        },
        {
          "id": "helper-cli.ai-control-client.argument.port",
          "destination": "port",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--port"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": 43011,
          "type": "int",
          "description": "Bridge port."
        },
        {
          "id": "helper-cli.ai-control-client.argument.timeout",
          "destination": "timeout",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--timeout"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": 5.0,
          "type": "float",
          "description": "Socket timeout in seconds."
        },
        {
          "id": "helper-cli.ai-control-client.argument.token_env",
          "destination": "token_env",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--token-env"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": "FONLINE_AI_TOKEN",
          "type": null,
          "description": "Environment variable containing the shared token."
        },
        {
          "id": "helper-cli.ai-control-client.argument.allow_remote",
          "destination": "allow_remote",
          "kind": "option",
          "action": "store_true",
          "option_strings": [
            "--allow-remote"
          ],
          "metavar": null,
          "required": false,
          "nargs": 0,
          "choices": null,
          "default": false,
          "type": null,
          "description": "Permit a non-loopback endpoint; transport remains unencrypted."
        }
      ],
      "commands": [
        {
          "id": "helper-cli.ai-control-client.command.ping",
          "name": "ping",
          "summary": "Check bridge liveness.",
          "description": null,
          "usage": "usage: ai_control_client.py ping [-h]",
          "help_output": "usage: ai_control_client.py ping [-h]\n\noptions:\n  -h, --help  show this help message and exit\n",
          "arguments": []
        },
        {
          "id": "helper-cli.ai-control-client.command.status",
          "name": "status",
          "summary": "Read bridge status and queue limits.",
          "description": null,
          "usage": "usage: ai_control_client.py status [-h]",
          "help_output": "usage: ai_control_client.py status [-h]\n\noptions:\n  -h, --help  show this help message and exit\n",
          "arguments": []
        },
        {
          "id": "helper-cli.ai-control-client.command.observe",
          "name": "observe",
          "summary": "Read the latest project observation.",
          "description": null,
          "usage": "usage: ai_control_client.py observe [-h]",
          "help_output": "usage: ai_control_client.py observe [-h]\n\noptions:\n  -h, --help  show this help message and exit\n",
          "arguments": []
        },
        {
          "id": "helper-cli.ai-control-client.command.events",
          "name": "events",
          "summary": "Read events after a sequence cursor.",
          "description": null,
          "usage": "usage: ai_control_client.py events [-h] [--after-seq AFTER_SEQ] [--limit LIMIT]",
          "help_output": "usage: ai_control_client.py events [-h] [--after-seq AFTER_SEQ] [--limit LIMIT]\n\noptions:\n  -h, --help            show this help message and exit\n  --after-seq AFTER_SEQ\n                        Exclusive event cursor.\n  --limit LIMIT         Maximum events to return.\n",
          "arguments": [
            {
              "id": "helper-cli.ai-control-client.command.events.argument.after_seq",
              "destination": "after_seq",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--after-seq"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": 0,
              "type": "int",
              "description": "Exclusive event cursor."
            },
            {
              "id": "helper-cli.ai-control-client.command.events.argument.limit",
              "destination": "limit",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--limit"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": 100,
              "type": "int",
              "description": "Maximum events to return."
            }
          ]
        },
        {
          "id": "helper-cli.ai-control-client.command.act",
          "name": "act",
          "summary": "Enqueue one project-defined command.",
          "description": null,
          "usage": "usage: ai_control_client.py act [-h] --type TYPE [--target-id TARGET_ID] [--item-id ITEM_ID] [--aux-id AUX_ID] [--x X] [--y Y] [--screen-x SCREEN_X] [--screen-y SCREEN_Y] [--int-arg INT_ARG] [--string-arg STRING_ARG] [--append]",
          "help_output": "usage: ai_control_client.py act [-h] --type TYPE [--target-id TARGET_ID] [--item-id ITEM_ID] [--aux-id AUX_ID] [--x X] [--y Y] [--screen-x SCREEN_X] [--screen-y SCREEN_Y] [--int-arg INT_ARG] [--string-arg STRING_ARG] [--append]\n\noptions:\n  -h, --help            show this help message and exit\n  --type TYPE           Project-defined command type.\n  --target-id TARGET_ID\n                        Optional target entity identifier.\n  --item-id ITEM_ID     Optional item entity identifier.\n  --aux-id AUX_ID       Optional auxiliary entity identifier.\n  --x X                 Optional project world X coordinate.\n  --y Y                 Optional project world Y coordinate.\n  --screen-x SCREEN_X   Optional screen X coordinate.\n  --screen-y SCREEN_Y   Optional screen Y coordinate.\n  --int-arg INT_ARG     Optional integer payload.\n  --string-arg STRING_ARG\n                        Optional string payload.\n  --append              Request project queue append semantics.\n",
          "arguments": [
            {
              "id": "helper-cli.ai-control-client.command.act.argument.type",
              "destination": "type",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--type"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Project-defined command type."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.target_id",
              "destination": "target_id",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--target-id"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Optional target entity identifier."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.item_id",
              "destination": "item_id",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--item-id"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Optional item entity identifier."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.aux_id",
              "destination": "aux_id",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--aux-id"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Optional auxiliary entity identifier."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.x",
              "destination": "x",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--x"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "int",
              "description": "Optional project world X coordinate."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.y",
              "destination": "y",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--y"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "int",
              "description": "Optional project world Y coordinate."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.screen_x",
              "destination": "screen_x",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--screen-x"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "int",
              "description": "Optional screen X coordinate."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.screen_y",
              "destination": "screen_y",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--screen-y"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "int",
              "description": "Optional screen Y coordinate."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.int_arg",
              "destination": "int_arg",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--int-arg"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": "int",
              "description": "Optional integer payload."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.string_arg",
              "destination": "string_arg",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--string-arg"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Optional string payload."
            },
            {
              "id": "helper-cli.ai-control-client.command.act.argument.append",
              "destination": "append",
              "kind": "option",
              "action": "store_true",
              "option_strings": [
                "--append"
              ],
              "metavar": null,
              "required": false,
              "nargs": 0,
              "choices": null,
              "default": false,
              "type": null,
              "description": "Request project queue append semantics."
            }
          ]
        }
      ]
    },
    {
      "id": "helper-cli.windows7-import-check",
      "name": "Windows 7 import validation",
      "source": "BuildTools/check_windows7_imports.py",
      "factory": "create_parser",
      "program": "check_windows7_imports.py",
      "owner": "quality",
      "audiences": [
        "engine-contributor",
        "embedding-project-build-system",
        "release-operator"
      ],
      "invocation_owner": "embedding-project Windows 7 CI and release validation",
      "description": "Inspect linked PE files for Windows 7 import compatibility and optionally require the large-address flag on executables.",
      "parser_description": "Reject imports Windows 7 SP1 cannot resolve from Windows 7-compatible PE binaries",
      "usage": "usage: check_windows7_imports.py [-h] [--require-large-address-aware] binaries [binaries ...]",
      "help_output": "usage: check_windows7_imports.py [-h] [--require-large-address-aware] binaries [binaries ...]\n\nReject imports Windows 7 SP1 cannot resolve from Windows 7-compatible PE binaries\n\npositional arguments:\n  binaries              linked PE executable or DLL to inspect\n\noptions:\n  -h, --help            show this help message and exit\n  --require-large-address-aware\n                        Require the large-address flag on checked executables\n",
      "global_arguments": [
        {
          "id": "helper-cli.windows7-import-check.argument.require_large_address_aware",
          "destination": "require_large_address_aware",
          "kind": "option",
          "action": "store_true",
          "option_strings": [
            "--require-large-address-aware"
          ],
          "metavar": null,
          "required": false,
          "nargs": 0,
          "choices": null,
          "default": false,
          "type": null,
          "description": "Require the large-address flag on checked executables"
        },
        {
          "id": "helper-cli.windows7-import-check.argument.binaries",
          "destination": "binaries",
          "kind": "positional",
          "action": "store",
          "option_strings": [],
          "metavar": null,
          "required": true,
          "nargs": "+",
          "choices": null,
          "default": null,
          "type": "Path",
          "description": "linked PE executable or DLL to inspect"
        }
      ],
      "commands": []
    },
    {
      "id": "helper-cli.android-device",
      "name": "Android device control",
      "source": "BuildTools/android_device.py",
      "factory": "create_parser",
      "program": "android_device.py",
      "owner": "platform",
      "audiences": [
        "game-developer",
        "engine-contributor"
      ],
      "invocation_owner": "embedding-project Android tasks and direct developer use",
      "description": "Discover, connect, install, launch, stop, and inspect Android Wi-Fi devices through adb.",
      "parser_description": "Android Wi-Fi device helper for BuildTools tasks",
      "usage": "usage: android_device.py [-h] [--workspace-root WORKSPACE_ROOT] {discover,connect,install,launch,launch-game,stop,logcat} ...",
      "help_output": "usage: android_device.py [-h] [--workspace-root WORKSPACE_ROOT] {discover,connect,install,launch,launch-game,stop,logcat} ...\n\nAndroid Wi-Fi device helper for BuildTools tasks\n\npositional arguments:\n  {discover,connect,install,launch,launch-game,stop,logcat}\n    discover            List Android Wi-Fi devices discovered through adb mdns\n    connect             Connect to an Android Wi-Fi device and cache the endpoint\n    install             Install an APK on the selected Android Wi-Fi device\n    launch              Launch an Android activity on the selected device\n    launch-game         Launch the Android game activity and pass RemoteSceneLaunch server host override\n    stop                Force-stop an Android package on the selected device\n    logcat              Stream logcat from the selected device\n\noptions:\n  -h, --help            show this help message and exit\n  --workspace-root WORKSPACE_ROOT\n                        Workspace directory path containing android-sdk and android-debug\n",
      "global_arguments": [
        {
          "id": "helper-cli.android-device.argument.workspace_root",
          "destination": "workspace_root",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--workspace-root"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "Workspace directory path containing android-sdk and android-debug"
        }
      ],
      "commands": [
        {
          "id": "helper-cli.android-device.command.discover",
          "name": "discover",
          "summary": "List Android Wi-Fi devices discovered through adb mdns",
          "description": null,
          "usage": "usage: android_device.py discover [-h]",
          "help_output": "usage: android_device.py discover [-h]\n\noptions:\n  -h, --help  show this help message and exit\n",
          "arguments": []
        },
        {
          "id": "helper-cli.android-device.command.connect",
          "name": "connect",
          "summary": "Connect to an Android Wi-Fi device and cache the endpoint",
          "description": null,
          "usage": "usage: android_device.py connect [-h] [--device DEVICE]",
          "help_output": "usage: android_device.py connect [-h] [--device DEVICE]\n\noptions:\n  -h, --help       show this help message and exit\n  --device DEVICE  Device IP[:port]; if omitted, auto-discovery and interactive selection are used\n",
          "arguments": [
            {
              "id": "helper-cli.android-device.command.connect.argument.device",
              "destination": "device",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--device"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Device IP[:port]; if omitted, auto-discovery and interactive selection are used"
            }
          ]
        },
        {
          "id": "helper-cli.android-device.command.install",
          "name": "install",
          "summary": "Install an APK on the selected Android Wi-Fi device",
          "description": null,
          "usage": "usage: android_device.py install [-h] --apk APK [--device DEVICE]",
          "help_output": "usage: android_device.py install [-h] --apk APK [--device DEVICE]\n\noptions:\n  -h, --help       show this help message and exit\n  --apk APK        APK path\n  --device DEVICE  Device IP[:port]; if omitted, cached endpoint or discovery is used\n",
          "arguments": [
            {
              "id": "helper-cli.android-device.command.install.argument.apk",
              "destination": "apk",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--apk"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "APK path"
            },
            {
              "id": "helper-cli.android-device.command.install.argument.device",
              "destination": "device",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--device"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Device IP[:port]; if omitted, cached endpoint or discovery is used"
            }
          ]
        },
        {
          "id": "helper-cli.android-device.command.launch",
          "name": "launch",
          "summary": "Launch an Android activity on the selected device",
          "description": null,
          "usage": "usage: android_device.py launch [-h] --activity ACTIVITY [--device DEVICE]",
          "help_output": "usage: android_device.py launch [-h] --activity ACTIVITY [--device DEVICE]\n\noptions:\n  -h, --help           show this help message and exit\n  --activity ACTIVITY  Fully qualified activity component, e.g. com.example.game/.FOnlineActivity\n  --device DEVICE      Device IP[:port]; if omitted, cached endpoint or discovery is used\n",
          "arguments": [
            {
              "id": "helper-cli.android-device.command.launch.argument.activity",
              "destination": "activity",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--activity"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Fully qualified activity component, e.g. com.example.game/.FOnlineActivity"
            },
            {
              "id": "helper-cli.android-device.command.launch.argument.device",
              "destination": "device",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--device"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Device IP[:port]; if omitted, cached endpoint or discovery is used"
            }
          ]
        },
        {
          "id": "helper-cli.android-device.command.launch-game",
          "name": "launch-game",
          "summary": "Launch the Android game activity and pass RemoteSceneLaunch server host override",
          "description": null,
          "usage": "usage: android_device.py launch-game [-h] --activity ACTIVITY [--device DEVICE] [--server-host SERVER_HOST]",
          "help_output": "usage: android_device.py launch-game [-h] --activity ACTIVITY [--device DEVICE] [--server-host SERVER_HOST]\n\noptions:\n  -h, --help            show this help message and exit\n  --activity ACTIVITY   Fully qualified activity component, e.g. com.example.game/.FOnlineActivity\n  --device DEVICE       Device IP[:port]; if omitted, cached endpoint or discovery is used\n  --server-host SERVER_HOST\n                        Host IP or name for ClientNetwork.ServerHost; if omitted, auto-detected from the route to the selected device\n",
          "arguments": [
            {
              "id": "helper-cli.android-device.command.launch-game.argument.activity",
              "destination": "activity",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--activity"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Fully qualified activity component, e.g. com.example.game/.FOnlineActivity"
            },
            {
              "id": "helper-cli.android-device.command.launch-game.argument.device",
              "destination": "device",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--device"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Device IP[:port]; if omitted, cached endpoint or discovery is used"
            },
            {
              "id": "helper-cli.android-device.command.launch-game.argument.server_host",
              "destination": "server_host",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--server-host"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Host IP or name for ClientNetwork.ServerHost; if omitted, auto-detected from the route to the selected device"
            }
          ]
        },
        {
          "id": "helper-cli.android-device.command.stop",
          "name": "stop",
          "summary": "Force-stop an Android package on the selected device",
          "description": null,
          "usage": "usage: android_device.py stop [-h] --package PACKAGE_NAME [--device DEVICE]",
          "help_output": "usage: android_device.py stop [-h] --package PACKAGE_NAME [--device DEVICE]\n\noptions:\n  -h, --help            show this help message and exit\n  --package PACKAGE_NAME\n                        Android package name\n  --device DEVICE       Device IP[:port]; if omitted, cached endpoint or discovery is used\n",
          "arguments": [
            {
              "id": "helper-cli.android-device.command.stop.argument.package_name",
              "destination": "package_name",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--package"
              ],
              "metavar": null,
              "required": true,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Android package name"
            },
            {
              "id": "helper-cli.android-device.command.stop.argument.device",
              "destination": "device",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--device"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Device IP[:port]; if omitted, cached endpoint or discovery is used"
            }
          ]
        },
        {
          "id": "helper-cli.android-device.command.logcat",
          "name": "logcat",
          "summary": "Stream logcat from the selected device",
          "description": null,
          "usage": "usage: android_device.py logcat [-h] [--device DEVICE]",
          "help_output": "usage: android_device.py logcat [-h] [--device DEVICE]\n\noptions:\n  -h, --help       show this help message and exit\n  --device DEVICE  Device IP[:port]; if omitted, cached endpoint or discovery is used\n",
          "arguments": [
            {
              "id": "helper-cli.android-device.command.logcat.argument.device",
              "destination": "device",
              "kind": "option",
              "action": "store",
              "option_strings": [
                "--device"
              ],
              "metavar": null,
              "required": false,
              "nargs": 1,
              "choices": null,
              "default": null,
              "type": null,
              "description": "Device IP[:port]; if omitted, cached endpoint or discovery is used"
            }
          ]
        }
      ]
    },
    {
      "id": "helper-cli.simple-web-server",
      "name": "Local web server",
      "source": "BuildTools/web/simple-web-server.py",
      "factory": "create_parser",
      "program": "simple-web-server.py",
      "owner": "platform",
      "audiences": [
        "game-developer",
        "release-operator"
      ],
      "invocation_owner": "BuildTools/package.py WebServer payload",
      "description": "Serve a packaged web client from a no-cache local HTTP server.",
      "parser_description": "Simple HTTP server",
      "usage": "usage: simple-web-server.py [-h] [--port PORT] [--fork]",
      "help_output": "usage: simple-web-server.py [-h] [--port PORT] [--fork]\n\nSimple HTTP server\n\noptions:\n  -h, --help   show this help message and exit\n  --port PORT  web server port\n  --fork       fork process\n",
      "global_arguments": [
        {
          "id": "helper-cli.simple-web-server.argument.port",
          "destination": "port",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--port"
          ],
          "metavar": null,
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": 7000,
          "type": "int",
          "description": "web server port"
        },
        {
          "id": "helper-cli.simple-web-server.argument.fork",
          "destination": "fork",
          "kind": "option",
          "action": "store_true",
          "option_strings": [
            "--fork"
          ],
          "metavar": null,
          "required": false,
          "nargs": 0,
          "choices": null,
          "default": false,
          "type": null,
          "description": "fork process"
        }
      ],
      "commands": []
    },
    {
      "id": "helper-cli.createmsi",
      "name": "MSI creation",
      "source": "BuildTools/msicreator/createmsi.py",
      "factory": "create_parser",
      "program": "createmsi.py",
      "owner": "build-release",
      "audiences": [
        "release-operator",
        "engine-contributor"
      ],
      "invocation_owner": "BuildTools/package.py Wix pack",
      "description": "Build an MSI installer from a package-generated WiX definition.",
      "parser_description": "Build an MSI package from a WiX definition",
      "usage": "usage: createmsi.py [-h] [--wix-dir directory] definition.json",
      "help_output": "usage: createmsi.py [-h] [--wix-dir directory] definition.json\n\nBuild an MSI package from a WiX definition\n\npositional arguments:\n  definition.json      bare WiX package definition filename in the working directory\n\noptions:\n  -h, --help           show this help message and exit\n  --wix-dir directory  directory containing WiX tools; omit to find them on PATH\n",
      "global_arguments": [
        {
          "id": "helper-cli.createmsi.argument.wix_dir",
          "destination": "wix_dir",
          "kind": "option",
          "action": "store",
          "option_strings": [
            "--wix-dir"
          ],
          "metavar": "directory",
          "required": false,
          "nargs": 1,
          "choices": null,
          "default": "",
          "type": null,
          "description": "directory containing WiX tools; omit to find them on PATH"
        },
        {
          "id": "helper-cli.createmsi.argument.jsonfile",
          "destination": "jsonfile",
          "kind": "positional",
          "action": "store",
          "option_strings": [],
          "metavar": "definition.json",
          "required": true,
          "nargs": 1,
          "choices": null,
          "default": null,
          "type": null,
          "description": "bare WiX package definition filename in the working directory"
        }
      ],
      "commands": []
    }
  ],
  "summary": {
    "helper_count": 8,
    "command_count": 16,
    "global_argument_count": 25,
    "command_argument_count": 52
  },
  "contract_digest": "346c42d340cb39623bfca5120856f5ae2d9198368758ea39ca7e672baeeb85e6"
}
