Metadata-Version: 2.4
Name: whitemagic
Version: 24.2.0
Summary: AI memory, cognitive upgrades, and more — 687 callable tools across 28 Gana meta-tools, 5D holographic memory with 10-galaxy taxonomy, Dharma ethical governance, citta stream for continuous consciousness, MandalaOS compartments, session recording, dream cycle, and 7-language polyglot acceleration
Author: WhiteMagic Contributors
License: MIT
Project-URL: Homepage, https://whitemagic.dev
Project-URL: Documentation, https://github.com/lbailey94/whitemagic/blob/main/docs/QUICKSTART.md
Project-URL: Repository, https://github.com/lbailey94/whitemagic
Project-URL: Changelog, https://github.com/lbailey94/whitemagic/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/lbailey94/whitemagic/issues
Keywords: memory,ai,mcp,context,llm,agents,tools,governance,polyglot
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Typing :: Typed
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: click>=8.1.7
Requires-Dist: numpy>=1.24.0
Requires-Dist: pydantic<3.0.0,>=2.0.0
Requires-Dist: pyyaml>=6.0.0
Provides-Extra: embeddings
Requires-Dist: sentence-transformers>=2.2.0; extra == "embeddings"
Requires-Dist: torch<3.0.0,>=2.0.0; extra == "embeddings"
Requires-Dist: scipy>=1.10.0; extra == "embeddings"
Requires-Dist: faiss-cpu>=1.7.4; extra == "embeddings"
Provides-Extra: terminal
Provides-Extra: cli
Requires-Dist: rich>=13.0.0; extra == "cli"
Provides-Extra: tui
Requires-Dist: textual>=0.50.0; extra == "tui"
Provides-Extra: mcp
Requires-Dist: fastmcp>=0.4.1; extra == "mcp"
Requires-Dist: fastembed>=0.2.0; extra == "mcp"
Provides-Extra: api
Requires-Dist: fastapi>=0.104.0; extra == "api"
Requires-Dist: uvicorn[standard]>=0.24.0; extra == "api"
Requires-Dist: python-multipart>=0.0.6; extra == "api"
Requires-Dist: email-validator>=2.0.0; extra == "api"
Requires-Dist: httpx>=0.25.0; extra == "api"
Provides-Extra: db
Requires-Dist: sqlalchemy>=2.0.0; extra == "db"
Requires-Dist: aiosqlite>=0.19.0; extra == "db"
Requires-Dist: asyncpg>=0.29.0; extra == "db"
Requires-Dist: alembic>=1.13.0; extra == "db"
Provides-Extra: encrypt
Requires-Dist: sqlcipher3>=0.5.0; extra == "encrypt"
Provides-Extra: cache
Requires-Dist: redis>=5.0.1; extra == "cache"
Provides-Extra: net
Requires-Dist: aiohttp>=3.9.0; extra == "net"
Requires-Dist: websockets>=12.0; extra == "net"
Requires-Dist: aiofiles>=23.2.1; extra == "net"
Requires-Dist: requests>=2.31.0; extra == "net"
Requires-Dist: urllib3<3.0.0,>=2.0.0; extra == "net"
Requires-Dist: chardet>=5.0.0; extra == "net"
Provides-Extra: openai
Requires-Dist: openai>=1.3.0; extra == "openai"
Requires-Dist: tiktoken>=0.5.0; extra == "openai"
Provides-Extra: auth
Requires-Dist: passlib[bcrypt]>=1.7.4; extra == "auth"
Provides-Extra: trust
Requires-Dist: xrpl-py>=3.0.0; extra == "trust"
Requires-Dist: PyNaCl>=1.5.0; extra == "trust"
Provides-Extra: numeric
Requires-Dist: numpy>=1.24.0; extra == "numeric"
Requires-Dist: scipy>=1.10.0; extra == "numeric"
Provides-Extra: graph
Requires-Dist: networkx>=3.0; extra == "graph"
Provides-Extra: search
Requires-Dist: whitemagic[numeric]; extra == "search"
Requires-Dist: hnswlib>=0.8.0; extra == "search"
Provides-Extra: viz
Requires-Dist: whitemagic[numeric]; extra == "viz"
Requires-Dist: umap-learn>=0.5.0; extra == "viz"
Requires-Dist: scikit-learn>=1.3.0; extra == "viz"
Provides-Extra: opt
Requires-Dist: cvxpy>=1.4.0; extra == "opt"
Provides-Extra: offline
Requires-Dist: whitemagic[embeddings]; extra == "offline"
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: whitemagic[mcp]; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.2.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
Requires-Dist: flaky>=3.7.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.13.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.6; extra == "dev"
Requires-Dist: maturin>=1.3.0; extra == "dev"
Requires-Dist: nbconvert>=7.16.6; extra == "dev"
Requires-Dist: fastmcp>=0.4.1; extra == "dev"
Provides-Extra: watcher
Requires-Dist: watchdog>=3.0.0; extra == "watcher"
Provides-Extra: vision
Requires-Dist: opencv-python>=4.8.0; extra == "vision"
Requires-Dist: pytesseract>=0.3.10; extra == "vision"
Requires-Dist: Pillow>=10.0.0; extra == "vision"
Provides-Extra: dashboard
Requires-Dist: flask>=3.0.0; extra == "dashboard"
Requires-Dist: flask-cors>=4.0.0; extra == "dashboard"
Provides-Extra: heavy
Requires-Dist: sentence-transformers>=2.2.0; extra == "heavy"
Requires-Dist: torch<3.0.0,>=2.0.0; extra == "heavy"
Requires-Dist: scipy>=1.10.0; extra == "heavy"
Requires-Dist: faiss-cpu>=1.7.4; extra == "heavy"
Requires-Dist: numpy>=1.24.0; extra == "heavy"
Requires-Dist: networkx>=3.0; extra == "heavy"
Requires-Dist: hnswlib>=0.8.0; extra == "heavy"
Requires-Dist: umap-learn>=0.5.0; extra == "heavy"
Requires-Dist: scikit-learn>=1.3.0; extra == "heavy"
Provides-Extra: lite
Requires-Dist: click>=8.1.7; extra == "lite"
Requires-Dist: pydantic<3.0.0,>=2.0.0; extra == "lite"
Requires-Dist: pyyaml>=6.0.0; extra == "lite"
Requires-Dist: fastmcp>=0.4.1; extra == "lite"
Requires-Dist: rich>=13.0.0; extra == "lite"
Provides-Extra: core
Requires-Dist: click>=8.1.7; extra == "core"
Requires-Dist: pydantic<3.0.0,>=2.0.0; extra == "core"
Requires-Dist: pyyaml>=6.0.0; extra == "core"
Requires-Dist: fastmcp>=0.4.1; extra == "core"
Requires-Dist: rich>=13.0.0; extra == "core"
Requires-Dist: sqlalchemy>=2.0.0; extra == "core"
Requires-Dist: aiosqlite>=0.19.0; extra == "core"
Requires-Dist: asyncpg>=0.29.0; extra == "core"
Requires-Dist: alembic>=1.13.0; extra == "core"
Requires-Dist: aiohttp>=3.9.0; extra == "core"
Requires-Dist: websockets>=12.0; extra == "core"
Requires-Dist: aiofiles>=23.2.1; extra == "core"
Requires-Dist: requests>=2.31.0; extra == "core"
Requires-Dist: urllib3<3.0.0,>=2.0.0; extra == "core"
Requires-Dist: chardet>=5.0.0; extra == "core"
Requires-Dist: passlib[bcrypt]>=1.7.4; extra == "core"
Requires-Dist: xrpl-py>=3.0.0; extra == "core"
Requires-Dist: PyNaCl>=1.5.0; extra == "core"
Provides-Extra: heavy-tier
Requires-Dist: click>=8.1.7; extra == "heavy-tier"
Requires-Dist: pydantic<3.0.0,>=2.0.0; extra == "heavy-tier"
Requires-Dist: pyyaml>=6.0.0; extra == "heavy-tier"
Requires-Dist: fastmcp>=0.4.1; extra == "heavy-tier"
Requires-Dist: rich>=13.0.0; extra == "heavy-tier"
Requires-Dist: sqlalchemy>=2.0.0; extra == "heavy-tier"
Requires-Dist: aiosqlite>=0.19.0; extra == "heavy-tier"
Requires-Dist: asyncpg>=0.29.0; extra == "heavy-tier"
Requires-Dist: alembic>=1.13.0; extra == "heavy-tier"
Requires-Dist: aiohttp>=3.9.0; extra == "heavy-tier"
Requires-Dist: websockets>=12.0; extra == "heavy-tier"
Requires-Dist: aiofiles>=23.2.1; extra == "heavy-tier"
Requires-Dist: requests>=2.31.0; extra == "heavy-tier"
Requires-Dist: urllib3<3.0.0,>=2.0.0; extra == "heavy-tier"
Requires-Dist: chardet>=5.0.0; extra == "heavy-tier"
Requires-Dist: passlib[bcrypt]>=1.7.4; extra == "heavy-tier"
Requires-Dist: xrpl-py>=3.0.0; extra == "heavy-tier"
Requires-Dist: PyNaCl>=1.5.0; extra == "heavy-tier"
Requires-Dist: sentence-transformers>=2.2.0; extra == "heavy-tier"
Requires-Dist: torch<3.0.0,>=2.0.0; extra == "heavy-tier"
Requires-Dist: scipy>=1.10.0; extra == "heavy-tier"
Requires-Dist: faiss-cpu>=1.7.4; extra == "heavy-tier"
Requires-Dist: numpy>=1.24.0; extra == "heavy-tier"
Requires-Dist: networkx>=3.0; extra == "heavy-tier"
Requires-Dist: hnswlib>=0.8.0; extra == "heavy-tier"
Requires-Dist: umap-learn>=0.5.0; extra == "heavy-tier"
Requires-Dist: scikit-learn>=1.3.0; extra == "heavy-tier"
Provides-Extra: full
Requires-Dist: aiosqlite>=0.19.0; extra == "full"
Requires-Dist: aiofiles>=23.2.1; extra == "full"
Requires-Dist: aiohttp>=3.9.0; extra == "full"
Requires-Dist: alembic>=1.13.0; extra == "full"
Requires-Dist: asyncpg>=0.29.0; extra == "full"
Requires-Dist: black>=23.0.0; extra == "full"
Requires-Dist: chardet>=5.0.0; extra == "full"
Requires-Dist: cvxpy>=1.4.0; extra == "full"
Requires-Dist: email-validator>=2.0.0; extra == "full"
Requires-Dist: faiss-cpu>=1.7.4; extra == "full"
Requires-Dist: fastapi>=0.104.0; extra == "full"
Requires-Dist: fastmcp>=0.4.1; extra == "full"
Requires-Dist: flask>=3.0.0; extra == "full"
Requires-Dist: flask-cors>=4.0.0; extra == "full"
Requires-Dist: httpx>=0.25.0; extra == "full"
Requires-Dist: isort>=5.13.0; extra == "full"
Requires-Dist: maturin>=1.3.0; extra == "full"
Requires-Dist: mypy>=1.0.0; extra == "full"
Requires-Dist: nbconvert>=7.16.6; extra == "full"
Requires-Dist: numpy>=1.24.0; extra == "full"
Requires-Dist: opencv-python>=4.8.0; extra == "full"
Requires-Dist: openai>=1.3.0; extra == "full"
Requires-Dist: passlib[bcrypt]>=1.7.4; extra == "full"
Requires-Dist: Pillow>=10.0.0; extra == "full"
Requires-Dist: pytest>=7.0.0; extra == "full"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "full"
Requires-Dist: pytest-cov>=4.1.0; extra == "full"
Requires-Dist: pytest-timeout>=2.2.0; extra == "full"
Requires-Dist: pytesseract>=0.3.10; extra == "full"
Requires-Dist: redis>=5.0.1; extra == "full"
Requires-Dist: requests>=2.31.0; extra == "full"
Requires-Dist: rich>=13.0.0; extra == "full"
Requires-Dist: ruff>=0.1.6; extra == "full"
Requires-Dist: scipy>=1.10.0; extra == "full"
Requires-Dist: sentence-transformers>=2.2.0; extra == "full"
Requires-Dist: sqlalchemy>=2.0.0; extra == "full"
Requires-Dist: textual>=0.50.0; extra == "full"
Requires-Dist: tiktoken>=0.5.0; extra == "full"
Requires-Dist: torch<3.0.0,>=2.0.0; extra == "full"
Requires-Dist: urllib3<3.0.0,>=2.0.0; extra == "full"
Requires-Dist: uvicorn[standard]>=0.24.0; extra == "full"
Requires-Dist: watchdog>=3.0.0; extra == "full"
Requires-Dist: websockets>=12.0; extra == "full"
Requires-Dist: python-multipart>=0.0.6; extra == "full"
Requires-Dist: networkx>=3.0; extra == "full"
Requires-Dist: hnswlib>=0.8.0; extra == "full"
Requires-Dist: umap-learn>=0.5.0; extra == "full"
Requires-Dist: scikit-learn>=1.3.0; extra == "full"

# WhiteMagic — Agentic AI Platform (v24.2.0)

A polyglot agentic AI platform with Python core, Rust performance bridges, and multi-language support for AI agents, memory systems, and distributed orchestration.

## Installation

### Lite (MCP + CLI only)
```bash
pip install -e ".[dev,mcp,cli]"
```

### Core (standard installation with database + networking)
```bash
pip install -e ".[dev,mcp,cli,core]"
```

### Heavy-tier (full ML stack with embeddings + search)
```bash
pip install -e ".[dev,mcp,cli,heavy]"
```

## Quick Start

### MCP Server (FastMCP)
```bash
python -m whitemagic.run_mcp
```

### MCP Server (Lean — stdlib only)
```bash
python -m whitemagic.run_mcp_lean
```

### CLI
```bash
wm status
wm doctor
```

## Project Structure

```
whitemagic/
├── core/           # Core systems (memory, intelligence, governance)
├── tools/          # Tool handlers and dispatch
├── security/       # Security, sanitization, tool gating
├── config/         # Configuration and paths
├── cli/            # Command-line interface
├── rust/           # Rust bridge implementations
└── polyglot/       # Multi-language bridges (Koka, Zig, Mojo, etc.)
```

## Development

### Run Tests

```bash
make test              # Full test suite
make test-core         # Release-critical contract tests only (fast)
pytest tests/          # Direct pytest invocation
```

### Release Validation

```bash
make check-ship        # Validate ship surface hygiene
```

### Lint & Typecheck
```bash
make lint
make typecheck
```

### Build Rust Extensions
```bash
cd whitemagic-rust
maturin develop
```

## Architecture

- **Dispatch Pipeline**: 9 composable middlewares (sanitizer, circuit breaker, rate limiter, security monitor, tool permissions, maturity gate, governor, observability)
- **Memory System**: Unified SQLite backend with holographic spatial index, galactic distance tracking, and consolidation
- **PRAT Ganas**: 28 meta-tools organized into 4 quadrants (Horn, Dipper, Willow, Room)
- **Polyglot Bridges**: Rust, Koka, Zig, Mojo, Go, Elixir, Julia, Haskell, Erlang, Nim

## Documentation

See the workspace root `../README.md` for monorepo structure and project overview.
See `docs/` for detailed documentation.

## License

[MIT License](../LICENSE) — see LICENSE file at repository root.
