Metadata-Version: 2.4
Name: replicase
Version: 0.1.0
Summary: Trust infrastructure for scientific AI agents — trace, cite, score.
Project-URL: Homepage, https://replicase.bio
Project-URL: Repository, https://github.com/replicase/replicase
Author: Replicase
License: MIT
Keywords: agents,citations,hallucination,llm,scientific-ai,tracing
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Requires-Dist: httpx<0.29,>=0.27
Requires-Dist: pydantic<3.0,>=2.0
Requires-Dist: typing-extensions>=4.8
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Description-Content-Type: text/markdown

# replicase

Trust infrastructure for scientific AI agents.

```python
import replicase

replicase.init(api_key="rpl_test_...")

@replicase.trace(name="my_research_agent")
async def search(query: str) -> str:
    # ... your agent code ...
    replicase.cite(doi="10.1038/...", title="...", claim="X causes Y")
    return answer
```

Every traced call is captured, citations are NLI-scored against their source,
and results show up in the Replicase dashboard. See the parent repo for full docs.

## Install

```
pip install replicase
```

## Configuration

| Env var | Default | Required | Notes |
|---|---|---|---|
| `REPLICASE_API_KEY` | None | Yes | Your project key |
| `REPLICASE_ENDPOINT` | `https://api.replicase.bio` | No | Override for local dev |

## Privacy

`@replicase.trace` captures function inputs and outputs and ships them to the
API. Built-in regex redaction (default-on) scrubs common API-key prefixes,
JWTs, bearer tokens, emails, US-SSN-shaped, and 13–19 digit card-shaped
substrings. **This is best-effort, not a security boundary** — base64-encoded
secrets, custom-format tokens, and internal hostnames will not be caught.
Scrub at the source for regulated data.

Disable redaction with `replicase.init(redact=False)` (not recommended in prod)
or supply a callable: `replicase.init(redact=my_redactor)`.
