Metadata-Version: 2.4
Name: wendell
Version: 0.1.0
Summary: Wendell CLI for agent world simulations, Park registration, and run uploads
License: Proprietary
Project-URL: Homepage, https://www.wendellai.com
Project-URL: Repository, https://github.com/croppia/wendellai
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == "dev"

# Wendell CLI

Wendell is a Python CLI for evaluating agents against Wendell-managed worlds and scenario packs.

The first version is advisory by default: it reports scores, captures traces, and returns a successful process exit unless the project explicitly enables blocking gates.

## Intended split

- Wendell system: creates worlds, versions scenario packs, owns rubrics, stores traces, and reports regressions.
- Wendell CI runner: runs in a repo or CI job, fetches or reads a scenario pack, invokes the customer's agent adapter, captures traces, evaluates gates, uploads results, and prints a concise summary.

## Install

```bash
uv tool install wendell
```

Alternative installers:

```bash
pipx install wendell
python3 -m pip install --user wendell
```

The package installs the `wendell` command. It also installs the temporary `local-wendell` alias for existing local dogfood scripts.

## Local development

```bash
cd wendell-ci
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
wendell --help
```

## Login

For local development, store an InkPass API key once:

```bash
wendell login --api-url https://api.wendellai.com --api-key-stdin --validate
wendell auth status
```

Credentials are stored at `~/.config/wendell/credentials.json` by default, or `$WENDELL_CONFIG_HOME/credentials.json` when set. The directory is created with `0700` permissions and the credentials file with `0600` permissions.

CI should continue to use `WENDELL_INKPASS_API_KEY`; environment variables take precedence over stored credentials.

## Minimal config

```toml
project = "support-agent"
mode = "advisory"
api_url = "https://api.wendell.example"
api_key_env = "WENDELL_INKPASS_API_KEY"
world = "world_support_ops_v1"
world_version = "2026-05-08.1"
scenario_pack = "smoke"
scenario_pack_version = "1.0.0"
agent_command = "python examples/simple_cli_agent.py"
upload_traces = true

[gates]
suite_min_score = 0.80
scenario_min_score = 0.75
critical_failures_allowed = 0
```

The intended production flow is:

1. `local-wendell` runs on the developer machine or CI worker.
2. It fetches the pinned world, scenario pack, rubrics, and scoring contract from Wendell.
3. It invokes the agent locally through an adapter such as `agent_command`.
4. It captures local traces, redacts them, and uploads traces/results back to Wendell.
5. Advisory mode exits `0`; blocking mode exits nonzero only when explicitly enabled.

Remote uploads authenticate with an InkPass API key sent as `X-API-Key`. The key needs at least `wendell:worlds:read`, `wendell:runs:create`, and `wendell:runs:read`.

## Local worldsim dogfood config

While Wendell Cloud APIs are still taking shape, the runner can call the existing local `worldsim.services` layer directly:

```toml
project = "workspace-access-agent"
mode = "advisory"
world = "workspace_access_support"
scenario_pack = "smoke"
worldsim_input = "../configs/customer_inputs/workspace_access_support_input.json"
agent = "careful"

[gates]
suite_min_score = 0.80
scenario_min_score = 0.75
critical_failures_allowed = 0
```

Supported local built-in agents are `careful` and `risky`.
