Metadata-Version: 2.4
Name: owa-tools
Version: 0.1.0
Summary: Monorepo workspace for owa-piggy consumer CLIs
Author: Carl Joakim Damsleth
License-Expression: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: build>=1; extra == "dev"
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-cov>=4; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: twine>=5; extra == "dev"
Dynamic: license-file

# owa-tools

Monorepo for the seven `owa-piggy` consumer CLIs: `owa-cal`, `owa-mail`, `owa-graph`, `owa-doctor`, `owa-people`, `owa-sched`, `owa-drive`. Plus the umbrella `owa` discovery binary.

The auth broker `owa-piggy` lives in its own repository. It is the only persistent-secret holder in the suite.

## Status

`owa-tools` is currently unreleased and uses one suite version for all console scripts.

| CLI | Status |
|---|---|
| `owa-cal` | beta |
| `owa-mail` | beta |
| `owa-graph` | beta |
| `owa-doctor` | alpha |
| `owa-people` | alpha |
| `owa-sched` | alpha |
| `owa-drive` | alpha |
| `owa` | umbrella discovery binary |

## Layout

```
owa-tools/
├── owa_cal/         calendar CRUD over Outlook REST
├── owa_mail/        mail CRUD over Outlook REST
├── owa_graph/       Microsoft Graph CLI (verb-first + 14 resource shortcut groups)
├── owa_doctor/      health check across the suite
├── owa_people/      people, directory, contacts (Graph)
├── owa_sched/       free/busy and slot finding (Graph)
├── owa_drive/       OneDrive CRUD (Graph)
├── owa/             umbrella `owa` binary (list, schema, doctor, version)
├── tools/           CI helpers (stdlib check)
├── tests/           per-tool test suites
├── completions/     bash, zsh, fish
└── docs/            per-tool docs
```

## Running

Local dev install:

```bash
python3 -m venv .venv
.venv/bin/pip install -e .[dev]
.venv/bin/owa list
```

Wheel build:

```bash
.venv/bin/python -m build --wheel
```

The wheel contains all eight console scripts (`owa`, `owa-cal`, `owa-mail`, `owa-graph`, `owa-doctor`, `owa-people`, `owa-sched`, `owa-drive`) and they all report the same `owa-tools` suite version.

Test suite:

```bash
.venv/bin/python -m pytest
.venv/bin/coverage run --source=owa_core -m pytest -q
.venv/bin/coverage report --fail-under=95
.venv/bin/python -m pytest --cov --cov-fail-under=90
.venv/bin/python tools/check_stdlib_only.py
.venv/bin/python tools/check_no_secrets.py
.venv/bin/python tools/check_docs_sync.py
.venv/bin/python tools/check_artifacts.py dist/*   # after build
.venv/bin/python tools/check_console_smoke.py      # after build
```

See `RELEASING.md` for the suite tag-and-publish flow.

## More Docs

- `docs/security.md` defines the token, config, redaction, and live-test
  boundaries.
- `docs/agent-integration.md` documents schema discovery, `--agent`, and
  `--err-json`.
- `docs/profile-model.md` explains how `owa-tools` profile aliases map to
  `owa-piggy` profiles.
- `docs/migrating-from-individual-installs.md` walks existing users from
  the legacy per-tool installs to the `owa-tools` suite.

## Conventions

- Stdlib only at runtime, except for the local suite packages and `owa-piggy`.
- JSON on stdout, logs on stderr, `--pretty` for humans.
- `--agent` wraps JSON-compatible output for automation; `--err-json` emits
  structured stderr.
- Auth via `owa-piggy` (subprocess, JSON contract).
- For agents and contributors, start with `AGENTS.md`, then read the nearest
  local `AGENTS.md` for the package or directory being edited.

## License

MIT.
