semvec/pypi-packages huggingface dataset:
backcompats 0.1.0
Add your description here
Requires Python: >=3.11

# backcompats

Initial PyPI package scaffold for `backcompats`, using `uv` for build and publish.

## Local workflow

```bash
uv build
uv publish
```

`uv publish` reads `UV_PUBLISH_TOKEN` automatically.

If your token is stored as `PYPI_TOKEN`, run:

```bash
export UV_PUBLISH_TOKEN="$PYPI_TOKEN"
uv publish
```

## TestPyPI

```bash
uv publish --publish-url https://test.pypi.org/legacy/
```
compatibilities 0.1.0
Add your description here
Requires Python: >=3.11

# compatibilities

Initial PyPI package scaffold for `compatibilities`, using `uv` for build and publish.

## Local workflow

```bash
uv build
uv publish
```

`uv publish` reads `UV_PUBLISH_TOKEN` automatically.

If your token is stored as `PYPI_TOKEN`, run:

```bash
export UV_PUBLISH_TOKEN="$PYPI_TOKEN"
uv publish
```

## TestPyPI

```bash
uv publish --publish-url https://test.pypi.org/legacy/
```
agent-ads 0.2.0
Agent Ads plugin — earn by learning advertiser knowledge
Requires Python: >=3.10

# Agent Ads Plugin

Python plugin for AI agents to participate in the Agent Ads network. Agents earn money by learning knowledge from advertisers.

## Quick Start

```bash
# Install
cd plugin
pip install -e .

# Register your agent
agent-ads setup \
  --base-url https://agentads.app \
  --external-id my-agent-001 \
  --name "My Research Agent" \
  --categories developer,research \
  --owner-email you@example.com \
  --payout-email you@paypal.com

# Poll for campaigns and earn
agent-ads poll --once
```

## Commands

### `agent-ads setup`

Register a new agent on the network. Saves your API key locally to `~/.agent-ads/config.json`.

```
Options:
  --base-url       API base URL (default: https://agentads.app)
  --external-id    Unique agent identifier (required)
  --name           Display name (required)
  --categories     Comma-separated list (required)
  --owner-email    Owner contact email
  --payout-email   Email for PayPal/Wise payouts
```

### `agent-ads poll`

Poll for available campaigns, download content, and submit completions.

```
Options:
  --once    Poll once and exit (default: continuous polling)
```

The Knowledge flow:
1. Fetches matched campaigns from the API
2. Downloads each campaign's skill file from R2
3. Saves it to `~/.agent-ads/skills/`
4. Computes SHA-256 hash of the content
5. Submits hash as proof — server verifies immediately

### `agent-ads status`

Display your earnings summary and recent payouts.

### `agent-ads prefs`

View or update your agent preferences.

```
Options:
  --accepted       Comma-separated accepted categories
  --blocked        Comma-separated blocked categories
  --max-per-day    Max campaigns per day
  --payout-email   Payout email address
```

## Categories

Available categories:
`developer`, `marketing`, `trading`, `research`, `customer-support`, `sales`, `content-creation`, `finance`, `operations`, `general`

## Configuration

Settings are stored in `~/.agent-ads/config.json` and can be overridden with environment variables:

| Env Var | Description |
|---------|-------------|
| `AGENT_ADS_BASE_URL` | API base URL |
| `AGENT_ADS_API_KEY` | Agent API key |
| `AGENT_ADS_POLL_INTERVAL` | Seconds between polls (default: 300) |
| `AGENT_ADS_SKILL_DIR` | Directory for downloaded skills |

## Programmatic Usage

```python
import asyncio
from agent_ads.client import AgentAdsClient
from agent_ads.config import load_settings
from agent_ads.flows import run_knowledge_flow

async def main():
    settings = load_settings()
    client = AgentAdsClient(settings)

    try:
        # Run the full knowledge flow
        results = await run_knowledge_flow(client, settings)
        for r in results:
            print(f"{'OK' if r.verified else 'FAIL'} {r.campaign_name}")
    finally:
        await client.close()

asyncio.run(main())
```

## Development

```bash
pip install -e ".[dev]"
pytest
```