Metadata-Version: 2.4
Name: vexis-crewai
Version: 0.1.0
Summary: VEXIS AI Governance adapter for CrewAI — task guardrails, step callbacks, and audit trails for every crew execution
Project-URL: Homepage, https://vexis.io
Project-URL: Documentation, https://docs.vexis.io/integrations/crewai
Project-URL: Repository, https://github.com/disruptivetrends/vexis-crewai
Author-email: VEXIS <sdk@vexis.io>
License-Expression: Apache-2.0
Keywords: ai-governance,audit-trail,crewai,guardrails,task-guardrail,vexis
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: crewai>=0.80.0
Requires-Dist: vexis-sdk-python>=0.5.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Description-Content-Type: text/markdown

# vexis-crewai

VEXIS AI Governance adapter for **CrewAI** — task guardrails, step callbacks, and audit trails for every crew execution.

[![PyPI](https://img.shields.io/pypi/v/vexis-crewai.svg?style=flat-square)](https://pypi.org/project/vexis-crewai/)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg?style=flat-square)](https://opensource.org/licenses/Apache-2.0)

---

Add one guardrail function. Every task output gets checked against your [VEXIS](https://vexis.io) governance policies. PII is caught. Blocked outputs trigger retries. Everything gets an audit trail.

## Installation

```bash
pip install vexis-crewai
```

## Quick Start: Task Guardrail

```python
from crewai import Agent, Task, Crew
from vexis_crewai import vexis_guardrail

# Create VEXIS guardrail
guardrail = vexis_guardrail(api_key="gp_live_xxx")

# Attach to any task
report_task = Task(
    description="Write a customer analysis report",
    expected_output="A report with customer insights",
    agent=analyst_agent,
    guardrail=guardrail,           # ← VEXIS governance
    guardrail_max_retries=2,       # Retry if blocked
)
```

If the agent's output contains PII, secrets, or violates your policies, CrewAI automatically retries the task with VEXIS feedback.

## Quick Start: Step Callback

```python
from vexis_crewai import VexisStepCallback

callback = VexisStepCallback(api_key="gp_live_xxx")

crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    step_callback=callback,  # ← Every step governed
)

result = crew.kickoff(inputs={"topic": "AI Safety"})

# Governance summary
print(f"Checked: {callback.check_count}, Blocked: {callback.blocked_count}")
print(f"Traces: {callback.trace_ids}")
```

## Combined Governance

```python
from vexis_crewai import VexisCrewGovernance

gov = VexisCrewGovernance(api_key="gp_live_xxx")

task = Task(..., guardrail=gov.task_guardrail())
crew = Crew(..., step_callback=gov.step_callback())

result = crew.kickoff(inputs={...})
print(gov.summary())  # {"checks": 12, "blocked": 1, "trace_ids": [...]}
```

## Configuration

```python
guardrail = vexis_guardrail(
    api_key="gp_live_xxx",
    base_url="https://gateway.internal.corp:8080",  # On-prem
    fail_open=False,          # Block on gateway errors (default)
    metadata={"team": "ml"},  # Extra metadata on traces
)
```

## How It Works

| Decision | Guardrail Behavior |
|----------|-------------------|
| `ALLOWED` | `(True, output)` — task proceeds |
| `MODIFIED` | `(True, sanitized_output)` — proceeds with PII redacted |
| `BLOCKED` | `(False, feedback)` — CrewAI retries with VEXIS feedback |

## Links

- [Documentation](https://docs.vexis.io/integrations/crewai)
- [VEXIS Dashboard](https://app.vexis.io)
- [GitHub](https://github.com/disruptivetrends/vexis-crewai)

## License

[Apache 2.0](./LICENSE)
