{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/mlos-config-mlos-jsonc-mlos-json5-mlos-json/_shared/latest--local-env-subschema.json",
  "title": "mlos_bench LocalEnv config",
  "description": "Config instance for a mlos_bench LocalEnv",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/microsoft/MLOS/main/mlos_bench/mlos_bench/config/schemas/environments/local/local-env-subschema.json",
    "sourceSha256": "47f0f600114ee74f79168d18eae79383ff02ffc1efab7f80fe8e6268e73dfc02"
  },
  "type": "object",
  "properties": {
    "class": {
      "enum": [
        "mlos_bench.environments.LocalEnv",
        "mlos_bench.environments.local.LocalEnv",
        "mlos_bench.environments.local.local_env.LocalEnv"
      ]
    },
    "config": {
      "type": "object",
      "$comment": "config objects need to specify their entire schema, so we need to include the unevaluatedProperties handling here.",
      "allOf": [
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/mlos-config-mlos-jsonc-mlos-json5-mlos-json/_shared/latest--common-environment-subschemas.json#/$defs/common_environment_config"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/mlos-config-mlos-jsonc-mlos-json5-mlos-json/_shared/latest--common-environment-subschemas.json#/$defs/setup_run_teardown_configs"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/mlos-config-mlos-jsonc-mlos-json5-mlos-json/_shared/latest--common-environment-subschemas.json#/$defs/shell_env_params_config"
        },
        {
          "$ref": "#/$defs/local_env_config"
        }
      ],
      "unevaluatedProperties": false
    }
  },
  "$comment": "NOTE: We only list unique properties here. Others are inherited from the leaf-environment-subschema.json. Additionally, unevaluatedProperties handling is dealt with elsewhere.",
  "required": [
    "class",
    "config"
  ],
  "$defs": {
    "local_env_config": {
      "$comment": "Separated here without unevaluatedProperties=false so we can reuse for LocalFileShareEnv",
      "type": "object",
      "properties": {
        "temp_dir": {
          "description": "Path to a temporary directory to use for storing intermediate files.",
          "type": "string"
        },
        "dump_params_file": {
          "description": "Path to a file to dump the parameters to.",
          "type": "string"
        },
        "dump_meta_file": {
          "description": "Path to a file to dump the tunables' metadata to.",
          "type": "string"
        },
        "read_results_file": {
          "description": "Path to a file to read the results from.",
          "type": "string",
          "$comment": "Currently we only support CSV files.",
          "pattern": "[.]csv$"
        },
        "read_telemetry_file": {
          "description": "Path to a file to read the telemetry data from.",
          "type": "string",
          "$comment": "Currently we only support CSV files.",
          "pattern": "[.]csv$"
        }
      }
    }
  }
}
