Metadata-Version: 2.5
Name: pytracer-cli
Version: 0.1.0
Summary: pyTracer CLI - run agent test collections locally and in CI.
Author: pyTracer
License-Expression: Apache-2.0
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.6
Requires-Dist: pytracer-replay==0.1.0
Requires-Dist: pytracer-sdk==0.1.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: typer>=0.12
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: pytracer-runner==0.1.0; extra == 'dev'
Requires-Dist: pytracer-stores==0.1.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Provides-Extra: runner
Requires-Dist: pytracer-runner==0.1.0; extra == 'runner'
Provides-Extra: stores
Requires-Dist: pytracer-stores==0.1.0; extra == 'stores'
Description-Content-Type: text/markdown

# pytracer-cli

Layer 6 of pyTracer: a CLI that runs agent **test collections** locally and in CI,
matching exactly what runs in a GitHub Action so there are no environment
surprises. The GitHub Action and GitLab CI templates are thin wrappers around
this command.

```bash
pytracer run tests/collection.yaml            # human summary; exit 1 if any scenario fails
pytracer run tests/collection.yaml --json out.json --junit out.xml --comment pr.md
```

A collection (`collection.yaml`):

```yaml
name: my-agent-tests
scenarios:
  - name: summarize-happy-path
    agent: myapp.agents:run        # import path "module:callable"
    entry: { task: "summarize the doc" }
    trace: traces/summarize.jsonl  # recorded spans (JSONL), relative to this file
    mode: full                     # full | partial | live
    assertions:
      - { type: no_errors }
      - { type: contains, needle: "summary" }
```
