Metadata-Version: 2.4
Name: codex-bot
Version: 0.3.0
Summary: Feature-based Aiogram framework library — reusable infrastructure for Telegram bots
Project-URL: Homepage, https://github.com/codexdlc/codex-bot
Project-URL: Documentation, https://codexdlc.github.io/codex-bot/
Project-URL: Repository, https://github.com/codexdlc/codex-bot
Project-URL: Changelog, https://github.com/codexdlc/codex-bot/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/codexdlc/codex-bot/issues
Author: CodexDLC
License: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: aiogram,bot,framework,telegram
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.12
Requires-Dist: aiogram<4.0,>=3.27.0
Requires-Dist: aiohttp>=3.13.4
Requires-Dist: jinja2>=3.1.0
Requires-Dist: pydantic-settings>=2.0
Requires-Dist: pydantic<3.0,>=2.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: questionary>=2.0.0
Provides-Extra: all
Requires-Dist: aiogram-i18n[runtime]<2.0,>=1.5; extra == 'all'
Requires-Dist: aiosqlite>=0.19.0; extra == 'all'
Requires-Dist: alembic>=1.13.0; extra == 'all'
Requires-Dist: arq>=0.25; extra == 'all'
Requires-Dist: asyncpg>=0.29.0; extra == 'all'
Requires-Dist: codex-platform; extra == 'all'
Requires-Dist: httpx<1.0,>=0.27; extra == 'all'
Requires-Dist: loguru>=0.7.0; extra == 'all'
Requires-Dist: redis<6.0,>=5.0; extra == 'all'
Requires-Dist: sqlalchemy>=2.0; extra == 'all'
Provides-Extra: arq
Requires-Dist: arq>=0.25; extra == 'arq'
Provides-Extra: cli
Requires-Dist: loguru>=0.7.0; extra == 'cli'
Provides-Extra: db
Requires-Dist: aiosqlite>=0.19.0; extra == 'db'
Requires-Dist: alembic>=1.13.0; extra == 'db'
Requires-Dist: asyncpg>=0.29.0; extra == 'db'
Requires-Dist: sqlalchemy>=2.0; extra == 'db'
Provides-Extra: dev
Requires-Dist: aiogram-i18n[runtime]<2.0,>=1.5; extra == 'dev'
Requires-Dist: aiosqlite>=0.19.0; extra == 'dev'
Requires-Dist: alembic>=1.13.0; extra == 'dev'
Requires-Dist: arq>=0.25; extra == 'dev'
Requires-Dist: asyncpg>=0.29.0; extra == 'dev'
Requires-Dist: bandit>=1.7; extra == 'dev'
Requires-Dist: codex-platform; extra == 'dev'
Requires-Dist: detect-secrets>=1.5; extra == 'dev'
Requires-Dist: httpx<1.0,>=0.27; extra == 'dev'
Requires-Dist: loguru>=0.7.0; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pip-audit>=2.7; extra == 'dev'
Requires-Dist: pre-commit>=3.0; extra == 'dev'
Requires-Dist: pygments==2.19.1; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest>=9.0.3; extra == 'dev'
Requires-Dist: redis<6.0,>=5.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Requires-Dist: sqlalchemy>=2.0; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mike>=2.0; extra == 'docs'
Requires-Dist: mkdocs-include-markdown-plugin; extra == 'docs'
Requires-Dist: mkdocs-material>=9.0; extra == 'docs'
Requires-Dist: mkdocs>=1.5; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.24; extra == 'docs'
Provides-Extra: http
Requires-Dist: httpx<1.0,>=0.27; extra == 'http'
Provides-Extra: i18n
Requires-Dist: aiogram-i18n[runtime]<2.0,>=1.5; extra == 'i18n'
Provides-Extra: postgres
Requires-Dist: asyncpg>=0.29.0; extra == 'postgres'
Provides-Extra: redis
Requires-Dist: codex-platform; extra == 'redis'
Requires-Dist: redis<6.0,>=5.0; extra == 'redis'
Provides-Extra: sqlite
Requires-Dist: aiosqlite>=0.19.0; extra == 'sqlite'
Description-Content-Type: text/markdown

# codex-bot

[![PyPI version](https://img.shields.io/pypi/v/codex-bot.svg)](https://pypi.org/project/codex-bot/)
[![Python versions](https://img.shields.io/pypi/pyversions/codex-bot.svg)](https://pypi.org/project/codex-bot/)
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

**codex-bot** is a feature-based framework built on top of [Aiogram 3.x](https://github.com/aiogram/aiogram), providing professional-grade infrastructure for building complex Telegram bot ecosystems.

---

## Install

```bash
# Core framework only
pip install codex-bot

# Include Redis Stream integration
pip install "codex-bot[redis]"
```

## Quick Start

```python
import asyncio
from codex_bot.director import Director
from codex_bot.engine.discovery.service import FeatureDiscoveryService

async def main():
    # Auto-discovery of business features
    discovery = FeatureDiscoveryService(
        installed_features=["profile", "settings"]
    )
    discovery.discover_all()

    # Unified orchestration
    print("Codex-Bot ready for action!")

if __name__ == "__main__":
    asyncio.run(main())
```

## Modules

| Module | Extra | Description |
| :--- | :--- | :--- |
| `base` | - | Immutable DTOs and base orchestrator classes |
| `director` | - | Smart navigation and context management |
| `engine` | - | Convention-based feature discovery service |
| `stream` | `[redis]` | Redis Streams integration for async event handling |
| `fsm` | - | Namespaced FSM with automated garbage collection |

## Documentation

Full documentation with architecture diagrams, API reference, and guides:

**[https://codexdlc.github.io/codex-bot/](https://codexdlc.github.io/codex-bot/)**

## Part of the Codex ecosystem

| Library | Description |
| :--- | :--- |
| [codex-core](https://github.com/codexdlc/codex-core) | Shared DTOs, logging, and security |
| [codex-platform](https://github.com/codexdlc/codex-platform) | Infrastructure: Redis, Workers, Notifications |
| [codex-ai](https://github.com/codexdlc/codex-ai) | Agnostic LLM abstraction layer |
| [codex-services](https://github.com/codexdlc/codex-services) | Domain engines: Booking, Payments, CRM |

Each library is fully standalone — install only what your project needs. Together they form the backbone of **codex-bot** (aiogram) and **codex-django** (Django integration layer).

---

## License
This project is licensed under the **Apache License 2.0**. Developed by **Codex Team**.
