Metadata-Version: 2.4
Name: rigbox
Version: 1.0.2
Summary: Embedded developer's toolbox: a manifest-driven REPL and CLI.
Author-email: Jonathan Bailey <jonathan.bailey@comcast.net>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cmd2<5,>=4.3
Requires-Dist: construct>=2.10
Requires-Dist: jinja2>=3.1.6
Requires-Dist: networkx<4,>=3.4
Requires-Dist: numpy>=1.24
Requires-Dist: pluggy>=1.3
Requires-Dist: pydantic>=2
Requires-Dist: pyserial>=3.5
Requires-Dist: pyyaml>=6
Requires-Dist: rich>=15
Requires-Dist: scipy>=1.10
Requires-Dist: simpleeval>=1.0
Requires-Dist: transitions>=0.9
Requires-Dist: typer>=0.27.3
Provides-Extra: plot
Requires-Dist: matplotlib>=3.7; extra == "plot"
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: matplotlib>=3.7; extra == "dev"
Requires-Dist: ruff>=0.6; extra == "dev"
Requires-Dist: ty==0.0.89; extra == "dev"
Dynamic: license-file

# rigbox

A manifest-driven REPL and CLI toolbox for embedded and DSP developers.

## Setup

Requires Python 3.11 or newer.

```shell
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\ruff.exe check    # lint
.\.venv\Scripts\ty.exe check      # type check
```

## Use

```shell
rigbox init my-project        # create a workspace (rigbox.yaml)
rigbox                        # interactive shell (run from inside a workspace)
rigbox run commands           # list the commands
rigbox run commands --help    # one command's arguments
rigbox run --format json commands
rigbox script workflows\x.yaml --var key=value
```

Output is a human message (or a table for data-only commands) on a terminal and NDJSON when piped.
Select `--format plaintext`, `rich`, `json`, or `ndjson` explicitly when needed.
Human formats fall back to available text or a table of structured data; plaintext output omits styling.
JSON and NDJSON never fall back to human text: human-only results produce an explicit error.
Empty results produce `[]` in JSON or no NDJSON records, without warnings.

### The shell

The shell is a [cmd2](https://github.com/python-cmd2/cmd2) app; every rigbox command is a shell command with the same
arguments and `--help` as `rigbox run`. Tab completes command names, option names, choices and file names. cmd2's own
commands work too:

```shell
rigbox> help                           # commands grouped by area; `help commands` or `commands --help` for one
rigbox> set format json                # print results as JSON (plaintext, rich, json, ndjson, auto)
rigbox> alias create list commands     # then: list
rigbox> commands | findstr workspace   # pipe to a shell command
rigbox> commands > commands.txt        # redirect to a file
rigbox> history                        # what you typed (kept in .rigbox/ inside a workspace)
rigbox> exit                           # or quit, or Ctrl-D
```

The bar under the prompt shows the workspace, open device connections and output format.

## Plugins

See each plugin's README for commands, examples and behavior:

- [Manifests](src/rigbox/plugins/manifests/README.md)
- [Devices and transports](src/rigbox/plugins/device/README.md)
- [State machines](src/rigbox/plugins/statemachine/README.md)
- [Code generation](src/rigbox/plugins/code/README.md)
- [DSP](src/rigbox/plugins/dsp/README.md)
- [Built-in utilities and adding plugins](src/rigbox/plugins/README.md)

## Layout

- `src/rigbox/core/`: framework (registry, parsing, rendering, workspace, workflows, plugin loading)
- `src/rigbox/plugins/`: built-in plugins
- `docs/decisions.md`: architecture decisions and rationale
- `CLAUDE.md`: conventions and preferences for contributors and Claude Code
