Metadata-Version: 2.4
Name: maestro-core
Version: 1.5.0
Summary: Core engine for Maestro AI agent — providers, trust layer, tools, conversation engine
Project-URL: Homepage, https://github.com/oke-pro/maestro
Project-URL: Repository, https://github.com/oke-pro/maestro
Author-email: Yann Chappuit <yann@oke.pro>
License: MIT
Keywords: ai,anonymization,llm,multi-provider,privacy,tool-calling,trust-layer
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
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 :: Scientific/Engineering :: Artificial Intelligence
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: anthropic>=0.44.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: openai>=1.60.0
Requires-Dist: pydantic>=2.10.0
Requires-Dist: pyyaml>=6.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Description-Content-Type: text/markdown

# maestro-core

Core engine for Maestro AI agent. Multi-provider, privacy-first.

## Features

- **4 LLM Providers**: Anthropic (Claude), OpenAI (GPT), Google (Gemini), Ollama (local)
- **Trust Layer**: Automatic anonymization of sensitive data (NIR, SIRET, IBAN, emails, names, API keys)
- **Provider Router**: Auto-route to local/cloud based on data sensitivity
- **Conversation Engine**: Turn loop with tool calling
- **Tool Framework**: Base classes + 6 built-in tools (bash, file_read, file_write, file_edit, grep, glob)

## Installation

```bash
pip install maestro-core
```

## Usage

```python
from maestro_core.engine import ConversationEngine
from maestro_core.provider_router import ProviderRouter, RoutingMode
from maestro_core.tools import ToolRegistry
from maestro_core.tools.bash import BashTool
from maestro_core.config import MaestroConfig
from maestro_core.trust.anonymizer import TrustMode

# Setup
config = MaestroConfig()
router = ProviderRouter(config, RoutingMode.AUTO, TrustMode.STANDARD)

tools = ToolRegistry()
tools.register(BashTool())

engine = ConversationEngine(router=router, tools=tools)

# Chat
result = await engine.run_turn("List Python files", model="claude-sonnet-4")
print(result.response_text)
```

## Trust Layer

```python
from maestro_core.trust.anonymizer import Anonymizer, TrustMode

anon = Anonymizer(TrustMode.STANDARD)
safe = anon.anonymize_text("NIR 267041305561777 SIRET 41021468800013")
# → "NIR [NIR_1] SIRET [SIRET_1]"

restored = anon.deanonymize_text(safe)
# → "NIR 267041305561777 SIRET 41021468800013"
```
