Metadata-Version: 2.5
Name: maop-orchestrator
Version: 5.3.0
Summary: MAOP - Multi-Agent Orchestration Framework (Python-first, Plan-Execute-Verify)
License: MIT
Requires-Python: >=3.10
Requires-Dist: aiosqlite>=0.20.0
Requires-Dist: alembic>=1.13.0
Requires-Dist: cryptography<51,>=50.0
Requires-Dist: fastapi<0.143,>=0.141.1
Requires-Dist: httpx<1.0,>=0.27.0
Requires-Dist: mmh3==5.3.1
Requires-Dist: numpy<3.0,>=1.24.0
Requires-Dist: packaging>=24.0
Requires-Dist: pydantic-settings==2.15.0
Requires-Dist: pydantic<3.0,>=2.9.0
Requires-Dist: pyjwt>=2.13.0
Requires-Dist: python-dotenv>=1.2.2
Requires-Dist: python-multipart>=0.0.31
Requires-Dist: pyyaml<7.0.0,>=6.0.2
Requires-Dist: sqlite-vec>=0.1.6
Requires-Dist: uvicorn[standard]==0.54.0
Requires-Dist: websockets<17,>=14.0
Provides-Extra: dev
Requires-Dist: aiosqlite>=0.20.0; extra == 'dev'
Requires-Dist: defusedxml>=0.7.1; extra == 'dev'
Requires-Dist: fakeredis>=2.23; extra == 'dev'
Requires-Dist: httpx<1.0,>=0.27.0; extra == 'dev'
Requires-Dist: lxml>=6.1.0; extra == 'dev'
Requires-Dist: mmh3==5.3.1; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pydantic-settings==2.15.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest-rerunfailures>=11.0; extra == 'dev'
Requires-Dist: pytest-timeout>=2.3; extra == 'dev'
Requires-Dist: pytest-xdist>=3.5; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: python-multipart>=0.0.31; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Requires-Dist: types-pyyaml>=6.0; extra == 'dev'
Provides-Extra: enterprise
Requires-Dist: alembic>=1.13; extra == 'enterprise'
Requires-Dist: asyncpg>=0.29; extra == 'enterprise'
Requires-Dist: lxml>=6.1.0; extra == 'enterprise'
Requires-Dist: pika>=1.3; extra == 'enterprise'
Requires-Dist: psycopg[binary,pool]>=3.1; extra == 'enterprise'
Requires-Dist: redis>=5.0; extra == 'enterprise'
Provides-Extra: etcd
Requires-Dist: etcd3>=0.12; (python_version < '3.13') and extra == 'etcd'
Provides-Extra: ml
Requires-Dist: hnswlib>=0.8.0; extra == 'ml'
Requires-Dist: sentence-transformers>=2.0; extra == 'ml'
Provides-Extra: otel
Requires-Dist: opentelemetry-api>=1.20; extra == 'otel'
Requires-Dist: opentelemetry-sdk>=1.20; extra == 'otel'
Provides-Extra: postgresql
Requires-Dist: alembic>=1.13; extra == 'postgresql'
Requires-Dist: asyncpg>=0.29; extra == 'postgresql'
Requires-Dist: pgvector>=0.3; extra == 'postgresql'
Requires-Dist: psycopg2-binary>=2.9; extra == 'postgresql'
Requires-Dist: sqlalchemy[asyncio]>=2.0; extra == 'postgresql'
Provides-Extra: saml
Requires-Dist: xmlsec>=1.3.0; extra == 'saml'
Description-Content-Type: text/markdown

# MAOP (Python service layer)

MAOP 的 Python 服务层包（`maop`）。项目整体说明见仓库根目录 `README.md`。

## 状态与持久化

- 消息队列唯一真源：`data/queue.db`（SQLite）
- 人工审批队列唯一真源：`data/human_queue.db`（SQLite）
- 熔断状态唯一真源：`data/maop.db` 的 `circuit_breaker_state` 表
- `human-queue.json` 为 Python 写入的只读镜像，PowerShell 引擎为遗留层

## 开发 / 测试

```bash
cd py
pip install -e .
pip install mmh3 pytest pytest-cov pydantic-settings
pytest
```

CI 定义见 `.github/workflows/ci.yml`（GitHub Actions：3 平台 × Python 3.12/3.13 矩阵，含 ruff + mypy lint、Docker 构建、pip-audit 安全扫描）。
