Metadata-Version: 2.4
Name: veriova-sdk
Version: 0.2.0
Summary: Python SDK for veriova-Persistent Memory for AI
License: MIT
Project-URL: Homepage, https://veriova.com
Project-URL: Repository, https://github.com/ajibadedapo/veriova
Keywords: ai,llm,memory,context,vector-search
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28.0

# veriova

Python SDK for [veriova](https://veriova.com) — Persistent Memory for AI.

> For the MCP server (Claude, Codex, Cursor), use [`veriova-mcp`](https://www.npmjs.com/package/veriova-mcp) instead.

## Install

```bash
pip install veriova-sdk
```

## Quick start

```python
from veriova import veriova

cv = veriova(api_key="cv_...")

# Push memory candidates
cv.push("my-project", [
    {"type": "decision", "title": "Use PostgreSQL", "content": "Chose pgvector for semantic search.", "importance": 8},
    {"type": "convention", "title": "Snake case filenames", "content": "All source files use snake_case."},
])

# Semantic search
results = cv.search("my-project", "database choice")

# Context pack for LLM injection
ctx = cv.context("my-project", "how do we handle auth?")
print(ctx["pack"])  # inject into your system prompt
```

## API

### Constructor

```python
veriova(api_key, base_url="https://veriova.com", timeout=30)
```

| Param | Default | Description |
|-------|---------|-------------|
| `api_key` | required | Your API key (`cv_...`) |
| `base_url` | `https://veriova.com` | API base URL |
| `timeout` | `30` | Request timeout in seconds |

---

### Projects

```python
cv.projects()                                          # List all projects
cv.create_project(name, slug, description=None)        # Create a project
```

### Memory

```python
cv.push(project_slug, items, source_id=None)           # Push memory candidates
cv.search(project_slug, query, k=10)                   # Semantic search
cv.context(project_slug, query, max_tokens=2000)       # Context pack for LLM injection
cv.list_memory(project_slug, status=None, type=None)   # List items with filters
cv.get_memory(memory_id)                               # Get a single item
cv.verify(memory_id)                                   # Mark as verified
cv.pin(memory_id)                                      # Pin (prevents decay)
cv.deprecate(memory_id)                                # Deprecate an item
cv.re_verify(memory_id)                                # Re-verify an item
cv.supersede(memory_id, new_content)                   # Replace content, link old item
```

**Memory item types:** `decision`, `convention`, `pattern`, `lesson`, `snippet`, `reference`

### Scaffold

```python
cv.scaffold_available()                                # List available templates and skills
cv.scaffold(
    project_slug,
    targets=["all"],       # "claude", "cursor", "codex", "all"
    templates=["core"],    # "core", "strict", "review"
    skills=[],
    dry_run=False,
)
```

### Skills

```python
cv.list_skills()                                       # List account skills
cv.create_skill(
    name, trigger_description, procedure,
    context_keys=None, language=None, tags=None, description=None
)
cv.get_skill(slug)                                     # Get skill with resolved context
cv.install_skill(skill_id)                             # Install from public registry
cv.skill_registry(q=None, language=None, tag=None)     # Browse public registry
```

### Pulse

```python
cv.pulse_profile()                                     # Developer skill profile
cv.pulse_trends(days=30)                               # Engagement trends
cv.pulse_sessions(limit=10)                            # Recent sessions
```

### Health

```python
cv.health()                                            # API health check
```

---

## Error handling

```python
from veriova import veriova
from veriova.client import veriovaError

try:
    cv.push("my-project", items)
except veriovaError as e:
    print(e, e.status_code)
```

## License

MIT
