codex-platform 0.1.0__tar.gz → 0.3.0__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.
- codex_platform-0.3.0/.github/workflows/ci.yml +91 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/.github/workflows/docs.yml +15 -15
- {codex_platform-0.1.0 → codex_platform-0.3.0}/.github/workflows/publish.yml +6 -9
- {codex_platform-0.1.0 → codex_platform-0.3.0}/.gitignore +1 -0
- codex_platform-0.3.0/.python-version +1 -0
- codex_platform-0.3.0/CHANGELOG.md +42 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/PKG-INFO +39 -16
- codex_platform-0.3.0/README.md +87 -0
- codex_platform-0.3.0/docs/index.md +56 -0
- codex_platform-0.3.0/docs/stylesheets/extra.css +18 -0
- codex_platform-0.3.0/mkdocs.yml +141 -0
- codex_platform-0.3.0/project_structure.txt +181 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/pyproject.toml +37 -9
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/channels.py +1 -9
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/dto.py +2 -2
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/renderer.py +3 -2
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/__init__.py +4 -0
- codex_platform-0.3.0/src/codex_platform/redis_service/managers/__init__.py +40 -0
- codex_platform-0.3.0/src/codex_platform/redis_service/managers/site_settings.py +73 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/workers/arq/base.py +2 -2
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/workers/arq/config.py +3 -4
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/integration/test_docs_build.py +4 -4
- codex_platform-0.3.0/tests/unit/test_arq_base.py +185 -0
- codex_platform-0.3.0/tests/unit/test_arq_config.py +55 -0
- codex_platform-0.3.0/tests/unit/test_arq_public_api.py +30 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_arq_task_utils.py +5 -5
- codex_platform-0.3.0/tests/unit/test_notification_adapters.py +234 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_notification_channels.py +2 -17
- codex_platform-0.3.0/tests/unit/test_site_settings_manager.py +46 -0
- codex_platform-0.3.0/tools/dev/README.md +31 -0
- codex_platform-0.3.0/tools/dev/check.py +13 -0
- codex_platform-0.3.0/tools/dev/generate_project_tree.py +8 -0
- codex_platform-0.3.0/uv.lock +1721 -0
- codex_platform-0.1.0/.github/workflows/ci.yml +0 -90
- codex_platform-0.1.0/CHANGELOG.md +0 -13
- codex_platform-0.1.0/README.md +0 -64
- codex_platform-0.1.0/docs/index.md +0 -48
- codex_platform-0.1.0/docs/ru/api/index.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/channels.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/delivery/arq.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/delivery/base.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/delivery/direct.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/dto.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/index.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/orchestrator.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/registry.md +0 -4
- codex_platform-0.1.0/docs/ru/api/notifications/renderer.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/base.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/index.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/keys.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/hash.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/json_module.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/json_string.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/list_.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/pipeline.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/set_.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/string.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/operations/zset.md +0 -4
- codex_platform-0.1.0/docs/ru/api/redis_service/service.md +0 -4
- codex_platform-0.1.0/docs/ru/api/streams/consumer.md +0 -4
- codex_platform-0.1.0/docs/ru/api/streams/dispatcher.md +0 -4
- codex_platform-0.1.0/docs/ru/api/streams/index.md +0 -4
- codex_platform-0.1.0/docs/ru/api/streams/processor.md +0 -4
- codex_platform-0.1.0/docs/ru/api/streams/producer.md +0 -4
- codex_platform-0.1.0/docs/ru/api/streams/router.md +0 -4
- codex_platform-0.1.0/docs/ru/api/workers/arq/base.md +0 -4
- codex_platform-0.1.0/docs/ru/api/workers/arq/config.md +0 -4
- codex_platform-0.1.0/docs/ru/api/workers/arq/index.md +0 -4
- codex_platform-0.1.0/docs/ru/api/workers/arq/task_utils.md +0 -4
- codex_platform-0.1.0/docs/ru/api/workers/arq/types.md +0 -4
- codex_platform-0.1.0/mkdocs.yml +0 -147
- codex_platform-0.1.0/src/codex_platform/redis_service/managers/__init__.py +0 -18
- codex_platform-0.1.0/tools/dev/README.md +0 -23
- codex_platform-0.1.0/tools/dev/check.py +0 -197
- codex_platform-0.1.0/tools/dev/generate_project_tree.py +0 -119
- {codex_platform-0.1.0 → codex_platform-0.3.0}/.pre-commit-config.yaml +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/changelog.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/index.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/channels.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/delivery/arq.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/delivery/base.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/delivery/direct.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/dto.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/index.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/orchestrator.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/registry.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/notifications/renderer.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/base.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/index.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/keys.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/hash.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/json_module.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/json_string.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/list_.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/pipeline.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/set_.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/string.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/operations/zset.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/redis_service/service.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/streams/consumer.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/streams/dispatcher.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/streams/index.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/streams/processor.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/streams/producer.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/streams/router.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/workers/arq/base.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/workers/arq/config.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/workers/arq/index.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/workers/arq/task_utils.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/api/workers/arq/types.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/notifications/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/notifications/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/redis_service/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/redis_service/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/streams/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/streams/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/workers/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/en/architecture/workers/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/notifications/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/notifications/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/redis_service/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/redis_service/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/streams/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/streams/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/workers/README.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/docs/ru/architecture/workers/data_flow.md +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/clients/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/clients/smtp.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/delivery/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/delivery/arq.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/delivery/base.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/delivery/direct.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/interfaces.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/orchestrator.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/notifications/registry.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/base.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/exceptions.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/keys.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/managers/base_manager.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/hash.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/json_module.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/json_string.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/list_.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/pipeline.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/set_.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/string.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/operations/zset.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/redis_service/service.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/streams/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/streams/consumer.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/streams/dispatcher.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/streams/processor.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/streams/producer.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/streams/router.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/workers/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/workers/arq/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/workers/arq/task_utils.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/src/codex_platform/workers/arq/types.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/integration/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/integration/conftest.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/integration/test_redis_service.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/integration/test_streams.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/conftest.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_notification_dto.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_notification_orchestrator.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_notification_registry.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_notification_renderer.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_notification_smtp.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_base.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_hash.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_keys.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_list.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_manager.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_pipeline.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_service.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_set.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_string.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_redis_zset.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_stream_consumer.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_stream_dispatcher.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_stream_processor.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_stream_producer.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tests/unit/test_stream_router.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tools/__init__.py +0 -0
- {codex_platform-0.1.0 → codex_platform-0.3.0}/tools/dev/__init__.py +0 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
name: CI Pipeline
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, develop]
|
|
6
|
+
paths-ignore: ["**.md", "docs/**", ".gitignore"]
|
|
7
|
+
pull_request:
|
|
8
|
+
branches: [main]
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
quality-gate:
|
|
15
|
+
name: Quality Gate
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
- uses: astral-sh/setup-uv@v7
|
|
23
|
+
with:
|
|
24
|
+
version: "0.10.7"
|
|
25
|
+
|
|
26
|
+
- name: Sync dev + docs environment
|
|
27
|
+
run: uv sync --locked --extra dev --extra docs
|
|
28
|
+
|
|
29
|
+
- name: Run pre-commit
|
|
30
|
+
run: uv run pre-commit run --all-files
|
|
31
|
+
|
|
32
|
+
- name: Run pip-audit
|
|
33
|
+
run: uv run pip-audit --skip-editable --ignore-vuln CVE-2026-4539
|
|
34
|
+
|
|
35
|
+
- name: Run mypy
|
|
36
|
+
run: uv run mypy src/
|
|
37
|
+
|
|
38
|
+
unit-tests:
|
|
39
|
+
name: Unit Tests (Python ${{ matrix.python-version }})
|
|
40
|
+
needs: quality-gate
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
strategy:
|
|
43
|
+
matrix:
|
|
44
|
+
python-version: ["3.12", "3.13"]
|
|
45
|
+
steps:
|
|
46
|
+
- uses: actions/checkout@v4
|
|
47
|
+
- uses: actions/setup-python@v5
|
|
48
|
+
with:
|
|
49
|
+
python-version: ${{ matrix.python-version }}
|
|
50
|
+
- uses: astral-sh/setup-uv@v7
|
|
51
|
+
with:
|
|
52
|
+
version: "0.10.7"
|
|
53
|
+
|
|
54
|
+
- name: Sync dev + docs environment
|
|
55
|
+
run: uv sync --locked --extra dev --extra docs
|
|
56
|
+
|
|
57
|
+
- name: Run unit tests
|
|
58
|
+
run: uv run pytest tests/ -m "unit" -v --tb=short
|
|
59
|
+
|
|
60
|
+
integration-tests:
|
|
61
|
+
name: Integration Tests
|
|
62
|
+
needs: unit-tests
|
|
63
|
+
runs-on: ubuntu-latest
|
|
64
|
+
|
|
65
|
+
services:
|
|
66
|
+
redis:
|
|
67
|
+
image: redis:7-alpine
|
|
68
|
+
ports:
|
|
69
|
+
- 6379:6379
|
|
70
|
+
options: >-
|
|
71
|
+
--health-cmd "redis-cli ping"
|
|
72
|
+
--health-interval 10s
|
|
73
|
+
--health-timeout 5s
|
|
74
|
+
--health-retries 5
|
|
75
|
+
|
|
76
|
+
steps:
|
|
77
|
+
- uses: actions/checkout@v4
|
|
78
|
+
- uses: actions/setup-python@v5
|
|
79
|
+
with:
|
|
80
|
+
python-version: "3.12"
|
|
81
|
+
- uses: astral-sh/setup-uv@v7
|
|
82
|
+
with:
|
|
83
|
+
version: "0.10.7"
|
|
84
|
+
|
|
85
|
+
- name: Sync dev environment
|
|
86
|
+
run: uv sync --locked --extra dev
|
|
87
|
+
|
|
88
|
+
- name: Run integration tests
|
|
89
|
+
env:
|
|
90
|
+
REDIS_URL: redis://localhost:6379/0
|
|
91
|
+
run: uv run pytest tests/ -m "integration" -v --tb=short --no-cov
|
|
@@ -3,16 +3,16 @@ name: Deploy Docs
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
tags:
|
|
6
|
-
-
|
|
6
|
+
- "v*"
|
|
7
7
|
workflow_dispatch:
|
|
8
8
|
inputs:
|
|
9
9
|
version:
|
|
10
|
-
description:
|
|
10
|
+
description: "Version alias to deploy (e.g. 0.x, 1.x)"
|
|
11
11
|
required: true
|
|
12
12
|
alias:
|
|
13
|
-
description:
|
|
13
|
+
description: "Alias (latest, stable, or leave empty)"
|
|
14
14
|
required: false
|
|
15
|
-
default:
|
|
15
|
+
default: "latest"
|
|
16
16
|
|
|
17
17
|
env:
|
|
18
18
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
@@ -39,33 +39,33 @@ jobs:
|
|
|
39
39
|
uses: actions/setup-python@v5
|
|
40
40
|
with:
|
|
41
41
|
python-version: "3.12"
|
|
42
|
-
|
|
42
|
+
- uses: astral-sh/setup-uv@v7
|
|
43
|
+
with:
|
|
44
|
+
version: "0.10.7"
|
|
43
45
|
|
|
44
|
-
- name:
|
|
45
|
-
run:
|
|
46
|
-
python -m pip install --upgrade pip
|
|
47
|
-
pip install -e ".[docs]"
|
|
46
|
+
- name: Sync docs environment
|
|
47
|
+
run: uv sync --locked --extra docs
|
|
48
48
|
|
|
49
49
|
- name: Resolve version alias (tag push)
|
|
50
50
|
if: github.event_name == 'push'
|
|
51
51
|
id: version
|
|
52
52
|
run: |
|
|
53
|
-
TAG="${GITHUB_REF_NAME}"
|
|
53
|
+
TAG="${GITHUB_REF_NAME}"
|
|
54
54
|
MAJOR=$(echo "$TAG" | sed 's/^v//' | cut -d. -f1)
|
|
55
55
|
echo "alias=${MAJOR}.x" >> "$GITHUB_OUTPUT"
|
|
56
56
|
|
|
57
57
|
- name: Deploy versioned docs (tag push)
|
|
58
58
|
if: github.event_name == 'push'
|
|
59
59
|
run: |
|
|
60
|
-
mike deploy --push --update-aliases "${{ steps.version.outputs.alias }}" latest
|
|
61
|
-
mike set-default --push latest
|
|
60
|
+
uv run mike deploy --push --update-aliases "${{ steps.version.outputs.alias }}" latest
|
|
61
|
+
uv run mike set-default --push latest
|
|
62
62
|
|
|
63
63
|
- name: Deploy versioned docs (manual)
|
|
64
64
|
if: github.event_name == 'workflow_dispatch'
|
|
65
65
|
run: |
|
|
66
66
|
if [ -n "${{ inputs.alias }}" ]; then
|
|
67
|
-
mike deploy --push --update-aliases "${{ inputs.version }}" "${{ inputs.alias }}"
|
|
67
|
+
uv run mike deploy --push --update-aliases "${{ inputs.version }}" "${{ inputs.alias }}"
|
|
68
68
|
else
|
|
69
|
-
mike deploy --push "${{ inputs.version }}"
|
|
69
|
+
uv run mike deploy --push "${{ inputs.version }}"
|
|
70
70
|
fi
|
|
71
|
-
mike set-default --push latest
|
|
71
|
+
uv run mike set-default --push latest
|
|
@@ -3,7 +3,7 @@ name: Publish to PyPI
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
tags:
|
|
6
|
-
-
|
|
6
|
+
- "v*"
|
|
7
7
|
|
|
8
8
|
env:
|
|
9
9
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
@@ -29,18 +29,15 @@ jobs:
|
|
|
29
29
|
uses: actions/setup-python@v5
|
|
30
30
|
with:
|
|
31
31
|
python-version: "3.12"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
run: |
|
|
36
|
-
python -m pip install --upgrade pip
|
|
37
|
-
python -m pip install build twine hatchling
|
|
32
|
+
- uses: astral-sh/setup-uv@v7
|
|
33
|
+
with:
|
|
34
|
+
version: "0.10.7"
|
|
38
35
|
|
|
39
36
|
- name: Build sdist and wheel
|
|
40
|
-
run:
|
|
37
|
+
run: uv build --no-sources
|
|
41
38
|
|
|
42
39
|
- name: Check artifacts
|
|
43
|
-
run: twine check dist/*
|
|
40
|
+
run: uvx twine check dist/*
|
|
44
41
|
|
|
45
42
|
- name: Publish to PyPI
|
|
46
43
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.12
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
Grouped by `Added` · `Changed` · `Deprecated` · `Removed` · `Fixed`.
|
|
5
|
+
|
|
6
|
+
## [0.3.0] - 2026-04-05
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- Raised the `codex-core` requirement to `>=0.3.0,<0.10.0` so the package tracks the new core baseline while remaining compatible through the `0.9.x` series.
|
|
10
|
+
- Updated the documented install examples to the `codex-platform 0.3.x` release line.
|
|
11
|
+
|
|
12
|
+
## [0.2.0] - 2026-03-29
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- `SiteSettingsManager` as a public Redis manager for shared `site_settings` hash access across services.
|
|
16
|
+
- `uv.lock` for reproducible local and CI environments.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- Standardized the documentation site around the shared Codex MkDocs layout: English-only API reference, bilingual architecture guides, teal/cyan theme, and shared extra CSS.
|
|
20
|
+
- Migrated CI, docs deployment, publishing, and local developer workflows from ad-hoc `pip` installs to `uv`.
|
|
21
|
+
- Raised the supported Python baseline to 3.12 and simplified code paths that only existed for Python 3.10/3.11 compatibility.
|
|
22
|
+
- Reused shared developer tooling from `codex-core` for project checks and project-tree generation, with `tools/dev/check.py` configured via the new `RUN_*` policy flags.
|
|
23
|
+
- Pinned the `codex-core` dependency to the supported `0.2.x` series.
|
|
24
|
+
- Enabled the shared pytest/coverage mode in `pyproject.toml` so local runs, CI, and `tools/dev/check.py` all collect coverage consistently.
|
|
25
|
+
|
|
26
|
+
### Removed
|
|
27
|
+
- Duplicated `docs/ru/api` reference pages now that API documentation is published in English only.
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- Kept docs-build integration tests aligned with CI by installing docs dependencies in the integration test job.
|
|
31
|
+
- Updated landing-page documentation links and examples to match the current docs structure and public API.
|
|
32
|
+
- Fixed `BaseWorkerConfig` to inherit settings from `codex-core` correctly and to build ARQ Redis settings from the actual shared Redis fields.
|
|
33
|
+
- Stopped standalone integration test runs from failing the release coverage gate by disabling coverage collection for integration-only runs in CI and `tools/dev/check.py`.
|
|
34
|
+
|
|
35
|
+
## [0.1.0] - 2024-05-30
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- Initial split from monolithic `codex_tools` repository.
|
|
39
|
+
- `redis_service` — async Redis abstraction with typed operations (Hash, String, List, Set, ZSet, JSON, Pipeline).
|
|
40
|
+
- `streams` — Redis Streams producer/consumer with consumer groups, dispatcher, processor, router, and DLQ via ARQ.
|
|
41
|
+
- `notifications` — multi-channel notification engine with ARQ and Direct delivery adapters.
|
|
42
|
+
- `workers.arq` — base ARQ worker infrastructure with health check, DLQ retry, and `CORE_FUNCTIONS`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codex-platform
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Modular async infrastructure (Redis, Streams, ARQ, Notifications) built for Codex, designed for independent use.
|
|
5
5
|
Project-URL: Homepage, https://github.com/codexdlc/codex-platform
|
|
6
6
|
Project-URL: Documentation, https://codexdlc.github.io/codex-platform/
|
|
7
7
|
Project-URL: Repository, https://github.com/codexdlc/codex-platform
|
|
@@ -12,16 +12,15 @@ Keywords: arq,django,notifications,redis,waas,worker
|
|
|
12
12
|
Classifier: Development Status :: 3 - Alpha
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
17
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
-
Requires-Python: >=3.
|
|
20
|
-
Requires-Dist: codex-core
|
|
17
|
+
Requires-Python: >=3.12
|
|
18
|
+
Requires-Dist: codex-core<0.10.0,>=0.3.0
|
|
21
19
|
Requires-Dist: pydantic<3.0,>=2.0
|
|
22
20
|
Provides-Extra: all
|
|
23
21
|
Requires-Dist: aiosmtplib>=3.0; extra == 'all'
|
|
24
22
|
Requires-Dist: arq>=0.25; extra == 'all'
|
|
23
|
+
Requires-Dist: jinja2>=3.1; extra == 'all'
|
|
25
24
|
Requires-Dist: redis>=5.0; extra == 'all'
|
|
26
25
|
Provides-Extra: arq
|
|
27
26
|
Requires-Dist: arq>=0.25; extra == 'arq'
|
|
@@ -31,6 +30,7 @@ Requires-Dist: arq>=0.25; extra == 'dev'
|
|
|
31
30
|
Requires-Dist: bandit>=1.7; extra == 'dev'
|
|
32
31
|
Requires-Dist: detect-secrets>=1.5; extra == 'dev'
|
|
33
32
|
Requires-Dist: fakeredis[lua]>=2.20; extra == 'dev'
|
|
33
|
+
Requires-Dist: jinja2>=3.1; extra == 'dev'
|
|
34
34
|
Requires-Dist: mypy>=1.10; extra == 'dev'
|
|
35
35
|
Requires-Dist: pip-audit>=2.7; extra == 'dev'
|
|
36
36
|
Requires-Dist: pre-commit>=3.0; extra == 'dev'
|
|
@@ -43,11 +43,11 @@ Provides-Extra: docs
|
|
|
43
43
|
Requires-Dist: mike>=2.0; extra == 'docs'
|
|
44
44
|
Requires-Dist: mkdocs-include-markdown-plugin; extra == 'docs'
|
|
45
45
|
Requires-Dist: mkdocs-material>=9.0; extra == 'docs'
|
|
46
|
-
Requires-Dist: mkdocs-static-i18n; extra == 'docs'
|
|
47
46
|
Requires-Dist: mkdocs<2.0,>=1.5; extra == 'docs'
|
|
48
47
|
Requires-Dist: mkdocstrings[python]>=0.24; extra == 'docs'
|
|
49
48
|
Provides-Extra: notifications
|
|
50
49
|
Requires-Dist: aiosmtplib>=3.0; extra == 'notifications'
|
|
50
|
+
Requires-Dist: jinja2>=3.1; extra == 'notifications'
|
|
51
51
|
Provides-Extra: redis
|
|
52
52
|
Requires-Dist: redis>=5.0; extra == 'redis'
|
|
53
53
|
Provides-Extra: streams
|
|
@@ -61,30 +61,43 @@ Description-Content-Type: text/markdown
|
|
|
61
61
|
[](https://github.com/codexdlc/codex-platform/actions/workflows/ci.yml)
|
|
62
62
|
[](LICENSE)
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
`codex-platform` is a modular, async infrastructure library. Originally built as the foundation for the Codex ecosystem, it is designed from the ground up to be completely independent. You can use it in any Python project to get a typed Redis abstraction, a Redis Streams event bus, structured ARQ background workers, or a multi-channel notification engine. Every component is completely independent and can be installed as a separate extra.
|
|
65
65
|
|
|
66
66
|
---
|
|
67
67
|
|
|
68
68
|
## Install
|
|
69
69
|
|
|
70
70
|
```bash
|
|
71
|
-
#
|
|
72
|
-
pip install codex-platform
|
|
71
|
+
# codex-platform 0.3.x
|
|
72
|
+
pip install "codex-platform>=0.3.0,<0.4.0"
|
|
73
73
|
|
|
74
74
|
# With Redis support
|
|
75
|
-
pip install "codex-platform[redis]"
|
|
75
|
+
pip install "codex-platform[redis]>=0.3.0,<0.4.0"
|
|
76
76
|
|
|
77
77
|
# With ARQ background workers
|
|
78
|
-
pip install "codex-platform[arq]"
|
|
78
|
+
pip install "codex-platform[arq]>=0.3.0,<0.4.0"
|
|
79
79
|
|
|
80
80
|
# With async SMTP notifications
|
|
81
|
-
pip install "codex-platform[notifications]"
|
|
81
|
+
pip install "codex-platform[notifications]>=0.3.0,<0.4.0"
|
|
82
82
|
|
|
83
83
|
# Redis Streams
|
|
84
|
-
pip install "codex-platform[streams]"
|
|
84
|
+
pip install "codex-platform[streams]>=0.3.0,<0.4.0"
|
|
85
85
|
|
|
86
86
|
# Everything
|
|
87
|
-
pip install "codex-platform[all]"
|
|
87
|
+
pip install "codex-platform[all]>=0.3.0,<0.4.0"
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Requires Python 3.12 or newer.
|
|
91
|
+
Installs `codex-core>=0.3.0,<0.10.0` automatically as a dependency.
|
|
92
|
+
|
|
93
|
+
## Development
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
uv sync --extra dev
|
|
97
|
+
uv run pytest
|
|
98
|
+
uv run mypy src/
|
|
99
|
+
uv run pre-commit run --all-files
|
|
100
|
+
uv build --no-sources
|
|
88
101
|
```
|
|
89
102
|
|
|
90
103
|
## Quick Start
|
|
@@ -117,4 +130,14 @@ Full docs with architecture, API reference, and data flow diagrams:
|
|
|
117
130
|
|
|
118
131
|
## Part of the Codex ecosystem
|
|
119
132
|
|
|
120
|
-
|
|
133
|
+
| Package | Role |
|
|
134
|
+
| :--- | :--- |
|
|
135
|
+
| [codex-core](https://github.com/codexdlc/codex-core) | Foundation — immutable DTOs, PII masking, env settings |
|
|
136
|
+
| **codex-platform** | Infrastructure — Redis, Streams, ARQ workers, Notifications |
|
|
137
|
+
| [codex-ai](https://github.com/codexdlc/codex-ai) | LLM layer — unified async interface for OpenAI, Gemini, Anthropic |
|
|
138
|
+
| [codex-services](https://github.com/codexdlc/codex-services) | Business logic — Booking engine, CRM, Calendar |
|
|
139
|
+
|
|
140
|
+
Each library is **fully standalone** — install only what your project needs.
|
|
141
|
+
Together they form the backbone of **[codex-bot](https://github.com/codexdlc/codex-bot)**
|
|
142
|
+
(Telegram AI-agent infrastructure built on aiogram) and
|
|
143
|
+
**[codex-django](https://github.com/codexdlc/codex-django)** (Django integration layer).
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# codex-platform
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/codex-platform/)
|
|
4
|
+
[](https://pypi.org/project/codex-platform/)
|
|
5
|
+
[](https://github.com/codexdlc/codex-platform/actions/workflows/ci.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
|
|
8
|
+
`codex-platform` is a modular, async infrastructure library. Originally built as the foundation for the Codex ecosystem, it is designed from the ground up to be completely independent. You can use it in any Python project to get a typed Redis abstraction, a Redis Streams event bus, structured ARQ background workers, or a multi-channel notification engine. Every component is completely independent and can be installed as a separate extra.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# codex-platform 0.3.x
|
|
16
|
+
pip install "codex-platform>=0.3.0,<0.4.0"
|
|
17
|
+
|
|
18
|
+
# With Redis support
|
|
19
|
+
pip install "codex-platform[redis]>=0.3.0,<0.4.0"
|
|
20
|
+
|
|
21
|
+
# With ARQ background workers
|
|
22
|
+
pip install "codex-platform[arq]>=0.3.0,<0.4.0"
|
|
23
|
+
|
|
24
|
+
# With async SMTP notifications
|
|
25
|
+
pip install "codex-platform[notifications]>=0.3.0,<0.4.0"
|
|
26
|
+
|
|
27
|
+
# Redis Streams
|
|
28
|
+
pip install "codex-platform[streams]>=0.3.0,<0.4.0"
|
|
29
|
+
|
|
30
|
+
# Everything
|
|
31
|
+
pip install "codex-platform[all]>=0.3.0,<0.4.0"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Requires Python 3.12 or newer.
|
|
35
|
+
Installs `codex-core>=0.3.0,<0.10.0` automatically as a dependency.
|
|
36
|
+
|
|
37
|
+
## Development
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
uv sync --extra dev
|
|
41
|
+
uv run pytest
|
|
42
|
+
uv run mypy src/
|
|
43
|
+
uv run pre-commit run --all-files
|
|
44
|
+
uv build --no-sources
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Quick Start
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from redis.asyncio import Redis
|
|
51
|
+
from codex_platform.redis_service import RedisService
|
|
52
|
+
|
|
53
|
+
redis = Redis(host="localhost", port=6379)
|
|
54
|
+
service = RedisService(redis)
|
|
55
|
+
|
|
56
|
+
await service.hash.set_json("user:42", "profile", {"name": "Alex"})
|
|
57
|
+
data = await service.hash.get_json("user:42", "profile")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Modules
|
|
61
|
+
|
|
62
|
+
| Module | Extra | Description |
|
|
63
|
+
| :--- | :--- | :--- |
|
|
64
|
+
| `redis_service` | `[redis]` | Typed async Redis abstraction — Hash, String, List, Set, ZSet, JSON, Pipeline |
|
|
65
|
+
| `streams` | `[streams]` | Redis Streams producer/consumer with consumer groups, retry, and DLQ |
|
|
66
|
+
| `workers.arq` | `[arq]` | ARQ worker base infrastructure — health probes, DLQ retry, CORE_FUNCTIONS |
|
|
67
|
+
| `notifications` | `[notifications]` | Multi-channel notification engine — SMTP, ARQ/Direct delivery, Jinja2 renderer |
|
|
68
|
+
|
|
69
|
+
## Documentation
|
|
70
|
+
|
|
71
|
+
Full docs with architecture, API reference, and data flow diagrams:
|
|
72
|
+
|
|
73
|
+
**[codexdlc.github.io/codex-platform](https://codexdlc.github.io/codex-platform/)**
|
|
74
|
+
|
|
75
|
+
## Part of the Codex ecosystem
|
|
76
|
+
|
|
77
|
+
| Package | Role |
|
|
78
|
+
| :--- | :--- |
|
|
79
|
+
| [codex-core](https://github.com/codexdlc/codex-core) | Foundation — immutable DTOs, PII masking, env settings |
|
|
80
|
+
| **codex-platform** | Infrastructure — Redis, Streams, ARQ workers, Notifications |
|
|
81
|
+
| [codex-ai](https://github.com/codexdlc/codex-ai) | LLM layer — unified async interface for OpenAI, Gemini, Anthropic |
|
|
82
|
+
| [codex-services](https://github.com/codexdlc/codex-services) | Business logic — Booking engine, CRM, Calendar |
|
|
83
|
+
|
|
84
|
+
Each library is **fully standalone** — install only what your project needs.
|
|
85
|
+
Together they form the backbone of **[codex-bot](https://github.com/codexdlc/codex-bot)**
|
|
86
|
+
(Telegram AI-agent infrastructure built on aiogram) and
|
|
87
|
+
**[codex-django](https://github.com/codexdlc/codex-django)** (Django integration layer).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<!-- type: LANDING -->
|
|
2
|
+
|
|
3
|
+
# codex-platform
|
|
4
|
+
|
|
5
|
+
Infrastructure library for the Codex WaaS toolkit. Provides background task workers (ARQ), Redis service abstraction, Redis Streams event bus, and a multi-channel notification engine.
|
|
6
|
+
|
|
7
|
+
Built to be dropped into any Python 3.12+ service as a set of composable, independently installable extras.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# codex-platform 0.3.x
|
|
13
|
+
pip install "codex-platform>=0.3.0,<0.4.0"
|
|
14
|
+
|
|
15
|
+
# With Redis support
|
|
16
|
+
pip install "codex-platform[redis]>=0.3.0,<0.4.0"
|
|
17
|
+
|
|
18
|
+
# With ARQ worker support
|
|
19
|
+
pip install "codex-platform[arq]>=0.3.0,<0.4.0"
|
|
20
|
+
|
|
21
|
+
# With async SMTP notifications
|
|
22
|
+
pip install "codex-platform[notifications]>=0.3.0,<0.4.0"
|
|
23
|
+
|
|
24
|
+
# Redis Streams
|
|
25
|
+
pip install "codex-platform[streams]>=0.3.0,<0.4.0"
|
|
26
|
+
|
|
27
|
+
# Everything
|
|
28
|
+
pip install "codex-platform[all]>=0.3.0,<0.4.0"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Requires Python 3.12 or newer.
|
|
32
|
+
Installs `codex-core>=0.3.0,<0.10.0` automatically as a dependency.
|
|
33
|
+
|
|
34
|
+
## Quick Start
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
from redis.asyncio import Redis
|
|
38
|
+
from codex_platform.redis_service import RedisService
|
|
39
|
+
|
|
40
|
+
redis = Redis(host="localhost", port=6379)
|
|
41
|
+
service = RedisService(redis)
|
|
42
|
+
|
|
43
|
+
await service.hash.set_json("user:42", "profile", {"name": "Alex"})
|
|
44
|
+
data = await service.hash.get_json("user:42", "profile")
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
<!-- TODO: extract to tasks/ once tasks/ layer is created -->
|
|
48
|
+
|
|
49
|
+
## Navigation
|
|
50
|
+
|
|
51
|
+
| Section | Description |
|
|
52
|
+
| :--- | :--- |
|
|
53
|
+
| [Guide (EN)](en/architecture/notifications/README.md) | Architecture overviews and data-flow pages in English |
|
|
54
|
+
| [Руководство (RU)](ru/architecture/notifications/README.md) | Архитектурные страницы и схемы на русском |
|
|
55
|
+
| [API Reference](en/api/index.md) | English-only API reference generated from docstrings |
|
|
56
|
+
| [Changelog](changelog.md) | Version history |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* =============================================================
|
|
2
|
+
Codex DocSite Standard — extra.css
|
|
3
|
+
Navigation section/group headers — visually distinct
|
|
4
|
+
============================================================= */
|
|
5
|
+
|
|
6
|
+
.md-nav__item--section > .md-nav__link {
|
|
7
|
+
color: var(--md-typeset-a-color) !important;
|
|
8
|
+
font-weight: 700;
|
|
9
|
+
font-size: 0.72rem;
|
|
10
|
+
text-transform: uppercase;
|
|
11
|
+
letter-spacing: 0.09em;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.md-nav__item--section:not(:first-child) {
|
|
15
|
+
margin-top: 0.6em;
|
|
16
|
+
padding-top: 0.4em;
|
|
17
|
+
border-top: 1px solid var(--md-default-fg-color--lightest);
|
|
18
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
site_name: codex-platform
|
|
2
|
+
site_description: Infrastructure, background tasks (ARQ), Redis service and framework adapters for Codex
|
|
3
|
+
site_author: Codex Team
|
|
4
|
+
|
|
5
|
+
theme:
|
|
6
|
+
name: material
|
|
7
|
+
palette:
|
|
8
|
+
- media: "(prefers-color-scheme: light)"
|
|
9
|
+
scheme: default
|
|
10
|
+
primary: teal
|
|
11
|
+
accent: cyan
|
|
12
|
+
toggle:
|
|
13
|
+
icon: material/brightness-7
|
|
14
|
+
name: Switch to dark mode
|
|
15
|
+
- media: "(prefers-color-scheme: dark)"
|
|
16
|
+
scheme: slate
|
|
17
|
+
primary: teal
|
|
18
|
+
accent: cyan
|
|
19
|
+
toggle:
|
|
20
|
+
icon: material/brightness-4
|
|
21
|
+
name: Switch to light mode
|
|
22
|
+
features:
|
|
23
|
+
- navigation.tabs
|
|
24
|
+
- navigation.tabs.sticky
|
|
25
|
+
- navigation.sections
|
|
26
|
+
- navigation.expand
|
|
27
|
+
- navigation.top
|
|
28
|
+
- navigation.breadcrumbs
|
|
29
|
+
- search.suggest
|
|
30
|
+
- search.highlight
|
|
31
|
+
- content.code.copy
|
|
32
|
+
- content.code.annotate
|
|
33
|
+
|
|
34
|
+
extra:
|
|
35
|
+
version:
|
|
36
|
+
provider: mike
|
|
37
|
+
default: latest
|
|
38
|
+
|
|
39
|
+
extra_css:
|
|
40
|
+
- stylesheets/extra.css
|
|
41
|
+
|
|
42
|
+
markdown_extensions:
|
|
43
|
+
- pymdownx.superfences:
|
|
44
|
+
custom_fences:
|
|
45
|
+
- name: mermaid
|
|
46
|
+
class: mermaid
|
|
47
|
+
format: !!python/name:pymdownx.superfences.fence_code_format
|
|
48
|
+
- pymdownx.highlight:
|
|
49
|
+
anchor_linenums: true
|
|
50
|
+
- pymdownx.inlinehilite
|
|
51
|
+
- admonition
|
|
52
|
+
- pymdownx.details
|
|
53
|
+
|
|
54
|
+
plugins:
|
|
55
|
+
- search
|
|
56
|
+
- include-markdown
|
|
57
|
+
- mkdocstrings:
|
|
58
|
+
handlers:
|
|
59
|
+
python:
|
|
60
|
+
paths: [src]
|
|
61
|
+
options:
|
|
62
|
+
show_source: true
|
|
63
|
+
show_root_heading: true
|
|
64
|
+
show_root_full_path: false
|
|
65
|
+
show_category_heading: true
|
|
66
|
+
show_symbol_type_heading: true
|
|
67
|
+
show_symbol_type_toc: true
|
|
68
|
+
docstring_style: google
|
|
69
|
+
members_order: source
|
|
70
|
+
|
|
71
|
+
nav:
|
|
72
|
+
- Home: index.md
|
|
73
|
+
- Guide (EN):
|
|
74
|
+
- Architecture:
|
|
75
|
+
- Notifications:
|
|
76
|
+
- Overview: en/architecture/notifications/README.md
|
|
77
|
+
- Data Flow: en/architecture/notifications/data_flow.md
|
|
78
|
+
- Redis Service:
|
|
79
|
+
- Overview: en/architecture/redis_service/README.md
|
|
80
|
+
- Data Flow: en/architecture/redis_service/data_flow.md
|
|
81
|
+
- Streams:
|
|
82
|
+
- Overview: en/architecture/streams/README.md
|
|
83
|
+
- Data Flow: en/architecture/streams/data_flow.md
|
|
84
|
+
- Workers (ARQ):
|
|
85
|
+
- Overview: en/architecture/workers/README.md
|
|
86
|
+
- Data Flow: en/architecture/workers/data_flow.md
|
|
87
|
+
- Руководство (RU):
|
|
88
|
+
- Архитектура:
|
|
89
|
+
- Уведомления:
|
|
90
|
+
- Обзор: ru/architecture/notifications/README.md
|
|
91
|
+
- Поток данных: ru/architecture/notifications/data_flow.md
|
|
92
|
+
- Redis Сервис:
|
|
93
|
+
- Обзор: ru/architecture/redis_service/README.md
|
|
94
|
+
- Поток данных: ru/architecture/redis_service/data_flow.md
|
|
95
|
+
- Потоки:
|
|
96
|
+
- Обзор: ru/architecture/streams/README.md
|
|
97
|
+
- Поток данных: ru/architecture/streams/data_flow.md
|
|
98
|
+
- Воркеры (ARQ):
|
|
99
|
+
- Обзор: ru/architecture/workers/README.md
|
|
100
|
+
- Поток данных: ru/architecture/workers/data_flow.md
|
|
101
|
+
- API Reference:
|
|
102
|
+
- Overview: en/api/index.md
|
|
103
|
+
- Notifications:
|
|
104
|
+
- Overview: en/api/notifications/index.md
|
|
105
|
+
- DTOs: en/api/notifications/dto.md
|
|
106
|
+
- Channels: en/api/notifications/channels.md
|
|
107
|
+
- Orchestrator: en/api/notifications/orchestrator.md
|
|
108
|
+
- Registry: en/api/notifications/registry.md
|
|
109
|
+
- Renderer: en/api/notifications/renderer.md
|
|
110
|
+
- Delivery:
|
|
111
|
+
- Base Protocol: en/api/notifications/delivery/base.md
|
|
112
|
+
- ARQ: en/api/notifications/delivery/arq.md
|
|
113
|
+
- Direct: en/api/notifications/delivery/direct.md
|
|
114
|
+
- Redis Service:
|
|
115
|
+
- Overview: en/api/redis_service/index.md
|
|
116
|
+
- Base: en/api/redis_service/base.md
|
|
117
|
+
- Keys: en/api/redis_service/keys.md
|
|
118
|
+
- Service: en/api/redis_service/service.md
|
|
119
|
+
- Operations:
|
|
120
|
+
- Hash: en/api/redis_service/operations/hash.md
|
|
121
|
+
- JSON (String): en/api/redis_service/operations/json_string.md
|
|
122
|
+
- JSON (Module): en/api/redis_service/operations/json_module.md
|
|
123
|
+
- List: en/api/redis_service/operations/list_.md
|
|
124
|
+
- Pipeline: en/api/redis_service/operations/pipeline.md
|
|
125
|
+
- Set: en/api/redis_service/operations/set_.md
|
|
126
|
+
- String: en/api/redis_service/operations/string.md
|
|
127
|
+
- ZSet: en/api/redis_service/operations/zset.md
|
|
128
|
+
- Streams:
|
|
129
|
+
- Overview: en/api/streams/index.md
|
|
130
|
+
- Producer: en/api/streams/producer.md
|
|
131
|
+
- Consumer: en/api/streams/consumer.md
|
|
132
|
+
- Dispatcher: en/api/streams/dispatcher.md
|
|
133
|
+
- Processor: en/api/streams/processor.md
|
|
134
|
+
- Router: en/api/streams/router.md
|
|
135
|
+
- Workers (ARQ):
|
|
136
|
+
- Overview: en/api/workers/arq/index.md
|
|
137
|
+
- Base: en/api/workers/arq/base.md
|
|
138
|
+
- Config: en/api/workers/arq/config.md
|
|
139
|
+
- Task Utils: en/api/workers/arq/task_utils.md
|
|
140
|
+
- Types: en/api/workers/arq/types.md
|
|
141
|
+
- Changelog: changelog.md
|