README.md

# Altworx Toolbox

**Toolbox** is a convenience library designed to streamline the creation of Altworx scenarios.
It provides a variety of utilities to simplify tasks like managing incidents, using randomness, producing reports, and more.
While scenarios can benefit from the functionality Toolbox offers, its use is entirely optional and not a requirement for
running scenarios within Altworx.

## Installation

Add Toolbox as a dependency in your `mix.exs`:

```elixir
def deps do
  [
    {:toolbox, "~> 5.3", hex: :altworx_toolbox}
  ]
end
```

## Modules overview

* `Toolbox.Workflow`: general-purpose state machine abstraction
* `Toolbox.Incident`: state machine abstraction for managing incidents
* `Toolbox.Incident.IdGenerator`: helper for generating stable incident IDs
* `Toolbox.Random`: helpers for using reproducible randomness inside scenarios
* `Toolbox.Report`: behaviour for sending periodic reports via notifications
* `Toolbox.Utils.Enum` and `Toolbox.Utils.Map`: utility functions for working with enumerables and maps