[User] Provide a JSON object that satisfies the schema "hayson-json-schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Provide a JSON object that satisfies the schema "hayson-json-schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$id":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline.schema.json","$schema":"http://json-schema.org/draft-07/schema","description":"Haystack Pipeline YAML file describing the nodes of the pipelines. For more info read the docs at: https://haystack.deepset.ai/components/pipelines#yaml-file-definitions","oneOf":[{"allOf":[{"properties":{"version":{"const":"ignore"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-main.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.0.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.0.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.1.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.1.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.2.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.2.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.3.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.3.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.4.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.4.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.4.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.4.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.4.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.4.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.5.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.5.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.5.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.5.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.6.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.6.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.7.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.7.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.7.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack/master/haystack/json-schemas/haystack-pipeline-1.7.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.7.2"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.7.2.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.8.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.8.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.9.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.9.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.9.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.9.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.10.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.10.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.11.0rc0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack/main/haystack/json-schemas/haystack-pipeline-1.11.0rc0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.11.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.11.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.12.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.12.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.12.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.12.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.12.2"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.12.2.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.13.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.13.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.13.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.13.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.13.2"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.13.2.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.14.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.14.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.15.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.15.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.15.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.15.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.16.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.16.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.16.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.16.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.17.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.17.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.17.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.17.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.17.2"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.17.2.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.18.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.18.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.18.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.18.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.19.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.19.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.20.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.20.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.20.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.20.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.21.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.21.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.21.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.21.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.21.2"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.21.2.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.22.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.22.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.22.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.22.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.23.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.23.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.24.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.24.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.24.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.24.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.25.0"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.25.0.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.25.1"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.25.1.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.25.2"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.25.2.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.25.4"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.25.4.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.25.3"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.25.3.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.25.5"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.25.5.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.26.2"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.26.2.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.26.3"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.26.3.schema.json"}]},{"allOf":[{"properties":{"version":{"const":"1.26.4"}}},{"$ref":"https://raw.githubusercontent.com/deepset-ai/haystack-json-schema/main/json-schema/haystack-pipeline-1.26.4.schema.json"}]}],"title":"Haystack Pipeline","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "Haystack Pipeline". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Haystack Pipeline YAML file describing the nodes of the pipelines. For more info read the docs at: https://haystack.deepset.ai/components/pipelines#yaml-file-definitions

Haystack Pipeline

Provide a JSON object that satisfies the schema "Haystack Pipeline". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$defs":{"Condition":{"anyOf":[{"$ref":"#/$defs/time"},{"pattern":"^\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*\\s*..\\s*\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"}]},"Condition2":{"anyOf":[{"$ref":"#/$defs/length"},{"pattern":"^\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*\\s*..\\s*\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"}]},"ConditionedFunctionExpression":{"properties":{"expr":{"$ref":"#/$defs/FunctionExpression"},"t":{"anyOf":[{"$ref":"#/$defs/Condition"},{"type":"null"}],"description":"The time condition for which the function expression is valid.\nIt can be none, a value or a range.","title":"Time Condition"},"x":{"anyOf":[{"$ref":"#/$defs/Condition2"},{"type":"null"}],"description":"The x condition for which the function expression is valid.\nIt can be none, a value or a range.","title":"X Condition"},"y":{"anyOf":[{"$ref":"#/$defs/Condition2"},{"type":"null"}],"description":"The y condition for which the function expression is valid.\nIt can be none, a value or a range.","title":"Y Condition"},"z":{"anyOf":[{"$ref":"#/$defs/Condition2"},{"type":"null"}],"description":"The z condition for which the function expression is valid.\nIt can be none, a value or a range.","title":"Z Condition"}},"required":["expr"],"type":"object"},"CustomQuantity":{"description":"This allows defining custom quantities based on\nthe seven base quantities of the international system.","properties":{"amount":{"default":0,"format":"int","type":"integer"},"current":{"default":0,"format":"int","type":"integer"},"length":{"default":0,"format":"int","type":"integer"},"luminous_intensity":{"default":0,"format":"int","type":"integer"},"mass":{"default":0,"format":"int","type":"integer"},"temperature":{"default":0,"format":"int","type":"integer"},"time":{"default":0,"format":"int","type":"integer"},"value":{"default":0.0,"format":"double","type":"number"}},"title":"CustomQuantity","type":"object"},"FiniteElement":{"description":"The finite element to use for the mesh.","enum":["Q1","Q2","Q3"],"title":"Finite Element","type":"string"},"FunctionDef":{"anyOf":[{"$ref":"#/$defs/FunctionExpression"},{"description":"A function defined as list of function expression with conditions (time range, space range, etc...).\nThe function expressions are checked in order. Therefore, in case of an overlap, the first one will be used.\nIf no function expressions without conditions are specified, a default value of 0 will be assumed.","items":{"$ref":"#/$defs/ConditionedFunctionExpression"},"title":"Conditioned Function","type":"array"}],"description":"The definition of a function.\nThis can be an expression or a conditioned function.","title":"Function Definition"},"FunctionExpression":{"description":"A function expression.\nAvailable variables are : t, x, y, z.\nMath functions such as cosinus or exponentials are available.\nThey can be called through their cpp names like log for the logarithm.","oneOf":[{"type":"string"},{"type":"number"}],"title":"Function Expression"},"GenConfig":{"description":"The configuration for the generation of the code.","properties":{"debug":{"default":false,"description":"Whether to generate debug code.","title":"Debug","type":"boolean"},"matrix_free":{"default":false,"description":"Whether to generate matrix free code.","title":"Matrix Free","type":"boolean"},"mpi":{"default":false,"description":"Whether to generate MPI code.","title":"MPI","type":"boolean"}},"title":"Generation Configuration","type":"object"},"HyperCubeMesh":{"properties":{"range":{"default":"0 m .. 1 m","pattern":"^\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*\\s*..\\s*\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},"resolution":{"$ref":"#/$defs/length","default":"0.03125 m","description":"The size of each cell.","title":"Resolution"},"show_info":{"default":false,"type":"boolean"}},"type":"object"},"Map<string, Equation>":{"additionalProperties":{"pattern":"^[^=]+=[^=]+$","type":"string"},"type":"object"},"Map<string, FunctionDef>":{"additionalProperties":{"$ref":"#/$defs/FunctionDef"},"type":"object"},"Map<string, MeshEnum>":{"additionalProperties":{"$ref":"#/$defs/MeshEnum"},"type":"object"},"Map<string, QuantityEnum>":{"additionalProperties":{"$ref":"#/$defs/QuantityEnum"},"type":"object"},"Map<string, Unknown>":{"additionalProperties":{"$ref":"#/$defs/Unknown"},"type":"object"},"MeshEnum":{"oneOf":[{"$ref":"#/$defs/HyperCubeMesh","properties":{"type":{"const":"hyper_cube","type":"string"}},"required":["type"],"type":"object"}]},"QuantityEnum":{"oneOf":[{"properties":{"type":{"const":"speed","type":"string"},"value":{"$ref":"#/$defs/speed"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"length","type":"string"},"value":{"$ref":"#/$defs/length"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"area","type":"string"},"value":{"$ref":"#/$defs/area"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"volume","type":"string"},"value":{"$ref":"#/$defs/volume"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"mass","type":"string"},"value":{"$ref":"#/$defs/mass"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"temperature","type":"string"},"value":{"$ref":"#/$defs/temperature"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"diffusion_coefficient","type":"string"},"value":{"$ref":"#/$defs/diffusion_coefficient"}},"required":["type","value"],"type":"object"},{"properties":{"type":{"const":"custom","type":"string"},"value":{"$ref":"#/$defs/CustomQuantity"}},"required":["type","value"],"type":"object"}],"title":"Quantity"},"Solve":{"description":"The equation(s) to solve and the mesh to use.","properties":{"dimension":{"default":2,"description":"The dimension of the problem\nPossible values: 1, 2, 3","format":"uint","minimum":0,"title":"Dimension","type":"integer"},"element":{"$ref":"#/$defs/FiniteElement"},"equations":{"description":"The equation(s) to solve","items":{"type":"string"},"title":"Equations","type":"array"},"mesh":{"description":"The mesh to use","title":"Mesh","type":"string"},"time":{"default":"0 .. 5s","description":"The time range to solve.","pattern":"^\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*\\s*..\\s*\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","title":"Time","type":"string"},"time_step":{"$ref":"#/$defs/time","description":"The time step to use.","title":"Time Step"}},"required":["equations","mesh","element","time_step"],"title":"Solve","type":"object"},"Unknown":{"description":"Represents an unknown to be solved in the PDE.","properties":{"boundary":{"$ref":"#/$defs/UnknownProperty","default":0,"description":"The boundary condition of the unknown.","title":"Boundary Condition"},"derivative":{"anyOf":[{"$ref":"#/$defs/Unknown"},{"type":"null"}],"description":"The time derivative's conditions of the unknown.\nThe number of derivative specified should match the max time order of the equations - 1.\n(ie. an equation of order 2 in time needs one derivative specified)","title":"Time Derivative Conditions"},"initial":{"$ref":"#/$defs/UnknownProperty","default":0,"description":"The initial value of the unknown.","title":"Initial Condition"}},"title":"Unknown","type":"object"},"UnknownProperty":{"anyOf":[{"format":"int64","type":"integer"},{"format":"double","type":"number"},{"description":"Function name referencing one of the globally defined functions.","type":"string"}]},"area":{"description":"A area.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Area"},"diffusion_coefficient":{"description":"A diffusion coefficient.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Diffusion Coefficient"},"length":{"description":"A length.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Length"},"mass":{"description":"A mass.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Mass"},"speed":{"description":"A speed.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Speed"},"temperature":{"description":"A temperature.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Temperature"},"time":{"description":"A time.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Time"},"volume":{"description":"A volume.","oneOf":[{"pattern":"^\\s*(reference|ref)?\\s*([+-]?[\\d_ ]*\\.?[\\d_ ]+?(?:e(?:\\+|-)?[.\\d]+)?)[ \\t]*([^\\d\\s.](?:.*?[^.])?)?\\s*$","type":"string"},{"type":"number"}],"title":"Volume"}},"$schema":"https://json-schema.org/draft/2020-12/schema","description":"The input schema for Hecate.","properties":{"equations":{"$ref":"#/$defs/Map%3Cstring,%20Equation%3E","description":"The available equations.","title":"Equations"},"functions":{"$ref":"#/$defs/Map%3Cstring,%20FunctionDef%3E","description":"The available functions.\nThey can either be simple function expression, or a list of function expression with conditions.","title":"Functions"},"generation":{"$ref":"#/$defs/GenConfig","default":{"debug":false,"matrix_free":false,"mpi":false}},"meshes":{"$ref":"#/$defs/Map%3Cstring,%20MeshEnum%3E","description":"The available meshes.","title":"Meshes"},"parameters":{"$ref":"#/$defs/Map%3Cstring,%20QuantityEnum%3E","description":"The available parameters.","title":"Parameters"},"solve":{"$ref":"#/$defs/Solve"},"unknowns":{"$ref":"#/$defs/Map%3Cstring,%20Unknown%3E","description":"The available unknowns.","title":"Unknowns"}},"required":["meshes","equations","parameters","unknowns","functions","solve"],"title":"Hecate Input Schema","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "Hecate Input Schema". Here are the required top‑level fields: meshes, equations, parameters, unknowns, functions, solve. Return only the valid JSON object.

The time condition for which the function expression is valid.
It can be none, a value or a range.

Time Condition

The x condition for which the function expression is valid.
It can be none, a value or a range.

X Condition

The y condition for which the function expression is valid.
It can be none, a value or a range.

Y Condition

The z condition for which the function expression is valid.
It can be none, a value or a range.

Z Condition

This allows defining custom quantities based on
the seven base quantities of the international system.

CustomQuantity

The finite element to use for the mesh.

Finite Element

A function defined as list of function expression with conditions (time range, space range, etc...).
The function expressions are checked in order. Therefore, in case of an overlap, the first one will be used.
If no function expressions without conditions are specified, a default value of 0 will be assumed.

Conditioned Function

The definition of a function.
This can be an expression or a conditioned function.

Function Definition

A function expression.
Available variables are : t, x, y, z.
Math functions such as cosinus or exponentials are available.
They can be called through their cpp names like log for the logarithm.

Function Expression

The configuration for the generation of the code.

Whether to generate debug code.

Debug

Whether to generate matrix free code.

Matrix Free

Whether to generate MPI code.

MPI

Generation Configuration

The size of each cell.

Resolution

Quantity

The equation(s) to solve and the mesh to use.

The dimension of the problem
Possible values: 1, 2, 3

Dimension

The equation(s) to solve

Equations

The mesh to use

Mesh

The time range to solve.

Time

The time step to use.

Time Step

Solve

Represents an unknown to be solved in the PDE.

The boundary condition of the unknown.

Boundary Condition

The time derivative's conditions of the unknown.
The number of derivative specified should match the max time order of the equations - 1.
(ie. an equation of order 2 in time needs one derivative specified)

Time Derivative Conditions

The initial value of the unknown.

Initial Condition

Unknown

Function name referencing one of the globally defined functions.

A area.

Area

A diffusion coefficient.

Diffusion Coefficient

A length.

Length

A mass.

Mass

A speed.

Speed

A temperature.

Temperature

A time.

Time

A volume.

Volume

The input schema for Hecate.

The available equations.

Equations

The available functions.
They can either be simple function expression, or a list of function expression with conditions.

Functions

The available meshes.

Meshes

The available parameters.

Parameters

The available unknowns.

Unknowns

meshes equations parameters unknowns functions solve

Hecate Input Schema

Provide a JSON object that satisfies the schema "Hecate Input Schema". Here are the required top‑level fields: meshes, equations, parameters, unknowns, functions, solve. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","type":"object","description":"A helm test suite is a collection of tests with the same purpose and scope defined in one single file.","required":["tests"],"additionalProperties":false,"properties":{"suite":{"type":"string","description":"The suite name to show on test result output.","markdownDescription":"**suite** (string) _optional_\n\nThe suite name to show on test result output."},"snapshotId":{"type":"string","description":"A suffix to your snapshot file for the tests.  Ideal for helm tests.","markdownDescription":"**snapshotId** (string) _optional_\n\nA suffix to your snapshot file for the tests.  Ideal for helm tests."},"values":{"$ref":"#/definitions/values"},"set":{"$ref":"#/definitions/set"},"templates":{"$ref":"#/definitions/templates"},"release":{"$ref":"#/definitions/release"},"capabilities":{"$ref":"#/definitions/capabilities"},"chart":{"$ref":"#/definitions/chart"},"kubernetesProvider":{"$ref":"#/definitions/kubernetesProvider"},"tests":{"type":"array","description":"Where you define your test jobs to run","markdownDescription":"**tests** (array<object>) _required_\n\nWhere you define your test jobs to run","required":["asserts"],"items":{"type":"object","properties":{"it":{"type":"string","description":"Define the name of the test with TDD style or any message you like.","markdownDescription":"**it** (string) _recommended_\n\nDefine the name of the test with TDD style or any message you like."},"values":{"$ref":"#/definitions/values"},"set":{"$ref":"#/definitions/set"},"template":{"type":"string","description":"The template file(s) which render the manifest to be tested, default to the list of template file defined in templates of suite file, unless template is defined in the assertion(s).","markdownDescription":"**template** (string) _optional_\n\nThe template file(s) which render the manifest to be tested, default to the list of template file defined in templates of suite file, unless template is defined in the assertion(s)."},"templates":{"$ref":"#/definitions/templates"},"documentIndex":{"$ref":"#/definitions/documentIndex"},"documentSelector":{"$ref":"#/definitions/documentSelector"},"release":{"$ref":"#/definitions/release"},"capabilities":{"$ref":"#/definitions/capabilities"},"chart":{"$ref":"#/definitions/chart"},"asserts":{"type":"array","description":"The assertions to validate the rendered chart.","markdownDescription":"**asserts** (array<object>) _required_\n\nThe assertions to validate the rendered chart.","items":{"type":"object","properties":{"equal":true,"equalRaw":true,"exists":true,"notExists":true,"notEqual":true,"notEqualRaw":true,"matchRegex":true,"matchRegexRaw":true,"notMatchRegex":true,"notMatchRegexRaw":true,"contains":true,"notContains":true,"isNullOrEmpty":true,"isNotNullOrEmpty":true,"isKind":true,"isAPIVersion":true,"isSubset":true,"isNotSubset":true,"hasDocuments":true,"containsDocument":true,"matchSnapshot":true,"matchSnapshotRaw":true,"failedTemplate":true,"notFailedTemplate":true,"lengthEqual":true,"notLengthEqual":true,"not":{"type":"boolean","description":"Set to true to assert contrarily, default to false.","markdownDescription":"**not** (boolean) _optional_\n\nSet to `true` to assert contrarily, default to `false`."},"template":{"type":"string","description":"The template file which render the manifest to be asserted, default to the list of template files defined in templates of the suite file, unless the template is in the testjob.","markdownDescription":"**template** (string) _optional_\n\nThe template file which render the manifest to be asserted, default to the list of template files defined in `templates` of the suite file, unless the template is in the testjob."},"documentIndex":{"$ref":"#/definitions/documentIndex"},"documentSelector":{"$ref":"#/definitions/documentSelector"}},"additionalProperties":false,"oneOf":[{"properties":{"equal":{"type":"object","description":"Assert the value of the specified path is equal to the value.","markdownDescription":"**equal** (object)\n\nAssert the value of the specified path is equal to the value.","required":["path","value"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"value":{"description":"The expected value.","markdownDescription":"**value** (object) _requried_\n\nThe expected value."},"decodeBase64":{"type":"boolean","description":"Decode the base64 before checking.","markdownDescription":"**decodeBase64** (boolean) _optional_\n\nDecode the base64 before checking."}},"additionalProperties":false}},"required":["equal"]},{"properties":{"equalRaw":{"type":"object","description":"Assert equal to the raw value.","markdownDescription":"**equal** (object)\n\nAssert equal to the raw value.","required":["value"],"properties":{"value":{"type":"string","description":"Assert the expected value in a NOTES.txt file.","markdownDescription":"**value** (string) _required_\n\nAssert the expected value in a `NOTES.txt` file."}},"additionalProperties":false}},"required":["equalRaw"]},{"properties":{"exists":{"type":"object","description":"Assert if the specified path exists.","markdownDescription":"**exists** (object)\n\nAssert if the specified path `exists`.","properties":{"path":{"$ref":"#/definitions/assertion/path"}},"additionalProperties":false}},"required":["exists"]},{"properties":{"notExists":{"type":"object","description":"Assert if the specified path NOT exists.","markdownDescription":"**notExists** (object)\n\nAssert if the specified path NOT `exists`.","properties":{"path":{"$ref":"#/definitions/assertion/path"}},"additionalProperties":false}},"required":["notExists"]},{"properties":{"notEqual":{"type":"object","description":"Assert the value of specified path NOT equal to the value.","markdownDescription":"**notEqual** (object)\n\nAssert the value of specified path NOT equal to the value.","required":["path","value"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"value":{"description":"The value expected not to be.","markdownDescription":"**value** (object) _required_\n\nThe value expected not to be."},"decodeBase64":{"type":"boolean","description":"Decode the base64 before checking.","markdownDescription":"**decodeBase64** (boolean) _optional_\n\nDecode the base64 before checking."}},"additionalProperties":false}},"required":["notEqual"]},{"properties":{"notEqualRaw":{"type":"object","description":"Assert equal NOT to the value.","markdownDescription":"**notEqualRaw** (object)\n\nAssert equal NOT to the value.","required":["value"],"properties":{"value":{"type":"string","description":"Assert the expected value in a NOTES.txt file not to be.","markdownDescription":"**value** (string) _required_\n\nAssert the expected value in a `NOTES.txt` file not to be."}},"additionalProperties":false}},"required":["notEqualRaw"]},{"properties":{"matchRegex":{"type":"object","description":"Assert the value of specified path match pattern.","markdownDescription":"**matchRegex** (object)\n\nAssert the value of specified path match pattern.","required":["path","pattern"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"pattern":{"type":"string","description":"The regex pattern to match (without quoting /).","markdownDescription":"**pattern** (string) _required_\n\nThe regex pattern to match (without quoting `/`).","examples":["-my-chart$"]},"decodeBase64":{"type":"boolean","description":"Decode the base64 before checking.","markdownDescription":"**decodeBase64** (boolean) _optional_\n\nDecode the base64 before checking."}},"additionalProperties":false}},"required":["matchRegex"]},{"properties":{"matchRegexRaw":{"type":"object","description":"Assert the value match pattern.","markdownDescription":"**matchRegexRaw** (object)\n\nAssert the value match pattern.","required":["pattern"],"properties":{"pattern":{"type":"string","description":"The regex pattern to match (without quoting /) in a NOTES.txt file.","markdownDescription":"**pattern** (string) _required_\n\nThe regex pattern to match (without quoting `/`) in a `NOTES.txt` file.","examples":["-my-notes$"]}},"additionalProperties":false}},"required":["matchRegexRaw"]},{"properties":{"notMatchRegex":{"type":"object","description":"Assert the value of specified path NOT match pattern.","markdownDescription":"**notMatchRegex** (object)\n\nAssert the value of specified path NOT match pattern.","required":["path","pattern"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"pattern":{"type":"string","description":"The regex pattern NOT to match (without quoting /).","markdownDescription":"**pattern** (string) _required_\n\nThe regex pattern NOT to match (without quoting `/`).","examples":["-my-chart$"]},"decodeBase64":{"type":"boolean","description":"Decode the base64 before checking.","markdownDescription":"**decodeBase64** (boolean) _optional_\n\nDecode the base64 before checking."}},"additionalProperties":false}},"required":["notMatchRegex"]},{"properties":{"notMatchRegexRaw":{"type":"object","description":"Assert the value NOT match pattern.","markdownDescription":"**notMatchRegexRaw** (object)\n\nAssert the value NOT match pattern.","required":["pattern"],"properties":{"pattern":{"type":"string","description":"The regex pattern NOT to match (without quoting /) in a NOTES.txt file.","markdownDescription":"**pattern** (string) _required_\n\nThe regex pattern NOT to match (without quoting `/`) in a `NOTES.txt` file.","examples":["-my-notes$"]}},"additionalProperties":false}},"required":["notMatchRegexRaw"]},{"properties":{"contains":{"type":"object","description":"Assert the array as the value of specified path contains the content.","markdownDescription":"**contains** (object)\n\nAssert the array as the value of specified path contains the content.","required":["path","content"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"content":{"description":"The content to be contained.","markdownDescription":"**content** (object) _required_\n\nThe content to be contained."},"count":{"type":"integer","description":"The count of content to be contained.","markdownDescription":"**count** (integer) _optional_\n\nThe count of content to be contained."},"any":{"type":"boolean","description":"Ignores any other values within the found content.","markdownDescription":"**any** (boolean) _optional_\n\nIgnores any other values within the found content."}},"additionalProperties":false}},"required":["contains"]},{"properties":{"notContains":{"type":"object","description":"Assert the array as the value of specified path NOT contains the content.","markdownDescription":"**notContains** (object)\n\nAssert the array as the value of specified path NOT contains the content.","required":["path","content"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"content":{"description":"The content NOT to be contained.","markdownDescription":"**content** (object) _required_\n\nThe content NOT to be contained."},"any":{"type":"boolean","description":"Ignores any other values within the found content.","markdownDescription":"**any** (boolean) _optional_\n\nIgnores any other values within the found content."}},"additionalProperties":false}},"required":["notContains"]},{"properties":{"isNullOrEmpty":{"type":"object","description":"Assert the value of specified path is null or empty (null, \"\", 0, [], {}).","markdownDescription":"**isNullOrEmpty** (object)\n\nAssert the value of specified path is null or empty (`null`, `\"\"`, `0`, `[]`, `{}`).","properties":{"path":{"$ref":"#/definitions/assertion/path"}},"additionalProperties":false}},"required":["isNullOrEmpty"]},{"properties":{"isNotNullOrEmpty":{"type":"object","description":"Assert the value of specified path is NOT null or empty (null, \"\", 0, [], {}).","markdownDescription":"**isEmpty** (object)\n\nAssert the value of specified path is NOT null or empty (`null`, `\"\"`, `0`, `[]`, `{}`).","properties":{"path":{"$ref":"#/definitions/assertion/path"}},"additionalProperties":false}},"required":["isNotNullOrEmpty"]},{"properties":{"isKind":{"type":"object","description":"Assert the kind value of manifest.","markdownDescription":"**isKind** (object)\n\nAssert the `kind` value of manifest.","properties":{"of":{"type":"string","description":"Expected kind of manifest.","markdownDescription":"**of** (string) _required_\n\nExpected `kind` of manifest."}},"additionalProperties":false}},"required":["isKind"]},{"properties":{"isAPIVersion":{"type":"object","description":"Assert the apiVersion value of manifest.","markdownDescription":"**isAPIVersion** (object)\n\nAssert the `apiVersion` value of manifest.","properties":{"of":{"type":"string","description":"Expected apiVersion of manifest.","markdownDescription":"**of** (string) _required_\n\nExpected `apiVersion` of manifest."}},"additionalProperties":false}},"required":["isAPIVersion"]},{"properties":{"isSubset":{"type":"object","description":"Assert the object as the value of specified path that contains the content.","markdownDescription":"**isSubset** (object)\n\nAssert the object as the value of specified path that contains the content.","required":["path","content"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"content":{"description":"The content to be contained.","markdownDescription":"**content** (object) _required_\n\nThe content to be contained."}},"additionalProperties":false}},"required":["isSubset"]},{"properties":{"isNotSubset":{"type":"object","description":"Assert the object as the value of specified path that NOT contains the content.","markdownDescription":"**isNotSubset** (object)\n\nAssert the object as the value of specified path that NOT contains the content.","required":["path","content"],"properties":{"path":{"$ref":"#/definitions/assertion/path"},"content":{"description":"The content NOT to be contained.","markdownDescription":"**content** (object) _required_\n\nThe content NOT to be contained."}},"additionalProperties":false}},"required":["isNotSubset"]},{"properties":{"hasDocuments":{"type":"object","description":"Assert the documents count rendered by the template specified. The documentIndex option is ignored here.","markdownDescription":"**hasDocuments** (object)\n\nAssert the documents count rendered by the `template` specified. The `documentIndex` option is ignored here.","properties":{"count":{"type":"integer","description":"Expected count of documents rendered.","markdownDescription":"**count** (integer) _required_\n\nExpected count of documents rendered."}},"additionalProperties":false}},"required":["hasDocuments"]},{"properties":{"lengthEqual":{"type":"object","description":"Assert the documents count rendered by the template specified. The documentIndex option is ignored here.","markdownDescription":"**lengthEqual** (object)\n\nAssert the spec count rendered by the `path|paths` specified.","properties":{"count":{"type":"integer","description":"Expected count of spec rendered.","markdownDescription":"**count** (integer) _required_\n\nExpected count of spec rendered."},"path":{"$ref":"#/definitions/assertion/path"},"paths":{"$ref":"#/definitions/assertion/paths"}},"additionalProperties":false}},"required":["lengthEqual"]},{"properties":{"notLengthEqual":{"type":"object","description":"Assert the count rendered by the template specified to be equal. The documentIndex option is ignored here.","markdownDescription":"**notLengthEqual** (object)\n\nAssert the spec count rendered by the `path|paths` specified NOT to be equal.","properties":{"count":{"type":"integer","description":"Expected count of spec rendered.","markdownDescription":"**count** (integer) _required_\n\nExpected count of spec rendered."},"path":{"$ref":"#/definitions/assertion/path"},"paths":{"$ref":"#/definitions/assertion/paths"}},"additionalProperties":false}},"required":["notLengthEqual"]},{"properties":{"containsDocument":{"type":"object","description":"Asserts the documents rendered by the kind and apiVersion specified.","markdownDescription":"**containsDocument** (object)\n\nAsserts the documents rendered by the `kind` and `apiVersion` specified.","properties":{"kind":{"type":"string","description":"Expected kind of manifest.","markdownDescription":"**kind** (string) _required_\n\nExpected `kind` of manifest.","examples":["Deployment"]},"apiVersion":{"type":"string","description":"Expected apiVersion of manifest.","markdownDescription":"**apiVersion** (string) _required_\n\nExpected `apiVersion` of manifest.","examples":["apps/v1"]},"name":{"type":"string","description":"The value of the metadata.name.","markdownDescription":"**name** (string) _optional_\n\nThe value of the `metadata.name`.","examples":["foo"]},"namespace":{"type":"string","description":"The value of the metadata.namespace.","markdownDescription":"**namespace** (string) _optional_\n\nThe value of the `metadata.namespace`.","examples":["bar"]},"any":{"type":"boolean","description":"Ignores any other documents.","markdownDescription":"**any** (boolean) _optional_\n\nIgnores any other documents."}},"additionalProperties":false}},"required":["containsDocument"]},{"properties":{"matchSnapshot":{"type":"object","description":"Assert the value of path is the same as snapshotted last time. ","markdownDescription":"**matchSnapshot** (object)\n\nAssert the value of `path` is the same as snapshotted last time.","properties":{"path":{"$ref":"#/definitions/assertion/path"}},"additionalProperties":false}},"required":["matchSnapshot"]},{"properties":{"matchSnapshotRaw":{"type":"object","description":"Assert the value in the NOTES.txt is the same as snapshotted last time. ","markdownDescription":"**matchSnapshotRaw**\n\nAssert the value in the NOTES.txt is the same as snapshotted last time.","additionalProperties":false}},"required":["matchSnapshotRaw"]},{"properties":{"failedTemplate":{"type":"object","description":"Assert the value of errorMessage is the same as the human readable template error.","markdownDescription":"**failedTemplate** (object)\n\nAssert the value of `errorMessage` is the same as the human readable template error.","properties":{"errorMessage":{"type":"string","description":"The (human readable) errorMessage that should occur.","markdownDescription":"**failedTemplate** (string) _required_\n\nThe (human readable) `errorMessage` that should occur.","examples":["Required value"]}},"additionalProperties":false}},"required":["failedTemplate"]},{"properties":{"notFailedTemplate":{"type":"object","description":"Assert that no failure occurs while templating.","markdownDescription":"**notFailedTemplate** (object)\n\nAssert that no failure occurs while templating.","additionalProperties":false}},"required":["notFailedTemplate"]}]}}},"additionalProperties":false}}},"definitions":{"assertion":{"paths":{"type":"array","description":"The set of paths to assert.Map keys in path containing periods (.) are supported with the use of a jq-like syntax.","markdownDescription":"**templates** (array<string>) _optional_\n. List of specs for length comparison. ","items":{"type":"string"}},"path":{"type":"string","description":"The set path to assert. Map keys in path containing periods (.) are supported with the use of a jq-like syntax.","markdownDescription":"**path** (string) _required_\n\nThe `set` path to assert.\n\nMap keys in path containing periods (.) are supported with the use of a jq-like syntax."}},"capabilities":{"type":"object","description":"Define the {{ .Capabilities }} object.","markdownDescription":"**capabilities** (object) _optional_\n\nDefine the `{{ .Capabilities }}` object.","properties":{"majorVersion":{"type":"integer","description":"The kubernetes major version, default to the major version which is set by helm.","markdownDescription":"**majorVersion** (integer) _optional_\n\nThe kubernetes major version, default to the major version which is set by helm."},"minorVersion":{"type":"integer","description":"The kubernetes minor version, default to the minor version which is set by helm.","markdownDescription":"**minorVersion** (integer) _optional_\n\nThe kubernetes minor version, default to the minor version which is set by helm."},"apiVersions":{"type":"array","description":"A set of versions, default to the versionset used by the defined kubernetes version.","markdownDescription":"**apiVersions** (array<string>) _optional_\n\nA set of versions, default to the versionset used by the defined kubernetes version.","items":{"type":"string"}}},"additionalProperties":false},"chart":{"type":"object","description":"Define the {{ .Chart }} object.","markdownDescription":"**chart** (object) _optional_\n\nDefine the `{{ .Chart }}` object.","properties":{"version":{"type":"string","description":"The semantic version of the chart, default to the version set in the Chart.","markdownDescription":"**version** (string) _optional_\n\nThe semantic version of the chart, default to the version set in the Chart."},"appVersion":{"type":"string","description":"The app-version of the chart, default to the app-version set in the Chart.","markdownDescription":"**appVersion** (string) _optional_\n\nThe app-version of the chart, default to the app-version set in the Chart."}},"additionalProperties":false},"documentIndex":{"type":"integer","description":"The index of rendered documents (divided by ---) to be tested, default to -1, which results in asserting all documents (see Assertion). Generally you can ignored this field if the template file render only one document.","markdownDescription":"**documentIndex** (integer) _optional_\n\nThe index of rendered documents (divided by ---) to be tested, default to -1, which results in asserting all documents (see Assertion).\n\nGenerally you can ignored this field if the template file render only one document."},"documentSelector":{"type":"object","description":"The path of the key to be match and the match value to assert. Using this information, helm-unittest will automatically discover the documentIndex. Generally you can ignored this field if the template file render only one document.","markdownDescription":"**documentSelector** (object) _optional_\n\nThe path of the key to be match and the match value to assert.\n\nUsing this information, helm-unittest will automatically discover the documentIndex.\n\nGenerally you can ignored this field if the template file render only one document.","properties":{"path":{"type":"string","description":"The `documentSelector` path to assert.","markdownDescription":"**path** (string)\n\nThe `documentSelector` path to assert."},"value":{"type":"string","description":"The expected value.","markdownDescription":"**value** (any)\n\nThe expected value."}},"required":["path","value"],"additionalProperties":false},"kubernetesProvider":{"type":"object","description":"Define Kubernetes resources to fake.","markdownDescription":"**kubernetesProvider**: (object) _optional_\n\nDefine Kubernetes resources to fake.","properties":{"scheme":{"type":"object","description":"Define the Kubernetes schema to fake","markdownDescription":"**scheme**: (object)\n\nDefine the Kubernetes schema to fake"},"objects":{"type":"array","description":"Define the Kubernetes objects to fake","markdownDescription":"**objects**: (array of objects)\n\nDefine the Kubernetes objects to fake","minItems":1,"items":{"type":"object"}}},"required":["scheme","objects"]},"release":{"type":"object","description":"Define the {{ .Release }} object.","markdownDescription":"**release** (object) _optional_\n\nDefine the `{{ .Release }}` object.","properties":{"name":{"type":"string","description":"The release name, default to \"RELEASE-NAME\".","markdownDescription":"**name** (string) _optional_\n\nThe release name, default to `\"RELEASE-NAME\"`."},"namespace":{"type":"string","description":"The namespace which release be installed to, default to \"NAMESPACE\".","markdownDescription":"**namespace** (string) _optional_\n\nThe namespace which release be installed to, default to `\"NAMESPACE\"`."},"revision":{"type":"integer","description":"The revision of current build, default to 0.","markdownDescription":"**revision** (integer) _optional_\n\nThe revision of current build, default to `0`."},"upgrade":{"type":"boolean","description":"Whether the build is an upgrade, default to false.","markdownDescription":"**upgrade** (boolean) _optional_\n\nWhether the build is an upgrade, default to `false`."}},"additionalProperties":false},"templates":{"type":"array","description":"The template files scope to test in this suite. The full chart will be rendered, however only the listed templates are filtered for validation. Template files that are put in a templates sub-folder can be addressed with a linux path separator. Also the templates/ can be omitted. Partial templates (which are prefixed with and _) are added automatically even if it is in a templates sub-folder, you don't need to add them again.","markdownDescription":"**templates** (array<string>) _recommended_\n\nThe template files scope to test in this suite. The full chart will be rendered, however only the listed templates are filtered for validation.\n\n Template files that are put in a templates sub-folder can be addressed with a linux path separator. Also the `templates/` can be omitted.\n\nPartial templates (which are prefixed with and _) are added automatically even if it is in a templates sub-folder, you don't need to add them again.","items":{"type":"string"}},"set":{"type":"object","description":"Set the values directly in the suite file. The key is the value path with the format just like --set option of helm install, for example image.pullPolicy. The value is anything you want to set to the path specified by the key, which can be even an array or an object.","markdownDescription":"**set** (object) _optional_\n\nSet the values directly in the suite file. The key is the value path with the format just like `--set` option of `helm install`, for example `image.pullPolicy`.\n\nThe value is anything you want to set to the path specified by the key, which can be even an array or an object.","additionalProperties":true},"values":{"type":"array","description":"The test values to apply for rendering of this chart.","markdownDescription":"**values** (array<string>) _recommended_\n\n.The test values to apply for rendering of this chart.","items":{"type":"string"}}}}
</schema>

[User] Provide a JSON object that satisfies the schema "helm-testsuite". Here are the required top‑level fields: tests. Return only the valid JSON object.

A helm test suite is a collection of tests with the same purpose and scope defined in one single file.

The suite name to show on test result output.

**suite** (string) _optional_

The suite name to show on test result output.

A suffix to your snapshot file for the tests.  Ideal for helm tests.

**snapshotId** (string) _optional_

A suffix to your snapshot file for the tests.  Ideal for helm tests.

Where you define your test jobs to run

**tests** (array<object>) _required_

Where you define your test jobs to run

Define the name of the test with TDD style or any message you like.

**it** (string) _recommended_

Define the name of the test with TDD style or any message you like.

**template** (string) _optional_

The template file(s) which render the manifest to be tested, default to the list of template file defined in templates of suite file, unless template is defined in the assertion(s).

The assertions to validate the rendered chart.

**asserts** (array<object>) _required_

The assertions to validate the rendered chart.

Set to true to assert contrarily, default to false.

**not** (boolean) _optional_

Set to `true` to assert contrarily, default to `false`.

The template file which render the manifest to be asserted, default to the list of template files defined in templates of the suite file, unless the template is in the testjob.

**template** (string) _optional_

The template file which render the manifest to be asserted, default to the list of template files defined in `templates` of the suite file, unless the template is in the testjob.

Assert the value of the specified path is equal to the value.

**equal** (object)

Assert the value of the specified path is equal to the value.

The expected value.

**value** (object) _requried_

The expected value.

Decode the base64 before checking.

**decodeBase64** (boolean) _optional_

Decode the base64 before checking.

Assert equal to the raw value.

**equal** (object)

Assert equal to the raw value.

Assert the expected value in a NOTES.txt file.

**value** (string) _required_

Assert the expected value in a `NOTES.txt` file.

Assert if the specified path exists.

**exists** (object)

Assert if the specified path `exists`.

Assert if the specified path NOT exists.

**notExists** (object)

Assert if the specified path NOT `exists`.

Assert the value of specified path NOT equal to the value.

**notEqual** (object)

Assert the value of specified path NOT equal to the value.

The value expected not to be.

**value** (object) _required_

The value expected not to be.

Decode the base64 before checking.

Assert equal NOT to the value.

**notEqualRaw** (object)

Assert equal NOT to the value.

Assert the expected value in a NOTES.txt file not to be.

**value** (string) _required_

Assert the expected value in a `NOTES.txt` file not to be.

Assert the value of specified path match pattern.

**matchRegex** (object)

Assert the value of specified path match pattern.

The regex pattern to match (without quoting /).

**pattern** (string) _required_

The regex pattern to match (without quoting `/`).

Decode the base64 before checking.

Assert the value match pattern.

**matchRegexRaw** (object)

Assert the value match pattern.

The regex pattern to match (without quoting /) in a NOTES.txt file.

**pattern** (string) _required_

The regex pattern to match (without quoting `/`) in a `NOTES.txt` file.

Assert the value of specified path NOT match pattern.

**notMatchRegex** (object)

Assert the value of specified path NOT match pattern.

The regex pattern NOT to match (without quoting /).

**pattern** (string) _required_

The regex pattern NOT to match (without quoting `/`).

Decode the base64 before checking.

Assert the value NOT match pattern.

**notMatchRegexRaw** (object)

Assert the value NOT match pattern.

The regex pattern NOT to match (without quoting /) in a NOTES.txt file.

**pattern** (string) _required_

The regex pattern NOT to match (without quoting `/`) in a `NOTES.txt` file.

Assert the array as the value of specified path contains the content.

**contains** (object)

Assert the array as the value of specified path contains the content.

The content to be contained.

**content** (object) _required_

The content to be contained.

The count of content to be contained.

**count** (integer) _optional_

The count of content to be contained.

Ignores any other values within the found content.

**any** (boolean) _optional_

Ignores any other values within the found content.

Assert the array as the value of specified path NOT contains the content.

**notContains** (object)

Assert the array as the value of specified path NOT contains the content.

The content NOT to be contained.

**content** (object) _required_

The content NOT to be contained.

Assert the value of specified path is null or empty (null, "", 0, [], {}).

**isNullOrEmpty** (object)

Assert the value of specified path is null or empty (`null`, `""`, `0`, `[]`, `{}`).

Assert the value of specified path is NOT null or empty (null, "", 0, [], {}).

**isEmpty** (object)

Assert the value of specified path is NOT null or empty (`null`, `""`, `0`, `[]`, `{}`).

Assert the kind value of manifest.

**isKind** (object)

Assert the `kind` value of manifest.

Expected kind of manifest.

**of** (string) _required_

Expected `kind` of manifest.

Assert the apiVersion value of manifest.

**isAPIVersion** (object)

Assert the `apiVersion` value of manifest.

Expected apiVersion of manifest.

**of** (string) _required_

Expected `apiVersion` of manifest.

Assert the object as the value of specified path that contains the content.

**isSubset** (object)

Assert the object as the value of specified path that contains the content.

The content to be contained.

**isNotSubset** (object)

Assert the object as the value of specified path that NOT contains the content.

The content NOT to be contained.

Assert the documents count rendered by the template specified. The documentIndex option is ignored here.

**hasDocuments** (object)

Assert the documents count rendered by the `template` specified. The `documentIndex` option is ignored here.

Expected count of documents rendered.

**count** (integer) _required_

Expected count of documents rendered.

**lengthEqual** (object)

Assert the spec count rendered by the `path|paths` specified.

Expected count of spec rendered.

**count** (integer) _required_

Expected count of spec rendered.

Assert the count rendered by the template specified to be equal. The documentIndex option is ignored here.

**notLengthEqual** (object)

Assert the spec count rendered by the `path|paths` specified NOT to be equal.

Expected count of spec rendered.

Asserts the documents rendered by the kind and apiVersion specified.

**containsDocument** (object)

Asserts the documents rendered by the `kind` and `apiVersion` specified.

Expected kind of manifest.

**kind** (string) _required_

Expected `kind` of manifest.

Expected apiVersion of manifest.

**apiVersion** (string) _required_

Expected `apiVersion` of manifest.

The value of the metadata.name.

**name** (string) _optional_

The value of the `metadata.name`.

The value of the metadata.namespace.

**namespace** (string) _optional_

The value of the `metadata.namespace`.

Ignores any other documents.

**any** (boolean) _optional_

Ignores any other documents.

Assert the value of path is the same as snapshotted last time.

**matchSnapshot** (object)

Assert the value of `path` is the same as snapshotted last time.

Assert the value in the NOTES.txt is the same as snapshotted last time.

**matchSnapshotRaw**

Assert the value in the NOTES.txt is the same as snapshotted last time.

Assert the value of errorMessage is the same as the human readable template error.

**failedTemplate** (object)

Assert the value of `errorMessage` is the same as the human readable template error.

The (human readable) errorMessage that should occur.

**failedTemplate** (string) _required_

The (human readable) `errorMessage` that should occur.

Assert that no failure occurs while templating.

**notFailedTemplate** (object)

Assert that no failure occurs while templating.

The set of paths to assert.Map keys in path containing periods (.) are supported with the use of a jq-like syntax.

**templates** (array<string>) _optional_
. List of specs for length comparison.

The set path to assert. Map keys in path containing periods (.) are supported with the use of a jq-like syntax.

**path** (string) _required_

The `set` path to assert.

Map keys in path containing periods (.) are supported with the use of a jq-like syntax.

Define the {{ .Capabilities }} object.

**capabilities** (object) _optional_

Define the `{{ .Capabilities }}` object.

**majorVersion** (integer) _optional_

The kubernetes major version, default to the major version which is set by helm.

**minorVersion** (integer) _optional_

The kubernetes minor version, default to the minor version which is set by helm.

**apiVersions** (array<string>) _optional_

A set of versions, default to the versionset used by the defined kubernetes version.

Define the {{ .Chart }} object.

**chart** (object) _optional_

Define the `{{ .Chart }}` object.

The semantic version of the chart, default to the version set in the Chart.

**version** (string) _optional_

The semantic version of the chart, default to the version set in the Chart.

The app-version of the chart, default to the app-version set in the Chart.

**appVersion** (string) _optional_

The app-version of the chart, default to the app-version set in the Chart.

**documentIndex** (integer) _optional_

The index of rendered documents (divided by ---) to be tested, default to -1, which results in asserting all documents (see Assertion).

Generally you can ignored this field if the template file render only one document.

**documentSelector** (object) _optional_

The path of the key to be match and the match value to assert.

Using this information, helm-unittest will automatically discover the documentIndex.

Generally you can ignored this field if the template file render only one document.

The `documentSelector` path to assert.

**path** (string)

The `documentSelector` path to assert.

The expected value.

Define Kubernetes resources to fake.

**kubernetesProvider**: (object) _optional_

Define Kubernetes resources to fake.

Define the Kubernetes schema to fake

**scheme**: (object)

Define the Kubernetes schema to fake

Define the Kubernetes objects to fake

**objects**: (array of objects)

Define the Kubernetes objects to fake

Define the {{ .Release }} object.

**release** (object) _optional_

Define the `{{ .Release }}` object.

The release name, default to "RELEASE-NAME".

**name** (string) _optional_

The release name, default to `"RELEASE-NAME"`.

The namespace which release be installed to, default to "NAMESPACE".

**namespace** (string) _optional_

The namespace which release be installed to, default to `"NAMESPACE"`.

The revision of current build, default to 0.

**revision** (integer) _optional_

The revision of current build, default to `0`.

Whether the build is an upgrade, default to false.

**upgrade** (boolean) _optional_

Whether the build is an upgrade, default to `false`.

The template files scope to test in this suite. The full chart will be rendered, however only the listed templates are filtered for validation. Template files that are put in a templates sub-folder can be addressed with a linux path separator. Also the templates/ can be omitted. Partial templates (which are prefixed with and _) are added automatically even if it is in a templates sub-folder, you don't need to add them again.

**templates** (array<string>) _recommended_

The template files scope to test in this suite. The full chart will be rendered, however only the listed templates are filtered for validation.

 Template files that are put in a templates sub-folder can be addressed with a linux path separator. Also the `templates/` can be omitted.

Partial templates (which are prefixed with and _) are added automatically even if it is in a templates sub-folder, you don't need to add them again.

Set the values directly in the suite file. The key is the value path with the format just like --set option of helm install, for example image.pullPolicy. The value is anything you want to set to the path specified by the key, which can be even an array or an object.

**set** (object) _optional_

Set the values directly in the suite file. The key is the value path with the format just like `--set` option of `helm install`, for example `image.pullPolicy`.

The value is anything you want to set to the path specified by the key, which can be even an array or an object.

The test values to apply for rendering of this chart.

**values** (array<string>) _recommended_

.The test values to apply for rendering of this chart.

Provide a JSON object that satisfies the schema "helm-testsuite". Here are the required top‑level fields: tests. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/helmfile.json","definitions":{"repository":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"url":{"type":"string"},"certFile":{"type":"string"},"keyFile":{"type":"string"},"caFile":{"type":"string"},"username":{"type":"string"},"password":{"type":"string"},"oci":{"type":"boolean"},"passCredentials":{"type":"boolean"}}},"helmDefaults":{"type":"object","description":"Default values to set for args along with dedicated keys that can be set by contributors, cli args take precedence over these.","properties":{"kubeContext":{"type":"string","description":"Dedicated default key for kube-context (--kube-context)."},"cleanupOnFail":{"type":"boolean","description":"When true, cleans up any new resources created during a failed release.","default":false},"args":{"type":"array","items":{"anyOf":[{"type":"string"}]}},"verify":{"type":"boolean","description":"Verify the chart before upgrading (only works with packaged charts not directories).","default":false},"wait":{"type":"boolean","description":"Wait for k8s resources via --wait.","default":false},"waitForJobs":{"type":"boolean","description":"If true and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout","default":false},"timeout":{"type":"number","description":"Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness)","default":300},"recreatePods":{"type":"boolean","description":"Performs pods restart for the resource if applicable.","default":false},"force":{"type":"boolean","description":"Forces resource update through delete/recreate if needed.","default":false},"historyMax":{"type":"number","description":"Limit the maximum number of revisions saved per release. Use 0 for no limit.","default":10},"createNamespace":{"type":"boolean","description":"When using helm 3.2+, automatically create release namespaces if they do not exist.","default":true},"devel":{"type":"boolean","description":"If used with charts museum allows to pull unstable charts for deployment, for example: if 1.2.3 and 1.2.4-dev versions exist and set to true, 1.2.4-dev will be pulled (default false)","default":false},"reuseValues":{"type":"boolean","description":"If set to true, reuses the last release's values and merges them with ones provided in helmfile.","default":false},"skipDeps":{"description":"When set to `true`, skips running `helm dep up` and `helm dep build` on this release's chart.","type":"boolean","default":false},"cascade":{"type":"string","description":"Cascade `--cascade` to helmv3 delete, available values: background, foreground, or orphan.","default":"background","enum":["background","foreground","orphan"]},"postRenderer":{"type":"string","description":"Propagate `--post-renderer` to helmv3 template and helm install.","examples":["path/to/postRenderer"]},"insecureSkipTLSVerify":{"type":"boolean","description":"Is true if the TLS verification should be skipped when fetching remote chart.","default":false}}},"release":{"type":"object","properties":{"name":{"type":"string","description":"The name of the release."},"namespace":{"type":"string","description":"The namespace to install the release into."},"chart":{"description":"The chart name to be installed. The chart name can be either: 1) a chart reference: https://helm.sh/docs/topics/charts/#chart-references, 2) a path to a directory containing a chart, 3) a path to a packaged chart, or 4) a URL.","type":"string"},"atomic":{"type":"boolean","description":"Restores previous state in case of failed release.","default":false},"cleanupOnFail":{"type":"boolean","description":"When true, cleans up any new resources created during a failed release.","default":false},"kubeContext":{"type":"string","description":"--kube-context to be passed to helm commands.\nDefaults tp an empty string, which means the standard kubeconfig, either ~/kubeconfig or the file pointed by $KUBECONFIG environment variable)","default":""},"condition":{"type":"string","description":"Wen set, helmfile will only attempt to install the release if the condition is true"},"createNamespace":{"type":"boolean","description":"When using helm 3.2+, automatically create release namespaces if they do not exist.","default":true},"devel":{"type":"boolean","description":"If used with charts museum allows to pull unstable charts for deployment, for example: if 1.2.3 and 1.2.4-dev versions exist and set to true, 1.2.4-dev will be pulled.","default":false},"disableValidation":{"description":"Disables validation of the rendered templates before releasing.","type":"boolean","default":false},"disableValidationOnInstall":{"type":"boolean","description":"Passes --disable-validation to helm 3 diff plugin, this requires diff plugin >= 3.1.2","default":false},"disableOpenAPIValidation":{"type":"boolean","description":"Passes --disable-openapi-validation to helm 3 diff plugin, this requires diff plugin >= 3.1.2","default":false},"historyMax":{"type":"number","description":"Limit the maximum number of revisions saved per release. Use 0 for no limit.","default":10},"skipDeps":{"description":"When set to `true`, skips running `helm dep up` and `helm dep build` on this release's chart.","type":"boolean","default":false},"cascade":{"type":"string","description":"Cascade `--cascade` to helmv3 delete, available values: background, foreground, or orphan","default":"background","enum":["background","foreground","orphan"]},"postRenderer":{"type":"string","description":"Propagate `--post-renderer` to helmv3 template and helm install.","examples":["path/to/postRenderer"]},"insecureSkipTLSVerify":{"type":"boolean","description":"Is true if the TLS verification should be skipped when fetching remote chart","default":false},"hooks":{"description":"Hooks allow to trigger actions at certain points in helm's lifecycle.","type":"array","items":{"$ref":"#/definitions/hook"}},"installed":{"description":"Set `false` to uninstall this release on sync.","default":true,"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"object"}]},"labels":{"$ref":"#/definitions/map"},"missingFileHandler":{"$ref":"#/definitions/missingFileHandler","type":"string"},"secrets":{"type":"array","description":"Will attempt to decrypt it using helm-secrets plugin","items":{"type":"string"}},"inherit":{"type":"array","description":"Inherit from one or more release templates","items":{"type":"object","properties":{"template":{"type":"string"},"except":{"type":"array","items":{"type":"string"}}},"required":["template"]}},"set":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"name":{"type":"string"},"file":{"type":"string"}}},{"type":"object","properties":{"name":{"type":"string"},"values":{"type":"array","items":{"anyOf":[{"type":"number"}]}}}},{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"}}}]}},"timeout":{"type":"number","description":"Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness)","default":300},"recreatePods":{"type":"boolean","description":"Performs pods restart for the resource if applicable","default":false},"force":{"type":"boolean","description":"Forces resource update through delete/recreate if needed.","default":false},"values":{"type":"array","items":{"anyOf":[{"type":"string"},{"$ref":"#/definitions/map"}]}},"verify":{"type":"boolean"},"version":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"integer"}]},"wait":{"type":"boolean","description":"Wait for k8s resources via --wait.","default":false},"waitForJobs":{"type":"boolean","description":"If set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout.","default":false}},"required":["name"],"oneOf":[{"required":["chart"]},{"required":["inherit"]}]},"helmfile":{"anyOf":[{"type":"string"},{"type":"object","required":["path"],"properties":{"path":{"type":"string"},"selectors":{"type":"array","items":{"anyOf":[{"type":"string"}]}},"values":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","properties":{"key1":{"type":"string"}}}]}}}}]},"missingFileHandler":{"type":"string","enum":["Error","Warn","Info","Debug"]},"environment":{"type":"object","properties":{"values":{"type":"array","items":{"anyOf":[{"type":"string"},{"$ref":"#/definitions/map"}]}},"secrets":{"type":"array","items":{"type":"string"}},"missingFileHandler":{"$ref":"#/definitions/missingFileHandler"},"kubeContext":{"type":"string"}}},"hook":{"type":"object","properties":{"events":{"type":"array","items":{"type":"string","enum":["prepare","preapply","presync","preuninstall","postuninstall","postsync","cleanup"]}},"showlogs":{"type":"boolean"},"command":{"type":"string"},"args":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"string"}]}}}},"map":{"type":"object","patternProperties":{"[a-zA-Z\\d_-]+":{"anyOf":[{"type":"object"},{"type":"boolean"},{"type":"string"},{"type":"array"},{"type":"null"},{"type":"integer"}]}}}},"properties":{"apiVersions":{"type":"array","description":"Configure a fixed list of API versions to pass to 'helm template' via the `--api-versions` flag.","items":{"type":"string","examples":["example/v1"]}},"bases":{"type":"array","items":{"anyOf":[{"type":"string"}]}},"environments":{"type":"object","description":"The list of environments managed by helmfile.","default":{"default":{}},"examples":[{"default":{"values":[]}}],"patternProperties":{"[a-zA-Z\\d_-]+":{"$ref":"#/definitions/environment"}}},"commonLabels":{"$ref":"#/definitions/map","type":"object","description":"these labels will be applied to all releases in a Helmfile. Useful in templating if you have a helmfile per environment or customer and don't want to copy the same label to each release"},"helmBinary":{"type":"string","description":"Path to alternative helm binary (--helm-binary)","examples":["path/to/helm3"]},"helmDefaults":{"$ref":"#/definitions/helmDefaults"},"helmfiles":{"type":"array","items":{"$ref":"#/definitions/helmfile"}},"hooks":{"type":"array","items":{"$ref":"#/definitions/hook"}},"missingFileHandler":{"$ref":"#/definitions/missingFileHandler"},"releases":{"type":"array","description":"Helmfile runs various helm commands to converge the current state in the live cluster to the desired state defined here.","items":{"$ref":"#/definitions/release"}},"repositories":{"type":"array","items":{"$ref":"#/definitions/repository"}}},"title":"Helmfile config schema"}
</schema>

[User] Provide a JSON object that satisfies the schema "Helmfile config schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.

Default values to set for args along with dedicated keys that can be set by contributors, cli args take precedence over these.

Dedicated default key for kube-context (--kube-context).

When true, cleans up any new resources created during a failed release.

Verify the chart before upgrading (only works with packaged charts not directories).

Wait for k8s resources via --wait.

If true and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout

Time in seconds to wait for any individual Kubernetes operation (like Jobs for hooks, and waits on pod/pvc/svc/deployment readiness)

Performs pods restart for the resource if applicable.

Forces resource update through delete/recreate if needed.

Limit the maximum number of revisions saved per release. Use 0 for no limit.

When using helm 3.2+, automatically create release namespaces if they do not exist.

If used with charts museum allows to pull unstable charts for deployment, for example: if 1.2.3 and 1.2.4-dev versions exist and set to true, 1.2.4-dev will be pulled (default false)

If set to true, reuses the last release's values and merges them with ones provided in helmfile.

When set to `true`, skips running `helm dep up` and `helm dep build` on this release's chart.

Cascade `--cascade` to helmv3 delete, available values: background, foreground, or orphan.

Propagate `--post-renderer` to helmv3 template and helm install.

Is true if the TLS verification should be skipped when fetching remote chart.

The name of the release.

The namespace to install the release into.

The chart name to be installed. The chart name can be either: 1) a chart reference: https://helm.sh/docs/topics/charts/#chart-references, 2) a path to a directory containing a chart, 3) a path to a packaged chart, or 4) a URL.

Restores previous state in case of failed release.

--kube-context to be passed to helm commands.
Defaults tp an empty string, which means the standard kubeconfig, either ~/kubeconfig or the file pointed by $KUBECONFIG environment variable)

Wen set, helmfile will only attempt to install the release if the condition is true

If used with charts museum allows to pull unstable charts for deployment, for example: if 1.2.3 and 1.2.4-dev versions exist and set to true, 1.2.4-dev will be pulled.

Disables validation of the rendered templates before releasing.

Passes --disable-validation to helm 3 diff plugin, this requires diff plugin >= 3.1.2

Passes --disable-openapi-validation to helm 3 diff plugin, this requires diff plugin >= 3.1.2

Hooks allow to trigger actions at certain points in helm's lifecycle.

Set `false` to uninstall this release on sync.

Will attempt to decrypt it using helm-secrets plugin

Inherit from one or more release templates

Wait for k8s resources via --wait.

If set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout.

prepare preapply presync preuninstall postuninstall postsync cleanup

Configure a fixed list of API versions to pass to 'helm template' via the `--api-versions` flag.

The list of environments managed by helmfile.

these labels will be applied to all releases in a Helmfile. Useful in templating if you have a helmfile per environment or customer and don't want to copy the same label to each release

Path to alternative helm binary (--helm-binary)

Helmfile runs various helm commands to converge the current state in the live cluster to the desired state defined here.

Helmfile config schema

Provide a JSON object that satisfies the schema "Helmfile config schema". Here are the required top‑level fields: none (all optional). Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://json.schemastore.org/hemtt-0.6.2.json","definitions":{"parallel-requires-foreach-to-be-true":{"anyOf":[{"not":{"$ref":"#/definitions/is-parallel-true"}},{"properties":{"foreach":{"enum":[true]}},"required":["foreach"]}]},"is-parallel-true":{"properties":{"parallel":{"enum":[true]}}}},"description":"The hemtt.json or hemtt.toml file is used to configure your HEMTT Project. All examples are done using JSON, but both files support every feature of HEMTT. hemtt.toml will be used if both files are present.","properties":{"name":{"$id":"#/properties/name","type":"string","title":"The Name Schema","default":"","description":"Long name of your project.","examples":["Advanced Banana Environment"],"pattern":"^(.*)$"},"prefix":{"$id":"#/properties/prefix","type":"string","title":"The Prefix Schema","default":"","description":"Prefix used for CBA macros and the release directory name.","examples":["ABE3"],"pattern":"^(.*)$"},"author":{"$id":"#/properties/author","type":"string","title":"The Author Schema","default":"","description":"Author of the project.","examples":["ACE Mod Team"],"pattern":"^(.*)$"},"version":{"$id":"#/properties/version","type":"string","title":"The Version Schema","default":"","description":"HEMTT will look for ```addons/main/script_version.hpp``` and use it for the version number. If you are not using the CBA project structure or do not have that file you can add a version number in the HEMTT project file.","examples":["1.0.0.0"],"pattern":"^(.*)$"},"files":{"$id":"#/properties/files","type":"array","title":"The Files Schema","default":null,"description":"HEMTT will copy the files to the release directory after a successful release build. Supports glob patterns.","items":{"$id":"#/properties/files/items","type":"string","title":"The Items Schema","default":"","examples":["mod.cpp","logo.paa","*.dll"],"pattern":"^(.*)$"}},"include":{"$id":"#/properties/include","type":"array","title":"The Include Schema","default":null,"description":"HEMTT will include matching relative or absolute paths when building.","items":{"$id":"#/properties/include/items","type":"string","title":"The Items Schema","default":"","examples":["./include"],"pattern":"^(.*)$"}},"exclude":{"$id":"#/properties/exclude","type":"array","title":"The Exclude Schema","default":null,"description":"HEMTT will exclude matching files when building.","items":{"$id":"#/properties/exclude/items","type":"string","title":"The Items Schema","default":"","examples":["*.psd","*.png","*.tga"],"pattern":"^(.*)$"}},"optionals":{"$id":"#/properties/optionals","type":"array","title":"The Optionals Schema","default":null,"description":"HEMTT will build the specified addons from the ./optionals folder.","items":{"$id":"#/properties/optionals/items","type":"string","title":"The Items Schema","default":"","examples":["tracers","particles"],"pattern":"^(.*)$"}},"folder_optionals":{"$id":"#/properties/folder_optionals","type":"boolean","title":"The Folder_optionals Schema","description":"HEMTT will by default build optionals into their own mod folders, which can be directly launched by the user. This can be turned off to build optional PBOs directly into optionals folder.","default":false,"examples":[false]},"skip":{"$id":"#/properties/skip","type":"array","title":"The Skip Schema","default":null,"description":"HEMTT will skip building the specified addons.","items":{"$id":"#/properties/skip/items","type":"string","title":"The Items Schema","default":"","examples":["hearing","zeus"],"pattern":"^(.*)$"}},"headerexts":{"$id":"#/properties/headerexts","type":"array","title":"The Headerexts Schema","default":null,"description":"HEMTT will apply specified header extensions to each PBO. Supports templating.","items":{"$id":"#/properties/headerexts/items","type":"string","title":"The Items Schema","default":"","examples":["author=me"],"pattern":"^(.*)$"}},"modname":{"$id":"#/properties/modname","type":"string","title":"The Modname Schema","description":"HEMTT will use the specified mod name (without @) to form @mod folder. Supports templating.","default":"","examples":["my_mod"],"pattern":"^(.*)$"},"keyname":{"$id":"#/properties/keyname","type":"string","title":"The Keyname Schema","description":"HEMTT will use the specified key name for .bikey and .biprivatekey names. Supports templating.","default":"","examples":["my_key"],"pattern":"^(.*)$"},"signame":{"$id":"#/properties/signame","type":"string","title":"The Signame Schema","description":"HEMTT will use the specified signature name as part of the full signature (.bisign) name. Supports templating.","default":"","examples":["my_custom_name"],"pattern":"^(.*)$"},"sigversion":{"$id":"#/properties/sigversion","type":"integer","title":"The Sigversion Schema","description":"HEMTT will use the specified signature version. Currently Supported: V2, V3 (Experimental).","default":2,"examples":[3]},"reuse_private_key":{"$id":"#/properties/reuse_private_key","type":"boolean","title":"The Reuse_private_key Schema","description":"If set to true, HEMTT will use (and reuse) releases/keys/{keyname}.biprivatekey. It will be generated if it doesn't exist. The default behaviour is to generate a new private key each time and discard it immediately. HEMTT strongly recommends that you only reuse the key if you are making a client-side mod where it will not matter if clients are running different versions of the mod.","default":false,"examples":[false]},"postbuild":{"$id":"#/properties/postbuild","type":"array","title":"The Postbuild Schema","default":null,"items":{"$id":"#/properties/postbuild/items","type":"string","title":"The Items Schema","default":"","examples":[""],"pattern":"^(.*)$"}},"prebuild":{"$id":"#/properties/prebuild","type":"array","title":"The Prebuild Schema","default":null,"items":{"$id":"#/properties/prebuild/items","type":"string","title":"The Items Schema","default":"","examples":[""],"pattern":"^(.*)$"}},"releasebuild":{"$id":"#/properties/releasebuild","type":"array","title":"The Releasebuild Schema","default":null,"items":{"$id":"#/properties/releasebuild/items","type":"string","title":"The Items Schema","default":"","examples":[""],"pattern":"^(.*)$"}},"scripts":{"$id":"#/properties/scripts","type":"object","title":"The Scripts Schema","default":null,"additionalProperties":{"$id":"#/properties/scripts/properties/","type":"object","title":"The  Schema","default":null,"properties":{"steps":{"$id":"#/properties/scripts/properties//properties/steps","type":"array","title":"The Steps Schema","default":null,"items":{"$id":"#/properties/scripts/properties//properties/steps/items","type":"string","title":"The Items Schema","default":"","examples":["echo {{addon}} took {{time}} ms to build."],"pattern":"^(.*)$"}},"steps_linux":{"$id":"#/properties/scripts/properties//properties/steps_linux","type":"array","title":"The Steps_linux Schema","default":null,"description":"steps_windows and steps_linux can be used to run different steps on the respective platforms.","items":{"$id":"#/properties/scripts/properties//properties/steps_linux/items","type":"string","title":"The Items Schema","default":"","examples":[""],"pattern":"^(.*)$"}},"steps_windows":{"$id":"#/properties/scripts/properties//properties/steps_windows","type":"array","title":"The Steps_windows Schema","default":null,"description":"steps_windows and steps_linux can be used to run different steps on the respective platforms.","items":{"$id":"#/properties/scripts/properties//properties/steps_windows/items","type":"string","title":"The Items Schema","default":"","examples":[""],"pattern":"^(.*)$"}},"show_output":{"$id":"#/properties/scripts/properties//properties/show_output","type":"boolean","title":"The Show_output Schema","description":"All output is hidden by default. Setting show_output will display the command being executed and its output.","default":false,"examples":[true]},"foreach":{"$id":"#/properties/scripts/properties//properties/foreach","type":"boolean","title":"The Foreach Schema","default":false,"description":"Scripts can be ran for each addons. Inside prebuild the script will be ran for each addon that HEMTT will build, including addons that will be skipped if they are already built. Inside postbuild and releasebuild only addons that were successfully built with be used, excluding addons that were skipped for being up to date.","examples":[true]},"parallel":{"$id":"#/properties/scripts/properties//properties/parallel","type":"boolean","title":"The Parallel Schema","description":"Requires foreach to be true. If a script is thread safe parallel can be used to process multiple addons at a time.","default":false,"examples":[true]}},"allOf":[{"$ref":"#/definitions/parallel-requires-foreach-to-be-true"}]}}},"required":["name","prefix","author"],"title":"The Root Schema","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "The Root Schema". Here are the required top‑level fields: name, prefix, author. Return only the valid JSON object.

The hemtt.json or hemtt.toml file is used to configure your HEMTT Project. All examples are done using JSON, but both files support every feature of HEMTT. hemtt.toml will be used if both files are present.

The Name Schema

Long name of your project.

The Prefix Schema

Prefix used for CBA macros and the release directory name.

The Author Schema

Author of the project.

The Version Schema

HEMTT will look for ```addons/main/script_version.hpp``` and use it for the version number. If you are not using the CBA project structure or do not have that file you can add a version number in the HEMTT project file.

The Files Schema

HEMTT will copy the files to the release directory after a successful release build. Supports glob patterns.

The Items Schema

The Include Schema

HEMTT will include matching relative or absolute paths when building.

The Items Schema

The Exclude Schema

HEMTT will exclude matching files when building.

The Items Schema

The Optionals Schema

HEMTT will build the specified addons from the ./optionals folder.

The Items Schema

The Folder_optionals Schema

HEMTT will by default build optionals into their own mod folders, which can be directly launched by the user. This can be turned off to build optional PBOs directly into optionals folder.

The Skip Schema

HEMTT will skip building the specified addons.

The Items Schema

The Headerexts Schema

HEMTT will apply specified header extensions to each PBO. Supports templating.

The Items Schema

The Modname Schema

HEMTT will use the specified mod name (without @) to form @mod folder. Supports templating.

The Keyname Schema

HEMTT will use the specified key name for .bikey and .biprivatekey names. Supports templating.

The Signame Schema

HEMTT will use the specified signature name as part of the full signature (.bisign) name. Supports templating.

The Sigversion Schema

HEMTT will use the specified signature version. Currently Supported: V2, V3 (Experimental).

The Reuse_private_key Schema

If set to true, HEMTT will use (and reuse) releases/keys/{keyname}.biprivatekey. It will be generated if it doesn't exist. The default behaviour is to generate a new private key each time and discard it immediately. HEMTT strongly recommends that you only reuse the key if you are making a client-side mod where it will not matter if clients are running different versions of the mod.

The Postbuild Schema

The Items Schema

The Prebuild Schema

The Items Schema

The Releasebuild Schema

The Items Schema

The Scripts Schema

The  Schema

The Steps Schema

The Items Schema

echo {{addon}} took {{time}} ms to build.

The Steps_linux Schema

steps_windows and steps_linux can be used to run different steps on the respective platforms.

The Items Schema

The Steps_windows Schema

The Items Schema

The Show_output Schema

All output is hidden by default. Setting show_output will display the command being executed and its output.

The Foreach Schema

Scripts can be ran for each addons. Inside prebuild the script will be ran for each addon that HEMTT will build, including addons that will be skipped if they are already built. Inside postbuild and releasebuild only addons that were successfully built with be used, excluding addons that were skipped for being up to date.

The Parallel Schema

Requires foreach to be true. If a script is thread safe parallel can be used to process multiple addons at a time.

The Root Schema

Provide a JSON object that satisfies the schema "The Root Schema". Here are the required top‑level fields: name, prefix, author. Return only the valid JSON object.


[System]
You are a helpful assistant that answers strictly in JSON. Here's the JSON schema you must adhere to:
<schema>
{"$schema":"http://json-schema.org/draft-04/schema#","additionalProperties":true,"definitions":{"property":{"type":"object","additionalProperties":{"type":["null","string"]}},"link":{"type":"object","properties":{"rel":{"type":"string"},"type":{"type":"string"},"href":{"type":"string"},"template":{"type":"string","format":"uri"},"titles":{"type":"object","properties":{"default":{"type":"string"}},"additionalProperties":{"type":"string"}},"properties":{"$ref":"#/definitions/property"}}}},"id":"https://json.schemastore.org/host-meta.json","properties":{"subject":{"type":"string","format":"uri"},"expires":{"type":"string","format":"date-time"},"aliases":{"type":"array","items":{"type":"string"}},"properties":{"$ref":"#/definitions/property"},"links":{"type":"array","items":{"$ref":"#/definitions/link"}}},"required":["subject"],"title":"JSON schema for host-meta files","type":"object"}
</schema>

[User] Provide a JSON object that satisfies the schema "JSON schema for host-meta files". Here are the required top‑level fields: subject. Return only the valid JSON object.

JSON schema for host-meta files

Provide a JSON object that satisfies the schema "JSON schema for host-meta files". Here are the required top‑level fields: subject. Return only the valid JSON object.