codex-bot 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. codex_bot-0.1.1/.github/workflows/publish.yml +34 -0
  2. {codex_bot-0.1.0 → codex_bot-0.1.1}/.pre-commit-config.yaml +38 -38
  3. {codex_bot-0.1.0 → codex_bot-0.1.1}/CHANGELOG.md +38 -29
  4. {codex_bot-0.1.0 → codex_bot-0.1.1}/CLAUDE.md +48 -48
  5. {codex_bot-0.1.0 → codex_bot-0.1.1}/PKG-INFO +8 -3
  6. {codex_bot-0.1.0 → codex_bot-0.1.1}/README.md +2 -2
  7. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/DOCUMENTATION_STANDARD.md +142 -142
  8. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/README.md +36 -36
  9. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/animation/README.md +39 -39
  10. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/base/README.md +38 -38
  11. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/cli/README.md +38 -38
  12. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/director/README.md +39 -39
  13. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/engine/README.md +41 -41
  14. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/fsm/README.md +38 -38
  15. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/helper/README.md +37 -37
  16. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/redis/README.md +40 -40
  17. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/sender/README.md +41 -41
  18. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/en_EN/architecture/url_signer/README.md +38 -38
  19. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/README.md +36 -36
  20. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/animation/README.md +39 -39
  21. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/base/README.md +38 -38
  22. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/cli/README.md +38 -38
  23. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/director/README.md +39 -39
  24. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/engine/README.md +41 -41
  25. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/fsm/README.md +38 -38
  26. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/helper/README.md +37 -37
  27. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/redis/README.md +40 -40
  28. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/sender/README.md +41 -41
  29. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/ru_RU/architecture/url_signer/README.md +38 -38
  30. {codex_bot-0.1.0 → codex_bot-0.1.1}/project_structure.txt +207 -207
  31. {codex_bot-0.1.0 → codex_bot-0.1.1}/pyproject.toml +7 -0
  32. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/__init__.py +1 -1
  33. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/fsm/state_helper.py +72 -72
  34. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/animation/test_animation_service.py +55 -55
  35. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/base/test_base_orchestrator.py +54 -54
  36. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/base/test_view_dto.py +48 -48
  37. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/conftest.py +42 -42
  38. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/director/test_director.py +54 -54
  39. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/engine/factory/test_bot_builder.py +37 -37
  40. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/engine/http/test_api_client.py +60 -60
  41. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/engine/middlewares/test_throttling.py +62 -62
  42. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/fsm/test_garbage_collector.py +50 -50
  43. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/fsm/test_state_manager.py +48 -48
  44. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/helper/test_context_helper.py +47 -47
  45. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/sender/test_sender_keys.py +16 -16
  46. {codex_bot-0.1.0 → codex_bot-0.1.1}/tests/url_signer/test_url_signer.py +49 -49
  47. {codex_bot-0.1.0 → codex_bot-0.1.1}/.claude/project.md +0 -0
  48. {codex_bot-0.1.0 → codex_bot-0.1.1}/.claude/settings.local.json +0 -0
  49. {codex_bot-0.1.0 → codex_bot-0.1.1}/.github/workflows/docs.yml +0 -0
  50. {codex_bot-0.1.0 → codex_bot-0.1.1}/.gitignore +0 -0
  51. {codex_bot-0.1.0 → codex_bot-0.1.1}/LICENSE +0 -0
  52. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/README.md +0 -0
  53. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/README.md +0 -0
  54. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/animation.md +0 -0
  55. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/base.md +0 -0
  56. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/cli.md +0 -0
  57. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/director.md +0 -0
  58. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/discovery.md +0 -0
  59. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/factory.md +0 -0
  60. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/fsm.md +0 -0
  61. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/helper.md +0 -0
  62. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/http.md +0 -0
  63. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/middlewares.md +0 -0
  64. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/redis.md +0 -0
  65. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/router_builder.md +0 -0
  66. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/sender.md +0 -0
  67. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/api/url_signer.md +0 -0
  68. {codex_bot-0.1.0 → codex_bot-0.1.1}/docs/guide/getting_started.md +0 -0
  69. {codex_bot-0.1.0 → codex_bot-0.1.1}/mkdocs.yml +0 -0
  70. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/animation/__init__.py +0 -0
  71. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/animation/animation_service.py +0 -0
  72. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/base/__init__.py +0 -0
  73. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/base/base_orchestrator.py +0 -0
  74. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/base/context_dto.py +0 -0
  75. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/base/view_dto.py +0 -0
  76. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/cli/__init__.py +0 -0
  77. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/cli/commands.py +0 -0
  78. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/director/__init__.py +0 -0
  79. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/director/director.py +0 -0
  80. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/director/protocols.py +0 -0
  81. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/__init__.py +0 -0
  82. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/discovery/__init__.py +0 -0
  83. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/discovery/service.py +0 -0
  84. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/factory/__init__.py +0 -0
  85. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/factory/bot_builder.py +0 -0
  86. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/http/__init__.py +0 -0
  87. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/http/api_client.py +0 -0
  88. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/i18n/__init__.py +0 -0
  89. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/i18n/locales_compiler.py +0 -0
  90. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/middlewares/__init__.py +0 -0
  91. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/middlewares/container.py +0 -0
  92. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/middlewares/i18n.py +0 -0
  93. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/middlewares/throttling.py +0 -0
  94. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/middlewares/user_validation.py +0 -0
  95. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/router_builder/__init__.py +0 -0
  96. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/engine/router_builder/router_builder.py +0 -0
  97. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/fsm/__init__.py +0 -0
  98. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/fsm/common_fsm_handlers.py +0 -0
  99. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/fsm/garbage_collector.py +0 -0
  100. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/fsm/state_manager.py +0 -0
  101. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/helper/__init__.py +0 -0
  102. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/helper/context_helper.py +0 -0
  103. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/redis/__init__.py +0 -0
  104. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/redis/dispatcher.py +0 -0
  105. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/redis/router.py +0 -0
  106. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/redis/stream_processor.py +0 -0
  107. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/sender/__init__.py +0 -0
  108. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/sender/protocols.py +0 -0
  109. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/sender/sender_keys.py +0 -0
  110. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/sender/sender_manager.py +0 -0
  111. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/sender/view_sender.py +0 -0
  112. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/callbacks.py.tpl +0 -0
  113. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/contract.py.tpl +0 -0
  114. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/dto.py.tpl +0 -0
  115. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/feature.py.tpl +0 -0
  116. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/feature_redis.py.tpl +0 -0
  117. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/formatters.py.tpl +0 -0
  118. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/handlers.py.tpl +0 -0
  119. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/handlers_redis.py.tpl +0 -0
  120. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/keyboards.py.tpl +0 -0
  121. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/orchestrator.py.tpl +0 -0
  122. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/orchestrator_redis.py.tpl +0 -0
  123. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/texts.py.tpl +0 -0
  124. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/templates/feature/ui.py.tpl +0 -0
  125. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/url_signer/__init__.py +0 -0
  126. {codex_bot-0.1.0 → codex_bot-0.1.1}/src/codex_bot/url_signer/service.py +0 -0
  127. {codex_bot-0.1.0 → codex_bot-0.1.1}/tools/__init__.py +0 -0
  128. {codex_bot-0.1.0 → codex_bot-0.1.1}/tools/dev/__init__.py +0 -0
  129. {codex_bot-0.1.0 → codex_bot-0.1.1}/tools/dev/check.py +0 -0
  130. {codex_bot-0.1.0 → codex_bot-0.1.1}/tools/dev/generate_project_tree.py +0 -0
@@ -0,0 +1,34 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ jobs:
9
+ build-n-publish:
10
+ name: Build and publish to PyPI
11
+ runs-on: ubuntu-latest
12
+ environment:
13
+ name: pypi
14
+ url: https://pypi.org/project/codex-bot
15
+ permissions:
16
+ id-token: write
17
+ contents: read
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: "3.11"
26
+
27
+ - name: Install build dependencies
28
+ run: python -m pip install build
29
+
30
+ - name: Build package
31
+ run: python -m build
32
+
33
+ - name: Publish to PyPI
34
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -1,38 +1,38 @@
1
- repos:
2
- - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v5.0.0
4
- hooks:
5
- - id: trailing-whitespace
6
- - id: end-of-file-fixer
7
- - id: check-yaml
8
- - id: check-json
9
- - id: check-added-large-files
10
- args: ['--maxkb=2000']
11
- - id: check-merge-conflict
12
-
13
- - repo: https://github.com/astral-sh/ruff-pre-commit
14
- rev: v0.9.6
15
- hooks:
16
- - id: ruff
17
- args: [--fix]
18
- - id: ruff-format
19
-
20
- - repo: https://github.com/igorshubovych/markdownlint-cli
21
- rev: v0.44.0
22
- hooks:
23
- - id: markdownlint
24
- args: ["--fix", "--disable", "MD013"]
25
-
26
- - repo: https://github.com/PyCQA/bandit
27
- rev: 1.8.2
28
- hooks:
29
- - id: bandit
30
- args: ["-c", "pyproject.toml"]
31
- additional_dependencies: ["bandit[toml]"]
32
-
33
- # 2. Поиск "забытых" секретов и паролей (усиленный)
34
- - repo: https://github.com/Yelp/detect-secrets
35
- rev: v1.5.0
36
- hooks:
37
- - id: detect-secrets
38
- # Baseline will be added after manual creation
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-json
9
+ - id: check-added-large-files
10
+ args: ['--maxkb=2000']
11
+ - id: check-merge-conflict
12
+
13
+ - repo: https://github.com/astral-sh/ruff-pre-commit
14
+ rev: v0.9.6
15
+ hooks:
16
+ - id: ruff
17
+ args: [--fix]
18
+ - id: ruff-format
19
+
20
+ - repo: https://github.com/igorshubovych/markdownlint-cli
21
+ rev: v0.44.0
22
+ hooks:
23
+ - id: markdownlint
24
+ args: ["--fix", "--disable", "MD013"]
25
+
26
+ - repo: https://github.com/PyCQA/bandit
27
+ rev: 1.8.2
28
+ hooks:
29
+ - id: bandit
30
+ args: ["-c", "pyproject.toml"]
31
+ additional_dependencies: ["bandit[toml]"]
32
+
33
+ # 2. Поиск "забытых" секретов и паролей (усиленный)
34
+ - repo: https://github.com/Yelp/detect-secrets
35
+ rev: v1.5.0
36
+ hooks:
37
+ - id: detect-secrets
38
+ # Baseline will be added after manual creation
@@ -1,29 +1,38 @@
1
- # Changelog
2
-
3
- All notable changes to this project will be documented in this file.
4
-
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
-
8
- ## [0.1.0] - 2025-03-09
9
-
10
- ### Added
11
- - **Initial Library Release**: Migration and adaptation of core infrastructure from production projects into a reusable feature-based framework.
12
- - **Feature-based Architecture**: Implementation of `BaseBotOrchestrator` and `Director` for stateless UI management.
13
- - **Redis Integration**: Stream processing, consumer groups support, and Redis-based dispatching.
14
- - **FSM Enhancements**: `GarbageStateRegistry` for automatic UI cleanup and advanced state management.
15
- - **Unified View System**: `ViewSender` and `UnifiedViewDTO` for consistent message rendering across different platforms.
16
- - **I18n Engine**: Custom Fluent-based locales compiler with isolation support.
17
- - **CLI Tools**: Scaffolding templates for rapid feature development.
18
- - **Multi-language Documentation**: Comprehensive guides and API references in English and Russian.
19
- - **DevOps Infrastructure**: Pre-commit hooks, Ruff/Mypy configurations, and GitHub Actions for docs.
20
- - **Final Polish**: Refined `Director` logic, `BotBuilder` factory, and `RouterBuilder` for better stability.
21
- - **Enhanced State Management**: Improved `StateManager` and `FSM` handlers for more robust session control.
22
- - **Redis Dispatcher Optimization**: Fine-tuned stream processing and error handling in `RedisDispatcher`.
23
- - **Test Coverage**: Added comprehensive unit tests for all core modules.
24
-
25
- ### Changed
26
- - Refactored production code into a modular library structure.
27
- - Standardized DTOs and protocols for better extensibility.
28
- - Optimized Redis Stream processing for high-load scenarios.
29
- - Improved type safety across the entire codebase (Mypy strict mode).
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.1] - 2025-03-09
9
+
10
+ ### Added
11
+ - **CI/CD Automation**: Integrated GitHub Actions for automated publishing to PyPI using Trusted Publishers (OIDC).
12
+ - **Project Metadata**: Added comprehensive project URLs (Documentation, Repository, Issues, Changelog) to `pyproject.toml` for better PyPI presentation.
13
+
14
+ ### Fixed
15
+ - **Documentation Links**: Corrected broken documentation links in `README.md` to point to the actual GitHub Pages site.
16
+
17
+ ## [0.1.0] - 2025-03-09
18
+
19
+ ### Added
20
+ - **Initial Library Release**: Migration and adaptation of core infrastructure from production projects into a reusable feature-based framework.
21
+ - **Feature-based Architecture**: Implementation of `BaseBotOrchestrator` and `Director` for stateless UI management.
22
+ - **Redis Integration**: Stream processing, consumer groups support, and Redis-based dispatching.
23
+ - **FSM Enhancements**: `GarbageStateRegistry` for automatic UI cleanup and advanced state management.
24
+ - **Unified View System**: `ViewSender` and `UnifiedViewDTO` for consistent message rendering across different platforms.
25
+ - **I18n Engine**: Custom Fluent-based locales compiler with isolation support.
26
+ - **CLI Tools**: Scaffolding templates for rapid feature development.
27
+ - **Multi-language Documentation**: Comprehensive guides and API references in English and Russian.
28
+ - **DevOps Infrastructure**: Pre-commit hooks, Ruff/Mypy configurations, and GitHub Actions for docs.
29
+ - **Final Polish**: Refined `Director` logic, `BotBuilder` factory, and `RouterBuilder` for better stability.
30
+ - **Enhanced State Management**: Improved `StateManager` and `FSM` handlers for more robust session control.
31
+ - **Redis Dispatcher Optimization**: Fine-tuned stream processing and error handling in `RedisDispatcher`.
32
+ - **Test Coverage**: Added comprehensive unit tests for all core modules.
33
+
34
+ ### Changed
35
+ - Refactored production code into a modular library structure.
36
+ - Standardized DTOs and protocols for better extensibility.
37
+ - Optimized Redis Stream processing for high-load scenarios.
38
+ - Improved type safety across the entire codebase (Mypy strict mode).
@@ -1,48 +1,48 @@
1
- # codex-bot — AI Context
2
-
3
- Feature-based Aiogram framework library. MIT license, public GitHub.
4
-
5
- ---
6
-
7
- ## Agent Memory
8
-
9
- > **Memory directory:** `C:\Users\prime\.claude\projects\C--install-progect-codex-bot\memory\`
10
- >
11
- > Агент из любого проекта: читай `MEMORY.md` там — это индекс.
12
- > Детали в: `architecture.md`, `modules.md`, `fixes.md`
13
-
14
- ---
15
-
16
- ## Структура пакета
17
-
18
- ```
19
- src/codex_bot/
20
- ├── base/ ← BaseBotOrchestrator[T] (ABC), UnifiedViewDTO, ViewResultDTO
21
- ├── director/ ← Director, OrchestratorProtocol, ContainerProtocol, SceneConfig
22
- ├── fsm/ ← BaseStateManager, GarbageStateRegistry, common_fsm_router
23
- ├── sender/ ← ViewSender (stateless), SenderManager, SenderKeys
24
- ├── redis/ ← RedisRouter, BotRedisDispatcher, RedisStreamProcessor
25
- ├── animation/ ← UIAnimationService, AnimationType
26
- ├── helper/ ← ContextHelper
27
- ├── url_signer/ ← UrlSignerService
28
- └── engine/ ← инфраструктура "под капотом"
29
- ├── middlewares/ ← ThrottlingMiddleware, ContainerMiddleware, UserValidationMiddleware
30
- ├── discovery/ ← FeatureDiscoveryService (service.py)
31
- ├── factory/ ← BotBuilder (bot_builder.py)
32
- ├── router_builder/ ← collect_feature_routers, build_main_router (router_builder.py)
33
- ├── http/ ← BaseApiClient, ApiClientError (api_client.py)
34
- └── i18n/ ← compile_locales (locales_compiler.py)
35
- ```
36
-
37
- ---
38
-
39
- ## Стандарты (обязательно)
40
-
41
- - **Packaging**: Hatchling, PEP 621
42
- - **Docstrings**: Google style — Args / Returns / Example
43
- - **Docs**: MkDocs Material + mkdocstrings
44
- - **DTO**: `frozen=True, arbitrary_types_allowed=True`, мутации через `model_copy(update=...)`
45
- - **Оркестраторы**: stateless `Generic[PayloadT]`, `director` явный аргумент
46
- - **Fail Fast**: умный `except ImportError` (проверяем `e.name == module_path`)
47
- - **Redis**: SET NX вместо EXISTS + SET (атомарно, нет race condition)
48
- - **SecurityMiddleware**: удалён навсегда (иллюзорная защита + лишний HGETALL)
1
+ # codex-bot — AI Context
2
+
3
+ Feature-based Aiogram framework library. MIT license, public GitHub.
4
+
5
+ ---
6
+
7
+ ## Agent Memory
8
+
9
+ > **Memory directory:** `C:\Users\prime\.claude\projects\C--install-progect-codex-bot\memory\`
10
+ >
11
+ > Агент из любого проекта: читай `MEMORY.md` там — это индекс.
12
+ > Детали в: `architecture.md`, `modules.md`, `fixes.md`
13
+
14
+ ---
15
+
16
+ ## Структура пакета
17
+
18
+ ```
19
+ src/codex_bot/
20
+ ├── base/ ← BaseBotOrchestrator[T] (ABC), UnifiedViewDTO, ViewResultDTO
21
+ ├── director/ ← Director, OrchestratorProtocol, ContainerProtocol, SceneConfig
22
+ ├── fsm/ ← BaseStateManager, GarbageStateRegistry, common_fsm_router
23
+ ├── sender/ ← ViewSender (stateless), SenderManager, SenderKeys
24
+ ├── redis/ ← RedisRouter, BotRedisDispatcher, RedisStreamProcessor
25
+ ├── animation/ ← UIAnimationService, AnimationType
26
+ ├── helper/ ← ContextHelper
27
+ ├── url_signer/ ← UrlSignerService
28
+ └── engine/ ← инфраструктура "под капотом"
29
+ ├── middlewares/ ← ThrottlingMiddleware, ContainerMiddleware, UserValidationMiddleware
30
+ ├── discovery/ ← FeatureDiscoveryService (service.py)
31
+ ├── factory/ ← BotBuilder (bot_builder.py)
32
+ ├── router_builder/ ← collect_feature_routers, build_main_router (router_builder.py)
33
+ ├── http/ ← BaseApiClient, ApiClientError (api_client.py)
34
+ └── i18n/ ← compile_locales (locales_compiler.py)
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Стандарты (обязательно)
40
+
41
+ - **Packaging**: Hatchling, PEP 621
42
+ - **Docstrings**: Google style — Args / Returns / Example
43
+ - **Docs**: MkDocs Material + mkdocstrings
44
+ - **DTO**: `frozen=True, arbitrary_types_allowed=True`, мутации через `model_copy(update=...)`
45
+ - **Оркестраторы**: stateless `Generic[PayloadT]`, `director` явный аргумент
46
+ - **Fail Fast**: умный `except ImportError` (проверяем `e.name == module_path`)
47
+ - **Redis**: SET NX вместо EXISTS + SET (атомарно, нет race condition)
48
+ - **SecurityMiddleware**: удалён навсегда (иллюзорная защита + лишний HGETALL)
@@ -1,7 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-bot
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Feature-based Aiogram framework library — reusable infrastructure for Telegram bots
5
+ Project-URL: Homepage, https://github.com/codexdlc/codex-bot
6
+ Project-URL: Documentation, https://codexdlc.github.io/codex-bot/
7
+ Project-URL: Repository, https://github.com/codexdlc/codex-bot
8
+ Project-URL: Changelog, https://github.com/codexdlc/codex-bot/blob/main/CHANGELOG.md
9
+ Project-URL: Issues, https://github.com/codexdlc/codex-bot/issues
5
10
  Author: Codex Team
6
11
  License: MIT
7
12
  License-File: LICENSE
@@ -100,8 +105,8 @@ builder.run_polling()
100
105
 
101
106
  ## 📚 Documentation
102
107
 
103
- - [English Documentation](https://codex-team.github.io/codex_bot/en_EN/)
104
- - [Русская документация](https://codex-team.github.io/codex_bot/ru_RU/)
108
+ - [English Documentation](https://codexdlc.github.io/codex-bot/en_EN/)
109
+ - [Русская документация](https://codexdlc.github.io/codex-bot/ru_RU/)
105
110
  - [**Changelog**](CHANGELOG.md) — see what's new in the latest versions.
106
111
 
107
112
  ---
@@ -55,8 +55,8 @@ builder.run_polling()
55
55
 
56
56
  ## 📚 Documentation
57
57
 
58
- - [English Documentation](https://codex-team.github.io/codex_bot/en_EN/)
59
- - [Русская документация](https://codex-team.github.io/codex_bot/ru_RU/)
58
+ - [English Documentation](https://codexdlc.github.io/codex-bot/en_EN/)
59
+ - [Русская документация](https://codexdlc.github.io/codex-bot/ru_RU/)
60
60
  - [**Changelog**](CHANGELOG.md) — see what's new in the latest versions.
61
61
 
62
62
  ---
@@ -1,142 +1,142 @@
1
- # 🧭 Documentation Standard for codex-bot
2
-
3
- > **AUTHORITY:** This document defines how documentation is written, structured, and maintained in the `codex-bot` library.
4
-
5
- ---
6
-
7
- ## 1. 📜 Core Philosophy
8
-
9
- We maintain documentation in **two languages** to ensure international accessibility while keeping the local community engaged.
10
-
11
- ### 🇬🇧 English (Primary / Technical Truth)
12
-
13
- - **Mandatory for:** All Pull Requests and technical specifications.
14
- - **Location:**
15
- - `docs/api/` — Technical API reference (auto-generated from docstrings).
16
- - `docs/en_EN/` — Conceptual guides and architectural mirroring.
17
- - **Content:**
18
- - Full technical specifications.
19
- - API documentation (via `docs/api/`).
20
- - Code examples and integration guides.
21
- - **Goal:** Single source of truth. If code contradicts EN docs, it is a bug.
22
-
23
- ### 🇷🇺 Russian (Secondary / Conceptual Hub)
24
-
25
- - **Optional for Contributors:** If you don't speak Russian, write EN docs. Maintainers will add RU translation.
26
- - **Location:** `docs/ru_RU/` (mirrors folder structure).
27
- - **Content:**
28
- - Conceptual translation (the "why" and "how").
29
- - Links to `docs/api/` for technical details instead of duplication.
30
- - Architect's mental model and design decision explanations.
31
- - **Goal:** Help Russian-speaking developers understand the "why" behind the framework's architecture.
32
-
33
- ---
34
-
35
- ## 2. ☯️ Twin Realms Principle
36
-
37
- Documentation languages serve different purposes:
38
-
39
- ### 🇬🇧 EN = Technical Truth
40
-
41
- - **For:** AI generators, external libraries, standards compliance.
42
- - **Format:** Granular (mirrors `src/codex_bot/` structure).
43
- - **Contains:**
44
- - API Reference (in `docs/api/`).
45
- - Mermaid Diagrams (Sequence, Class, ER).
46
- - Integration patterns.
47
-
48
- ### 🇷🇺 RU = Architect's Mind
49
-
50
- - **For:** Human developers, system understanding.
51
- - **Format:** Aggregated (1 folder = 1 README).
52
- - **Contains:**
53
- - **The Why:** Why this solution (e.g., why Stateless Orchestrators) was chosen.
54
- - **The Flow:** How data flows through the system (simplified).
55
- - **Links:** References to `docs/api/` files for technical details.
56
-
57
- ---
58
-
59
- ## 3. 🗂️ Structure Mirroring Rule
60
-
61
- Documentation structure **MUST** mirror the code structure in `src/codex_bot/`.
62
-
63
- ### Mapping Example
64
-
65
- | Code Location | Documentation Location (EN/RU) |
66
- |:---|:---|
67
- | `src/codex_bot/base/` | `docs/[lang]/architecture/base/` |
68
- | `src/codex_bot/engine/router_builder/` | `docs/[lang]/architecture/engine/router_builder/` |
69
- | `src/codex_bot/redis/` | `docs/[lang]/architecture/redis/` |
70
-
71
- ### Why?
72
-
73
- - **1:1 Mapping:** Easy to find docs for any code module.
74
- - **No Orphans:** Prevents documentation from getting lost.
75
- - **Refactoring Safety:** When code moves, docs move with it.
76
-
77
- ---
78
-
79
- ## 4. 🧭 Navigation Standard
80
-
81
- Every documentation file must be easily navigable.
82
-
83
- ### Breadcrumbs (Mandatory)
84
-
85
- Every file **MUST** start with a navigation header:
86
-
87
- ```markdown
88
- [⬅️ Back](../README.md) | [🏠 Docs Root](../../README.md)
89
- ```
90
-
91
- - **Back:** Links to the current directory's `README.md`.
92
- - **Docs Root:** Links to the documentation root (`docs/README.md`).
93
-
94
- ### Index Files (README.md)
95
-
96
- Every directory **MUST** have a `README.md` acting as a navigation hub.
97
-
98
- **Required Structure:**
99
-
100
- 1. **Header:** Emoji 📂 + Section Name.
101
- 2. **Navigation:** Breadcrumbs.
102
- 3. **Description:** Short summary (2-3 sentences).
103
- 4. **Map:** Table or list of files in **logical reading order** (not alphabetical).
104
-
105
- ---
106
-
107
- ## 5. 📝 File Naming & Organization
108
-
109
- ### Naming Conventions
110
-
111
- - **Format:** `snake_case.md` (e.g., `orchestrator_logic.md`).
112
- - **No Prefixes:** Do NOT use `01_`, `02_` prefixes in filenames.
113
- - **Reading Order:** Defined in `README.md` map.
114
-
115
- ### Language Folders
116
-
117
- All documents **MUST** reside in:
118
-
119
- - `docs/api/` (Technical EN)
120
- - `docs/en_EN/` (Conceptual EN)
121
- - `docs/ru_RU/` (Conceptual RU)
122
-
123
- ---
124
-
125
- ## 6. ✅ Markdown Linting Rules (Strict)
126
-
127
- 1. **MD047 (End with Newline):** Every file must end with exactly **one newline** (`\n`).
128
- 2. **MD032 (List Spacing):** Blank line before and after any list.
129
- 3. **MD007 (Indentation):** Use **2 spaces** for nested lists.
130
-
131
- ---
132
-
133
- ## 7. 🚫 Common Mistakes
134
-
135
- - **❌ Duplicating Code in RU Docs:** Link to `docs/api/` instead.
136
- - **❌ Numbered Prefixes:** Use `README.md` map for order.
137
- - **❌ Missing Breadcrumbs:** Always add the navigation header.
138
- - **❌ Language-neutral folders:** Use `en_EN` or `ru_RU`.
139
-
140
- ---
141
-
142
- **Last Updated:** 2025-02-07
1
+ # 🧭 Documentation Standard for codex-bot
2
+
3
+ > **AUTHORITY:** This document defines how documentation is written, structured, and maintained in the `codex-bot` library.
4
+
5
+ ---
6
+
7
+ ## 1. 📜 Core Philosophy
8
+
9
+ We maintain documentation in **two languages** to ensure international accessibility while keeping the local community engaged.
10
+
11
+ ### 🇬🇧 English (Primary / Technical Truth)
12
+
13
+ - **Mandatory for:** All Pull Requests and technical specifications.
14
+ - **Location:**
15
+ - `docs/api/` — Technical API reference (auto-generated from docstrings).
16
+ - `docs/en_EN/` — Conceptual guides and architectural mirroring.
17
+ - **Content:**
18
+ - Full technical specifications.
19
+ - API documentation (via `docs/api/`).
20
+ - Code examples and integration guides.
21
+ - **Goal:** Single source of truth. If code contradicts EN docs, it is a bug.
22
+
23
+ ### 🇷🇺 Russian (Secondary / Conceptual Hub)
24
+
25
+ - **Optional for Contributors:** If you don't speak Russian, write EN docs. Maintainers will add RU translation.
26
+ - **Location:** `docs/ru_RU/` (mirrors folder structure).
27
+ - **Content:**
28
+ - Conceptual translation (the "why" and "how").
29
+ - Links to `docs/api/` for technical details instead of duplication.
30
+ - Architect's mental model and design decision explanations.
31
+ - **Goal:** Help Russian-speaking developers understand the "why" behind the framework's architecture.
32
+
33
+ ---
34
+
35
+ ## 2. ☯️ Twin Realms Principle
36
+
37
+ Documentation languages serve different purposes:
38
+
39
+ ### 🇬🇧 EN = Technical Truth
40
+
41
+ - **For:** AI generators, external libraries, standards compliance.
42
+ - **Format:** Granular (mirrors `src/codex_bot/` structure).
43
+ - **Contains:**
44
+ - API Reference (in `docs/api/`).
45
+ - Mermaid Diagrams (Sequence, Class, ER).
46
+ - Integration patterns.
47
+
48
+ ### 🇷🇺 RU = Architect's Mind
49
+
50
+ - **For:** Human developers, system understanding.
51
+ - **Format:** Aggregated (1 folder = 1 README).
52
+ - **Contains:**
53
+ - **The Why:** Why this solution (e.g., why Stateless Orchestrators) was chosen.
54
+ - **The Flow:** How data flows through the system (simplified).
55
+ - **Links:** References to `docs/api/` files for technical details.
56
+
57
+ ---
58
+
59
+ ## 3. 🗂️ Structure Mirroring Rule
60
+
61
+ Documentation structure **MUST** mirror the code structure in `src/codex_bot/`.
62
+
63
+ ### Mapping Example
64
+
65
+ | Code Location | Documentation Location (EN/RU) |
66
+ |:---|:---|
67
+ | `src/codex_bot/base/` | `docs/[lang]/architecture/base/` |
68
+ | `src/codex_bot/engine/router_builder/` | `docs/[lang]/architecture/engine/router_builder/` |
69
+ | `src/codex_bot/redis/` | `docs/[lang]/architecture/redis/` |
70
+
71
+ ### Why?
72
+
73
+ - **1:1 Mapping:** Easy to find docs for any code module.
74
+ - **No Orphans:** Prevents documentation from getting lost.
75
+ - **Refactoring Safety:** When code moves, docs move with it.
76
+
77
+ ---
78
+
79
+ ## 4. 🧭 Navigation Standard
80
+
81
+ Every documentation file must be easily navigable.
82
+
83
+ ### Breadcrumbs (Mandatory)
84
+
85
+ Every file **MUST** start with a navigation header:
86
+
87
+ ```markdown
88
+ [⬅️ Back](../README.md) | [🏠 Docs Root](../../README.md)
89
+ ```
90
+
91
+ - **Back:** Links to the current directory's `README.md`.
92
+ - **Docs Root:** Links to the documentation root (`docs/README.md`).
93
+
94
+ ### Index Files (README.md)
95
+
96
+ Every directory **MUST** have a `README.md` acting as a navigation hub.
97
+
98
+ **Required Structure:**
99
+
100
+ 1. **Header:** Emoji 📂 + Section Name.
101
+ 2. **Navigation:** Breadcrumbs.
102
+ 3. **Description:** Short summary (2-3 sentences).
103
+ 4. **Map:** Table or list of files in **logical reading order** (not alphabetical).
104
+
105
+ ---
106
+
107
+ ## 5. 📝 File Naming & Organization
108
+
109
+ ### Naming Conventions
110
+
111
+ - **Format:** `snake_case.md` (e.g., `orchestrator_logic.md`).
112
+ - **No Prefixes:** Do NOT use `01_`, `02_` prefixes in filenames.
113
+ - **Reading Order:** Defined in `README.md` map.
114
+
115
+ ### Language Folders
116
+
117
+ All documents **MUST** reside in:
118
+
119
+ - `docs/api/` (Technical EN)
120
+ - `docs/en_EN/` (Conceptual EN)
121
+ - `docs/ru_RU/` (Conceptual RU)
122
+
123
+ ---
124
+
125
+ ## 6. ✅ Markdown Linting Rules (Strict)
126
+
127
+ 1. **MD047 (End with Newline):** Every file must end with exactly **one newline** (`\n`).
128
+ 2. **MD032 (List Spacing):** Blank line before and after any list.
129
+ 3. **MD007 (Indentation):** Use **2 spaces** for nested lists.
130
+
131
+ ---
132
+
133
+ ## 7. 🚫 Common Mistakes
134
+
135
+ - **❌ Duplicating Code in RU Docs:** Link to `docs/api/` instead.
136
+ - **❌ Numbered Prefixes:** Use `README.md` map for order.
137
+ - **❌ Missing Breadcrumbs:** Always add the navigation header.
138
+ - **❌ Language-neutral folders:** Use `en_EN` or `ru_RU`.
139
+
140
+ ---
141
+
142
+ **Last Updated:** 2025-02-07