Metadata-Version: 2.5
Name: yarvelle-core
Version: 0.1.1
Summary: Domain-neutral AI agent runtime, execution engine, and multi-domain scope isolation framework
Author-email: Spectrayan <engineering@spectrayan.com>
License: PolyForm Noncommercial License 1.0.0 and Yarvelle Core Additional Terms
Keywords: agents,ai,encryption,langgraph,local-first,privacy,runtime,scoping,vault
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.12
Requires-Dist: aiosqlite>=0.20.0
Requires-Dist: alembic>=1.13.0
Requires-Dist: argon2-cffi>=23.1.0
Requires-Dist: asyncpg>=0.29.0
Requires-Dist: cryptography>=43.0.0
Requires-Dist: deepagents>=0.7
Requires-Dist: defusedxml>=0.7.1
Requires-Dist: fastapi>=0.115.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: importlib-metadata>=8.0.0; python_version < '3.10'
Requires-Dist: jinja2>=3.1.0
Requires-Dist: keyring>=24.0.0
Requires-Dist: langchain-anthropic>=0.3.0
Requires-Dist: langchain-core>=0.3.0
Requires-Dist: langchain-google-genai>=2.0.0
Requires-Dist: langchain-ollama>=1.1.0
Requires-Dist: langchain-openai>=0.3.0
Requires-Dist: langgraph-checkpoint-sqlite>=2.0.0
Requires-Dist: langgraph>=0.2.0
Requires-Dist: packaging>=23.0
Requires-Dist: pwdlib[argon2]>=0.2.0
Requires-Dist: pydantic-handlebars>=0.2.1
Requires-Dist: pydantic-settings>=2.4.0
Requires-Dist: pydantic>=2.8.0
Requires-Dist: pypdf>=4.0.0
Requires-Dist: python-multipart>=0.0.18
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: spector-client>=0.1.0a4
Requires-Dist: sqlalchemy[asyncio]>=2.0.35
Requires-Dist: sse-starlette>=2.1.0
Requires-Dist: structlog>=24.1.0
Requires-Dist: uvicorn[standard]>=0.30.0
Provides-Extra: dev
Requires-Dist: build>=1.2.0; extra == 'dev'
Requires-Dist: hatchling>=1.25.0; extra == 'dev'
Requires-Dist: import-linter>=2.0; extra == 'dev'
Requires-Dist: licenseheaders>=0.8.8; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
Requires-Dist: pytest-xdist>=3.5.0; extra == 'dev'
Requires-Dist: pytest>=8.3.0; extra == 'dev'
Description-Content-Type: text/markdown

# Yarvelle Core

**Domain-Neutral AI Agent Runtime, Execution Engine & Multi-Domain Scope Isolation Framework**  
Copyright 2026 Spectrayan (https://spectrayan.com)

Licensed under the [PolyForm Noncommercial License 1.0.0](LICENSE) and the [Yarvelle Core Additional Terms](ADDITIONAL-TERMS.md).

---

## Overview

`yarvelle-core` is the domain-neutral execution backbone of the Yarvelle ecosystem. It provides:
1. **Deterministic Agent Runtime**: LangGraph state machine execution, tool execution gating, agent reflection, and contextual follow-up generation.
2. **Pack API v1**: Pluggable domain pack architecture (`pack.yaml`, `PackSpec`) allowing external packs to register specialized tools, routers, safety policies, and database models.
3. **11-Layer Scope Isolation Engine**: Strict multi-domain data isolation (`ScopeContext`, `ScopedSession`, partitioned CAS storage, scoped FTS5 lexical search, memory namespace partitioning, and HKDF-derived vault sub-keys).
4. **Local-First Security & Cryptography**: Envelope encryption keyring vault (PBKDF2/Argon2 KEK, AES-256-GCM DEK), audit hash chaining, and localhost-bound API server.
5. **Conformance Test Suite**: Comprehensive verification framework (`yarvelle_core.conformance`) asserting zero cross-domain leakage across all 11 security layers.

## Architecture

Dependencies flow strictly inward:
```
Applications (Carefold, Yarvelle) ──► Domain Packs (Health, Finance, Kids) ──► Yarvelle Core
```
`yarvelle_core` contains zero domain-specific business logic or terminology.

## Installation

```bash
pip install yarvelle-core
```

For development:
```bash
git clone https://github.com/yarvelle/yarvelle-core.git
cd yarvelle-core
pip install -e ".[dev]"
```

## Running Verification

```bash
# Run unit & isolation tests
pytest tests/

# Verify layer ordering and package boundaries
lint-imports

# Verify zero domain words in core
pytest tests/test_neutral_words_scan.py
```
