codex-platform 0.5.2__tar.gz → 0.6.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.
Files changed (217) hide show
  1. codex_platform-0.6.0/.agents/skills/codex-platform-maintainer/SKILL.md +12 -0
  2. {codex_platform-0.5.2 → codex_platform-0.6.0}/AGENTS.md +4 -0
  3. {codex_platform-0.5.2 → codex_platform-0.6.0}/CHANGELOG.md +12 -0
  4. {codex_platform-0.5.2 → codex_platform-0.6.0}/PKG-INFO +32 -19
  5. {codex_platform-0.5.2 → codex_platform-0.6.0}/README.md +24 -11
  6. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/notifications/README.md +1 -1
  7. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/notifications/data_flow.md +1 -1
  8. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/redis_service/README.md +1 -1
  9. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/redis_service/data_flow.md +1 -1
  10. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/streams/README.md +1 -1
  11. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/streams/data_flow.md +1 -1
  12. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/workers/README.md +1 -1
  13. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/architecture/workers/data_flow.md +1 -1
  14. codex_platform-0.6.0/docs/en/guides/agent-skills.md +27 -0
  15. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/index.md +11 -9
  16. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/notifications/README.md +1 -1
  17. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/notifications/data_flow.md +1 -1
  18. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/redis_service/README.md +1 -1
  19. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/redis_service/data_flow.md +1 -1
  20. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/streams/README.md +1 -1
  21. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/streams/data_flow.md +1 -1
  22. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/workers/README.md +1 -1
  23. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/ru/architecture/workers/data_flow.md +1 -1
  24. codex_platform-0.6.0/docs/ru/guides/agent-skills.md +25 -0
  25. {codex_platform-0.5.2 → codex_platform-0.6.0}/mkdocs.yml +2 -0
  26. {codex_platform-0.5.2 → codex_platform-0.6.0}/pyproject.toml +4 -4
  27. codex_platform-0.6.0/src/codex_platform/agent_skills/__init__.py +1 -0
  28. codex_platform-0.6.0/src/codex_platform/agent_skills/__main__.py +4 -0
  29. codex_platform-0.6.0/src/codex_platform/agent_skills/cli.py +39 -0
  30. codex_platform-0.6.0/src/codex_platform/agent_skills/fs_transaction.py +183 -0
  31. codex_platform-0.6.0/src/codex_platform/agent_skills/manifest_rules.py +153 -0
  32. codex_platform-0.6.0/src/codex_platform/agent_skills/orchestrator.py +225 -0
  33. codex_platform-0.6.0/src/codex_platform/agent_skills/resources/SKILL.md +19 -0
  34. codex_platform-0.6.0/src/codex_platform/agent_skills/resources/__init__.py +1 -0
  35. codex_platform-0.6.0/src/codex_platform/agent_skills/resources/references/arq.md +20 -0
  36. codex_platform-0.6.0/src/codex_platform/agent_skills/resources/references/messaging.md +35 -0
  37. codex_platform-0.6.0/src/codex_platform/agent_skills/resources/references/redis.md +18 -0
  38. codex_platform-0.6.0/src/codex_platform/agent_skills/resources/references/streams.md +22 -0
  39. codex_platform-0.6.0/tests/unit/test_agent_skills.py +374 -0
  40. {codex_platform-0.5.2 → codex_platform-0.6.0}/uv.lock +113 -80
  41. {codex_platform-0.5.2 → codex_platform-0.6.0}/.agents/rules/graphify.md +0 -0
  42. {codex_platform-0.5.2 → codex_platform-0.6.0}/.github/workflows/ci.yml +0 -0
  43. {codex_platform-0.5.2 → codex_platform-0.6.0}/.github/workflows/docs.yml +0 -0
  44. {codex_platform-0.5.2 → codex_platform-0.6.0}/.github/workflows/publish.yml +0 -0
  45. {codex_platform-0.5.2 → codex_platform-0.6.0}/.gitignore +0 -0
  46. {codex_platform-0.5.2 → codex_platform-0.6.0}/.pre-commit-config.yaml +0 -0
  47. {codex_platform-0.5.2 → codex_platform-0.6.0}/.python-version +0 -0
  48. {codex_platform-0.5.2 → codex_platform-0.6.0}/CLAUDE.md +0 -0
  49. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/changelog.md +0 -0
  50. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/dev/messaging/00_overview.md +0 -0
  51. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/dev/messaging/01_core_dtos_and_protocols.md +0 -0
  52. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/dev/messaging/02_channels_and_registry.md +0 -0
  53. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/dev/messaging/03_renderer_and_templates.md +0 -0
  54. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/dev/messaging/04_threading_and_headers.md +0 -0
  55. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/dev/messaging/05_workers_contract.md +0 -0
  56. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/dev/messaging/06_migration_from_notifications.md +0 -0
  57. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/index.md +0 -0
  58. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/audience.md +0 -0
  59. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/campaigns/dto.md +0 -0
  60. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/campaigns/index.md +0 -0
  61. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/campaigns/protocols.md +0 -0
  62. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/channels.md +0 -0
  63. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/clients/smtp.md +0 -0
  64. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/delivery/arq.md +0 -0
  65. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/delivery/base.md +0 -0
  66. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/delivery/direct.md +0 -0
  67. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/dto.md +0 -0
  68. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/index.md +0 -0
  69. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/orchestrator.md +0 -0
  70. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/registry.md +0 -0
  71. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/renderer.md +0 -0
  72. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/threading.md +0 -0
  73. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/messaging/workers_contract.md +0 -0
  74. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/channels.md +0 -0
  75. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/delivery/arq.md +0 -0
  76. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/delivery/base.md +0 -0
  77. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/delivery/direct.md +0 -0
  78. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/dto.md +0 -0
  79. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/index.md +0 -0
  80. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/orchestrator.md +0 -0
  81. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/registry.md +0 -0
  82. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/notifications/renderer.md +0 -0
  83. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/base.md +0 -0
  84. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/index.md +0 -0
  85. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/keys.md +0 -0
  86. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/hash.md +0 -0
  87. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/json_module.md +0 -0
  88. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/json_string.md +0 -0
  89. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/list_.md +0 -0
  90. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/pipeline.md +0 -0
  91. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/set_.md +0 -0
  92. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/string.md +0 -0
  93. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/operations/zset.md +0 -0
  94. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/redis_service/service.md +0 -0
  95. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/streams/consumer.md +0 -0
  96. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/streams/dispatcher.md +0 -0
  97. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/streams/index.md +0 -0
  98. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/streams/processor.md +0 -0
  99. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/streams/producer.md +0 -0
  100. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/streams/router.md +0 -0
  101. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/workers/arq/base.md +0 -0
  102. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/workers/arq/config.md +0 -0
  103. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/workers/arq/index.md +0 -0
  104. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/workers/arq/task_utils.md +0 -0
  105. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/en/api/workers/arq/types.md +0 -0
  106. {codex_platform-0.5.2 → codex_platform-0.6.0}/docs/stylesheets/extra.css +0 -0
  107. {codex_platform-0.5.2 → codex_platform-0.6.0}/project_structure.txt +0 -0
  108. {codex_platform-0.5.2 → codex_platform-0.6.0}/redis-backends-recovery.md +0 -0
  109. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/__init__.py +0 -0
  110. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/__init__.py +0 -0
  111. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/audience.py +0 -0
  112. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/campaigns/__init__.py +0 -0
  113. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/campaigns/dto.py +0 -0
  114. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/campaigns/protocols.py +0 -0
  115. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/channels.py +0 -0
  116. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/clients/__init__.py +0 -0
  117. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/clients/smtp.py +0 -0
  118. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/delivery/__init__.py +0 -0
  119. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/delivery/arq.py +0 -0
  120. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/delivery/base.py +0 -0
  121. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/delivery/direct.py +0 -0
  122. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/dto.py +0 -0
  123. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/interfaces.py +0 -0
  124. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/orchestrator.py +0 -0
  125. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/registry.py +0 -0
  126. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/renderer.py +0 -0
  127. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/threading.py +0 -0
  128. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/messaging/workers_contract.py +0 -0
  129. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/__init__.py +0 -0
  130. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/channels.py +0 -0
  131. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/clients/__init__.py +0 -0
  132. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/clients/smtp.py +0 -0
  133. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/delivery/__init__.py +0 -0
  134. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/delivery/arq.py +0 -0
  135. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/delivery/base.py +0 -0
  136. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/delivery/direct.py +0 -0
  137. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/dto.py +0 -0
  138. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/interfaces.py +0 -0
  139. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/orchestrator.py +0 -0
  140. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/registry.py +0 -0
  141. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/notifications/renderer.py +0 -0
  142. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/py.typed +0 -0
  143. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/__init__.py +0 -0
  144. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/base.py +0 -0
  145. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/exceptions.py +0 -0
  146. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/keys.py +0 -0
  147. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/managers/__init__.py +0 -0
  148. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/managers/base_manager.py +0 -0
  149. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/managers/site_settings.py +0 -0
  150. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/__init__.py +0 -0
  151. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/hash.py +0 -0
  152. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/json_module.py +0 -0
  153. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/json_string.py +0 -0
  154. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/list_.py +0 -0
  155. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/pipeline.py +0 -0
  156. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/set_.py +0 -0
  157. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/string.py +0 -0
  158. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/sync_hash.py +0 -0
  159. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/sync_string.py +0 -0
  160. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/operations/zset.py +0 -0
  161. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/redis_service/service.py +0 -0
  162. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/__init__.py +0 -0
  163. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/codec.py +0 -0
  164. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/consumer.py +0 -0
  165. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/dispatcher.py +0 -0
  166. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/processor.py +0 -0
  167. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/producer.py +0 -0
  168. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/router.py +0 -0
  169. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/streams/runtime.py +0 -0
  170. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/workers/__init__.py +0 -0
  171. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/workers/arq/__init__.py +0 -0
  172. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/workers/arq/base.py +0 -0
  173. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/workers/arq/config.py +0 -0
  174. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/workers/arq/task_utils.py +0 -0
  175. {codex_platform-0.5.2 → codex_platform-0.6.0}/src/codex_platform/workers/arq/types.py +0 -0
  176. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/integration/__init__.py +0 -0
  177. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/integration/conftest.py +0 -0
  178. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/integration/test_docs_build.py +0 -0
  179. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/integration/test_redis_service.py +0 -0
  180. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/integration/test_streams.py +0 -0
  181. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/__init__.py +0 -0
  182. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/conftest.py +0 -0
  183. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_arq_base.py +0 -0
  184. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_arq_config.py +0 -0
  185. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_arq_public_api.py +0 -0
  186. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_arq_task_utils.py +0 -0
  187. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_messaging_api.py +0 -0
  188. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_notification_adapters.py +0 -0
  189. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_notification_channels.py +0 -0
  190. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_notification_dto.py +0 -0
  191. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_notification_orchestrator.py +0 -0
  192. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_notification_registry.py +0 -0
  193. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_notification_renderer.py +0 -0
  194. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_notification_smtp.py +0 -0
  195. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_base.py +0 -0
  196. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_hash.py +0 -0
  197. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_keys.py +0 -0
  198. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_list.py +0 -0
  199. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_manager.py +0 -0
  200. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_pipeline.py +0 -0
  201. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_service.py +0 -0
  202. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_set.py +0 -0
  203. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_string.py +0 -0
  204. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_redis_zset.py +0 -0
  205. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_site_settings_manager.py +0 -0
  206. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_stream_consumer.py +0 -0
  207. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_stream_dispatcher.py +0 -0
  208. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_stream_processor.py +0 -0
  209. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_stream_producer.py +0 -0
  210. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_stream_router.py +0 -0
  211. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_stream_runtime.py +0 -0
  212. {codex_platform-0.5.2 → codex_platform-0.6.0}/tests/unit/test_sync_operations.py +0 -0
  213. {codex_platform-0.5.2 → codex_platform-0.6.0}/tools/__init__.py +0 -0
  214. {codex_platform-0.5.2 → codex_platform-0.6.0}/tools/dev/README.md +0 -0
  215. {codex_platform-0.5.2 → codex_platform-0.6.0}/tools/dev/__init__.py +0 -0
  216. {codex_platform-0.5.2 → codex_platform-0.6.0}/tools/dev/check.py +0 -0
  217. {codex_platform-0.5.2 → codex_platform-0.6.0}/tools/dev/generate_project_tree.py +0 -0
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: codex-platform-maintainer
3
+ description: Use for maintaining this repository's Redis, Streams, ARQ, messaging, packaging, or release integration.
4
+ ---
5
+
6
+ # codex-platform maintenance
7
+
8
+ This repository publishes the `codex-platform` library. Keep framework-independent infrastructure in `src/codex_platform/`; application policy and business rules belong to consumers. The public API is exposed by each component's `__init__.py`. Inspect those exports and the corresponding unit tests before changing a contract.
9
+
10
+ Components are independent optional surfaces: `redis_service` needs Redis, `streams` uses Redis Streams, `workers.arq` needs ARQ, and `messaging` handles notification primitives. `notifications` is deprecated compatibility code; new behavior belongs in `messaging` and compatibility changes need explicit tests.
11
+
12
+ The canonical consumer skill lives in `src/codex_platform/agent_skills/resources/`. Treat its installed copies in other projects as managed output. When changing installer behavior, exercise install, update, delete, and status in a temporary consumer directory and inspect wheel and sdist payloads. Run focused tests and configured lint/types for affected code. The root `AGENTS.md` requires refreshing the shared graph after code changes.
@@ -7,3 +7,7 @@ Rules:
7
7
  - If `../graphify-out/wiki/index.md` exists, navigate it instead of reading raw files.
8
8
  - For cross-module questions, prefer `graphify query`, `graphify path`, or `graphify explain` (run from root or via MCP) over grep.
9
9
  - After modifying code files in this session, run `graphify update .` from the **workspace root** to keep the global graph current.
10
+
11
+ ## Project maintenance
12
+
13
+ For maintenance of this library, use [codex-platform-maintainer](.agents/skills/codex-platform-maintainer/SKILL.md). The distributable consumer guidance is maintained separately in `src/codex_platform/agent_skills/resources/`.
@@ -5,6 +5,18 @@ Grouped by `Added` · `Changed` · `Deprecated` · `Removed` · `Fixed`.
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.6.0] - 2026-10-09
9
+
10
+ ### Added
11
+ - Added an optional offline installer for the `codex-platform` consumer agent skill, with versioned ownership and safe install, update, status, and delete operations.
12
+
13
+ ### Changed
14
+ - Raised the `codex-core` baseline to the published `0.5.0` release.
15
+ - Raised the minimum supported `aiosmtplib`, `mkdocs-material`, and development `pip` versions to patched releases and refreshed the lockfile for vulnerable transitive dependencies.
16
+
17
+ ### Fixed
18
+ - Corrected architecture-guide links and refreshed installation examples for the `0.6.x` release line.
19
+
8
20
  ## [0.5.2] - 2026-05-07
9
21
 
10
22
  ### Added
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: codex-platform
3
- Version: 0.5.2
3
+ Version: 0.6.0
4
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/
@@ -15,17 +15,17 @@ Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Programming Language :: Python :: 3.12
16
16
  Classifier: Programming Language :: Python :: 3.13
17
17
  Requires-Python: >=3.12
18
- Requires-Dist: codex-core<0.10.0,>=0.3.0
18
+ Requires-Dist: codex-core<0.10.0,>=0.5.0
19
19
  Requires-Dist: pydantic<3.0,>=2.0
20
20
  Provides-Extra: all
21
- Requires-Dist: aiosmtplib>=3.0; extra == 'all'
21
+ Requires-Dist: aiosmtplib>=5.1.2; extra == 'all'
22
22
  Requires-Dist: arq>=0.25; extra == 'all'
23
23
  Requires-Dist: jinja2>=3.1; extra == 'all'
24
24
  Requires-Dist: redis>=5.0; extra == 'all'
25
25
  Provides-Extra: arq
26
26
  Requires-Dist: arq>=0.25; extra == 'arq'
27
27
  Provides-Extra: dev
28
- Requires-Dist: aiosmtplib>=3.0; extra == 'dev'
28
+ Requires-Dist: aiosmtplib>=5.1.2; extra == 'dev'
29
29
  Requires-Dist: arq>=0.25; extra == 'dev'
30
30
  Requires-Dist: bandit>=1.7; extra == 'dev'
31
31
  Requires-Dist: detect-secrets>=1.5; extra == 'dev'
@@ -34,7 +34,7 @@ Requires-Dist: jinja2>=3.1; extra == 'dev'
34
34
  Requires-Dist: lupa>2.6; extra == 'dev'
35
35
  Requires-Dist: mypy>=1.10; extra == 'dev'
36
36
  Requires-Dist: pip-audit>=2.7; extra == 'dev'
37
- Requires-Dist: pip>=26.1; extra == 'dev'
37
+ Requires-Dist: pip>=26.2.1; extra == 'dev'
38
38
  Requires-Dist: pre-commit>=3.0; extra == 'dev'
39
39
  Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
40
40
  Requires-Dist: pytest-cov; extra == 'dev'
@@ -44,11 +44,11 @@ Requires-Dist: ruff>=0.4; extra == 'dev'
44
44
  Provides-Extra: docs
45
45
  Requires-Dist: mike>=2.0; extra == 'docs'
46
46
  Requires-Dist: mkdocs-include-markdown-plugin; extra == 'docs'
47
- Requires-Dist: mkdocs-material>=9.0; extra == 'docs'
47
+ Requires-Dist: mkdocs-material>=9.7.7; extra == 'docs'
48
48
  Requires-Dist: mkdocs<2.0,>=1.5; extra == 'docs'
49
49
  Requires-Dist: mkdocstrings[python]>=0.24; extra == 'docs'
50
50
  Provides-Extra: notifications
51
- Requires-Dist: aiosmtplib>=3.0; extra == 'notifications'
51
+ Requires-Dist: aiosmtplib>=5.1.2; extra == 'notifications'
52
52
  Requires-Dist: jinja2>=3.1; extra == 'notifications'
53
53
  Provides-Extra: redis
54
54
  Requires-Dist: redis>=5.0; extra == 'redis'
@@ -61,7 +61,7 @@ Description-Content-Type: text/markdown
61
61
  [![PyPI version](https://img.shields.io/pypi/v/codex-platform.svg)](https://pypi.org/project/codex-platform/)
62
62
  [![Python](https://img.shields.io/pypi/pyversions/codex-platform.svg)](https://pypi.org/project/codex-platform/)
63
63
  [![CI](https://github.com/codexdlc/codex-platform/actions/workflows/ci.yml/badge.svg)](https://github.com/codexdlc/codex-platform/actions/workflows/ci.yml)
64
- [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
64
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
65
65
 
66
66
  `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.
67
67
 
@@ -70,27 +70,27 @@ Description-Content-Type: text/markdown
70
70
  ## Install
71
71
 
72
72
  ```bash
73
- # codex-platform 0.3.x
74
- pip install "codex-platform>=0.3.0,<0.4.0"
73
+ # codex-platform 0.6.x
74
+ pip install "codex-platform>=0.6.0,<0.7.0"
75
75
 
76
76
  # With Redis support
77
- pip install "codex-platform[redis]>=0.3.0,<0.4.0"
77
+ pip install "codex-platform[redis]>=0.6.0,<0.7.0"
78
78
 
79
79
  # With ARQ background workers
80
- pip install "codex-platform[arq]>=0.3.0,<0.4.0"
80
+ pip install "codex-platform[arq]>=0.6.0,<0.7.0"
81
81
 
82
82
  # With async SMTP notifications
83
- pip install "codex-platform[notifications]>=0.3.0,<0.4.0"
83
+ pip install "codex-platform[notifications]>=0.6.0,<0.7.0"
84
84
 
85
85
  # Redis Streams
86
- pip install "codex-platform[streams]>=0.3.0,<0.4.0"
86
+ pip install "codex-platform[streams]>=0.6.0,<0.7.0"
87
87
 
88
88
  # Everything
89
- pip install "codex-platform[all]>=0.3.0,<0.4.0"
89
+ pip install "codex-platform[all]>=0.6.0,<0.7.0"
90
90
  ```
91
91
 
92
92
  Requires Python 3.12 or newer.
93
- Installs `codex-core>=0.3.0,<0.10.0` automatically as a dependency.
93
+ Installs `codex-core>=0.5.0,<0.10.0` automatically as a dependency.
94
94
 
95
95
  ## Development
96
96
 
@@ -122,7 +122,20 @@ data = await service.hash.get_json("user:42", "profile")
122
122
  | `redis_service` | `[redis]` | Typed async Redis abstraction — Hash, String, List, Set, ZSet, JSON, Pipeline |
123
123
  | `streams` | `[streams]` | Redis Streams producer/consumer with consumer groups, retry, and DLQ |
124
124
  | `workers.arq` | `[arq]` | ARQ worker base infrastructure — health probes, DLQ retry, CORE_FUNCTIONS |
125
- | `notifications` | `[notifications]` | Multi-channel notification engine — SMTP, ARQ/Direct delivery, Jinja2 renderer |
125
+ | `messaging` | `[notifications]` | Multi-channel notification primitives — SMTP, ARQ/direct delivery, Jinja2 renderer; `notifications` remains a deprecated compatibility import |
126
+
127
+ ## Optional agent skill (starting in 0.6.0)
128
+
129
+ Starting with `codex-platform` 0.6.0, the package includes an offline coding-agent skill for its Redis, Streams, ARQ, and messaging APIs. Installing the Python package does not change a project. To copy the skill into an existing project, run these commands from the Python environment where `codex-platform` is installed:
130
+
131
+ ```bash
132
+ python -m codex_platform.agent_skills install --project /path/to/project
133
+ python -m codex_platform.agent_skills status --project /path/to/project
134
+ python -m codex_platform.agent_skills update --project /path/to/project
135
+ python -m codex_platform.agent_skills delete --project /path/to/project
136
+ ```
137
+
138
+ The installer manages `.agents/skills/codex-platform/` and a bounded reference block in the project's root `AGENTS.md`. It preserves unrelated project guidance, tracks package version and file hashes, and refuses to overwrite locally edited managed files. See the [agent skill guide](docs/en/guides/agent-skills.md) for lifecycle and recovery details.
126
139
 
127
140
  ## Documentation
128
141
 
@@ -135,7 +148,7 @@ Full docs with architecture, API reference, and data flow diagrams:
135
148
  | Package | Role |
136
149
  | :--- | :--- |
137
150
  | [codex-core](https://github.com/codexdlc/codex-core) | Foundation — immutable DTOs, PII masking, env settings |
138
- | **codex-platform** | Infrastructure — Redis, Streams, ARQ workers, Notifications |
151
+ | **codex-platform** | Infrastructure — Redis, Streams, ARQ workers, messaging |
139
152
  | [codex-ai](https://github.com/codexdlc/codex-ai) | LLM layer — unified async interface for OpenAI, Gemini, Anthropic |
140
153
  | [codex-services](https://github.com/codexdlc/codex-services) | Business logic — Booking engine, CRM, Calendar |
141
154
 
@@ -3,7 +3,7 @@
3
3
  [![PyPI version](https://img.shields.io/pypi/v/codex-platform.svg)](https://pypi.org/project/codex-platform/)
4
4
  [![Python](https://img.shields.io/pypi/pyversions/codex-platform.svg)](https://pypi.org/project/codex-platform/)
5
5
  [![CI](https://github.com/codexdlc/codex-platform/actions/workflows/ci.yml/badge.svg)](https://github.com/codexdlc/codex-platform/actions/workflows/ci.yml)
6
- [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
6
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
7
7
 
8
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
9
 
@@ -12,27 +12,27 @@
12
12
  ## Install
13
13
 
14
14
  ```bash
15
- # codex-platform 0.3.x
16
- pip install "codex-platform>=0.3.0,<0.4.0"
15
+ # codex-platform 0.6.x
16
+ pip install "codex-platform>=0.6.0,<0.7.0"
17
17
 
18
18
  # With Redis support
19
- pip install "codex-platform[redis]>=0.3.0,<0.4.0"
19
+ pip install "codex-platform[redis]>=0.6.0,<0.7.0"
20
20
 
21
21
  # With ARQ background workers
22
- pip install "codex-platform[arq]>=0.3.0,<0.4.0"
22
+ pip install "codex-platform[arq]>=0.6.0,<0.7.0"
23
23
 
24
24
  # With async SMTP notifications
25
- pip install "codex-platform[notifications]>=0.3.0,<0.4.0"
25
+ pip install "codex-platform[notifications]>=0.6.0,<0.7.0"
26
26
 
27
27
  # Redis Streams
28
- pip install "codex-platform[streams]>=0.3.0,<0.4.0"
28
+ pip install "codex-platform[streams]>=0.6.0,<0.7.0"
29
29
 
30
30
  # Everything
31
- pip install "codex-platform[all]>=0.3.0,<0.4.0"
31
+ pip install "codex-platform[all]>=0.6.0,<0.7.0"
32
32
  ```
33
33
 
34
34
  Requires Python 3.12 or newer.
35
- Installs `codex-core>=0.3.0,<0.10.0` automatically as a dependency.
35
+ Installs `codex-core>=0.5.0,<0.10.0` automatically as a dependency.
36
36
 
37
37
  ## Development
38
38
 
@@ -64,7 +64,20 @@ data = await service.hash.get_json("user:42", "profile")
64
64
  | `redis_service` | `[redis]` | Typed async Redis abstraction — Hash, String, List, Set, ZSet, JSON, Pipeline |
65
65
  | `streams` | `[streams]` | Redis Streams producer/consumer with consumer groups, retry, and DLQ |
66
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 |
67
+ | `messaging` | `[notifications]` | Multi-channel notification primitives — SMTP, ARQ/direct delivery, Jinja2 renderer; `notifications` remains a deprecated compatibility import |
68
+
69
+ ## Optional agent skill (starting in 0.6.0)
70
+
71
+ Starting with `codex-platform` 0.6.0, the package includes an offline coding-agent skill for its Redis, Streams, ARQ, and messaging APIs. Installing the Python package does not change a project. To copy the skill into an existing project, run these commands from the Python environment where `codex-platform` is installed:
72
+
73
+ ```bash
74
+ python -m codex_platform.agent_skills install --project /path/to/project
75
+ python -m codex_platform.agent_skills status --project /path/to/project
76
+ python -m codex_platform.agent_skills update --project /path/to/project
77
+ python -m codex_platform.agent_skills delete --project /path/to/project
78
+ ```
79
+
80
+ The installer manages `.agents/skills/codex-platform/` and a bounded reference block in the project's root `AGENTS.md`. It preserves unrelated project guidance, tracks package version and file hashes, and refuses to overwrite locally edited managed files. See the [agent skill guide](docs/en/guides/agent-skills.md) for lifecycle and recovery details.
68
81
 
69
82
  ## Documentation
70
83
 
@@ -77,7 +90,7 @@ Full docs with architecture, API reference, and data flow diagrams:
77
90
  | Package | Role |
78
91
  | :--- | :--- |
79
92
  | [codex-core](https://github.com/codexdlc/codex-core) | Foundation — immutable DTOs, PII masking, env settings |
80
- | **codex-platform** | Infrastructure — Redis, Streams, ARQ workers, Notifications |
93
+ | **codex-platform** | Infrastructure — Redis, Streams, ARQ workers, messaging |
81
94
  | [codex-ai](https://github.com/codexdlc/codex-ai) | LLM layer — unified async interface for OpenAI, Gemini, Anthropic |
82
95
  | [codex-services](https://github.com/codexdlc/codex-services) | Business logic — Booking engine, CRM, Calendar |
83
96
 
@@ -63,4 +63,4 @@ NotificationEngine.send(payload_dto)
63
63
  ## See Also
64
64
 
65
65
  - [Data Flow →](data_flow.md)
66
- - [API Reference →](../../../api/notifications/index.md)
66
+ - [API Reference →](../../api/notifications/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Notifications](README.md) | [Home](../../index.md)
3
+ [← Notifications](README.md) | [Home](../../../index.md)
4
4
 
5
5
  # Data Flow: Notifications
6
6
 
@@ -59,4 +59,4 @@ Selective composition: use Operations classes directly if you don't need all typ
59
59
  ## See Also
60
60
 
61
61
  - [Data Flow →](data_flow.md)
62
- - [API Reference →](../../../api/redis_service/index.md)
62
+ - [API Reference →](../../api/redis_service/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Redis Service](README.md) | [Home](../../index.md)
3
+ [← Redis Service](README.md) | [Home](../../../index.md)
4
4
 
5
5
  # Data Flow: Redis Service
6
6
 
@@ -69,4 +69,4 @@ App → StreamProducer StreamConsumer (XREADGROUP)
69
69
  ## See Also
70
70
 
71
71
  - [Data Flow →](data_flow.md)
72
- - [API Reference →](../../../api/streams/index.md)
72
+ - [API Reference →](../../api/streams/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Streams](README.md) | [Home](../../index.md)
3
+ [← Streams](README.md) | [Home](../../../index.md)
4
4
 
5
5
  # Data Flow: Streams
6
6
 
@@ -59,4 +59,4 @@ BaseArqService (enqueue from application code / other workers)
59
59
 
60
60
  - [Data Flow →](data_flow.md)
61
61
  - [Streams retry integration →](../streams/README.md)
62
- - [API Reference →](../../../api/workers/arq/index.md)
62
+ - [API Reference →](../../api/workers/arq/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Workers](README.md) | [Home](../../index.md)
3
+ [← Workers](README.md) | [Home](../../../index.md)
4
4
 
5
5
  # Data Flow: Workers (ARQ)
6
6
 
@@ -0,0 +1,27 @@
1
+ # Agent skill installer
2
+
3
+ Starting in version 0.6.0, `codex-platform` includes an optional offline consumer skill. The package owns its source in `codex_platform.agent_skills.resources`; installation copies it into an existing project at `.agents/skills/codex-platform/` and adds a bounded reference block to that project's root `AGENTS.md`. Runtime use of the library does not require installing the skill.
4
+
5
+ Use the Python environment containing `codex-platform`:
6
+
7
+ ```bash
8
+ python -m codex_platform.agent_skills install --project /path/to/project
9
+ python -m codex_platform.agent_skills status --project /path/to/project
10
+ python -m codex_platform.agent_skills update --project /path/to/project
11
+ python -m codex_platform.agent_skills delete --project /path/to/project
12
+ ```
13
+
14
+ `--project` must name an existing directory. `install` is idempotent for a current installation. After a package upgrade, `status` reports that the copy needs an update; run `update` to refresh it. `status` exits with code 0 only when the installed version, payload hashes, and `AGENTS.md` block are current. Absence, edits, or corruption return code 1.
15
+
16
+ The installer tracks owned file hashes and the package version in `.agents/skills/codex-platform/.manifest.json`. It preserves unrelated `AGENTS.md` text and unowned files under the skill directory. `update` and `delete` refuse to change locally edited or missing managed files. If that happens, back up the changed files, move custom guidance into a separate project skill, and restore the original managed bytes from the same installed package version before retrying. For a damaged marker, back up `AGENTS.md` and repair the bounded block from the installer documentation before retrying. Do not edit the manifest hashes to accept changes. Unowned path collisions, malformed manifests or markers, symlinks, and Windows reparse points also stop the operation. Writes are staged with best-effort rollback for ordinary errors; this is not a crash-safe multi-file transaction or a concurrency lock.
17
+
18
+ The managed block is exactly the following four lines (with the project's line endings); the separator value is `0` when the block did not need a leading newline and `1` when it did:
19
+
20
+ ```markdown
21
+ <!-- codex-platform:skill:start -->
22
+ <!-- codex-platform:skill:separator=0 -->
23
+ Use [codex-platform](.agents/skills/codex-platform/SKILL.md) for codex_platform work.
24
+ <!-- codex-platform:skill:end -->
25
+ ```
26
+
27
+ The installed skill guides use of the public Redis, Streams, ARQ, and messaging APIs. It does not own a consumer's business rules, data keys, service adapters, or runtime configuration.
@@ -2,34 +2,34 @@
2
2
 
3
3
  # codex-platform
4
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.
5
+ Infrastructure library for the Codex WaaS toolkit. Provides background task workers (ARQ), Redis service abstraction, Redis Streams event bus, and framework-independent messaging primitives.
6
6
 
7
7
  Built to be dropped into any Python 3.12+ service as a set of composable, independently installable extras.
8
8
 
9
9
  ## Install
10
10
 
11
11
  ```bash
12
- # codex-platform 0.3.x
13
- pip install "codex-platform>=0.3.0,<0.4.0"
12
+ # codex-platform 0.6.x
13
+ pip install "codex-platform>=0.6.0,<0.7.0"
14
14
 
15
15
  # With Redis support
16
- pip install "codex-platform[redis]>=0.3.0,<0.4.0"
16
+ pip install "codex-platform[redis]>=0.6.0,<0.7.0"
17
17
 
18
18
  # With ARQ worker support
19
- pip install "codex-platform[arq]>=0.3.0,<0.4.0"
19
+ pip install "codex-platform[arq]>=0.6.0,<0.7.0"
20
20
 
21
21
  # With async SMTP notifications
22
- pip install "codex-platform[notifications]>=0.3.0,<0.4.0"
22
+ pip install "codex-platform[notifications]>=0.6.0,<0.7.0"
23
23
 
24
24
  # Redis Streams
25
- pip install "codex-platform[streams]>=0.3.0,<0.4.0"
25
+ pip install "codex-platform[streams]>=0.6.0,<0.7.0"
26
26
 
27
27
  # Everything
28
- pip install "codex-platform[all]>=0.3.0,<0.4.0"
28
+ pip install "codex-platform[all]>=0.6.0,<0.7.0"
29
29
  ```
30
30
 
31
31
  Requires Python 3.12 or newer.
32
- Installs `codex-core>=0.3.0,<0.10.0` automatically as a dependency.
32
+ Installs `codex-core>=0.5.0,<0.10.0` automatically as a dependency.
33
33
 
34
34
  ## Quick Start
35
35
 
@@ -48,6 +48,8 @@ data = await service.hash.get_json("user:42", "profile")
48
48
 
49
49
  ## Navigation
50
50
 
51
+ The optional offline [agent skill](en/guides/agent-skills.md) is available starting in 0.6.0. Its installer manages a library-owned skill and a bounded `AGENTS.md` link in an existing project.
52
+
51
53
  | Section | Description |
52
54
  | :--- | :--- |
53
55
  | [Guide (EN)](en/architecture/notifications/README.md) | Architecture overviews and data-flow pages in English |
@@ -63,4 +63,4 @@ NotificationEngine.send(payload_dto)
63
63
  ## Смотрите также
64
64
 
65
65
  - [Data Flow →](data_flow.md)
66
- - [API Reference →](../../../api/notifications/index.md)
66
+ - [API Reference →](../../../en/api/notifications/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Notifications](README.md) | [Главная](../../index.md)
3
+ [← Notifications](README.md) | [Главная](../../../index.md)
4
4
 
5
5
  # Data Flow: Notifications
6
6
 
@@ -59,4 +59,4 @@ RedisService (корень композиции)
59
59
  ## Смотрите также
60
60
 
61
61
  - [Data Flow →](data_flow.md)
62
- - [API Reference →](../../../api/redis_service/index.md)
62
+ - [API Reference →](../../../en/api/redis_service/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Redis Service](README.md) | [Главная](../../index.md)
3
+ [← Redis Service](README.md) | [Главная](../../../index.md)
4
4
 
5
5
  # Data Flow: Redis Service
6
6
 
@@ -69,4 +69,4 @@ App → StreamProducer StreamConsumer (XREADGROUP)
69
69
  ## Смотрите также
70
70
 
71
71
  - [Data Flow →](data_flow.md)
72
- - [API Reference →](../../../api/streams/index.md)
72
+ - [API Reference →](../../../en/api/streams/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Streams](README.md) | [Главная](../../index.md)
3
+ [← Streams](README.md) | [Главная](../../../index.md)
4
4
 
5
5
  # Data Flow: Streams
6
6
 
@@ -59,4 +59,4 @@ BaseArqService (постановка задач из кода приложен
59
59
 
60
60
  - [Data Flow →](data_flow.md)
61
61
  - [Интеграция с повторами Streams →](../streams/README.md)
62
- - [API Reference →](../../../api/workers/arq/index.md)
62
+ - [API Reference →](../../../en/api/workers/arq/index.md)
@@ -1,6 +1,6 @@
1
1
  <!-- type: CONCEPT -->
2
2
 
3
- [← Workers](README.md) | [Главная](../../index.md)
3
+ [← Workers](README.md) | [Главная](../../../index.md)
4
4
 
5
5
  # Data Flow: Workers (ARQ)
6
6
 
@@ -0,0 +1,25 @@
1
+ # Установка навыка для агента
2
+
3
+ Начиная с версии 0.6.0, `codex-platform` содержит необязательный автономный установщик навыка. Исходный текст навыка принадлежит библиотеке и находится в `codex_platform.agent_skills.resources`. Установщик копирует его в существующий проект по пути `.agents/skills/codex-platform/` и добавляет ограниченный блок со ссылкой в корневой `AGENTS.md`. Для обычного использования библиотеки навык устанавливать не нужно.
4
+
5
+ Запускайте команды в окружении Python, где установлен `codex-platform`:
6
+
7
+ ```bash
8
+ python -m codex_platform.agent_skills install --project /path/to/project
9
+ python -m codex_platform.agent_skills status --project /path/to/project
10
+ python -m codex_platform.agent_skills update --project /path/to/project
11
+ python -m codex_platform.agent_skills delete --project /path/to/project
12
+ ```
13
+
14
+ Параметр `--project` должен указывать на существующий каталог. После обновления пакета запустите `update`, чтобы обновить установленный навык. `status` возвращает код 0 только для актуальной установки с совпадающими версиями, хешами файлов и блоком `AGENTS.md`; отсутствие навыка или повреждение дают код 1.
15
+
16
+ Установщик хранит список управляемых файлов и их SHA-256 в `.agents/skills/codex-platform/.manifest.json`. Посторонний текст в `AGENTS.md` и чужие файлы в каталоге навыка сохраняются. При локальных правках или удалении управляемых файлов команды `update` и `delete` останавливаются, чтобы не уничтожить изменения. Сохраните копию изменённых файлов, перенесите свои правила в отдельный навык и восстановите исходные байты управляемых файлов из той же версии пакета перед повторной командой. Если повреждён маркер, сохраните копию `AGENTS.md` и восстановите ограниченный блок по документации установщика. Не меняйте хеши в манифесте ради принятия локальных правок. Коллизии путей, повреждённые маркеры и манифест, символические ссылки и точки повторной обработки Windows также приводят к отказу. При обычной ошибке записи установщик пытается откатить изменения; гарантий атомарности при сбое питания или одновременном запуске нет.
17
+
18
+ Управляемый блок состоит ровно из четырёх строк (с окончаниями строк проекта). Значение `separator` равно `0`, если перед блоком не понадобился дополнительный перевод строки, и `1`, если он понадобился:
19
+
20
+ ```markdown
21
+ <!-- codex-platform:skill:start -->
22
+ <!-- codex-platform:skill:separator=0 -->
23
+ Use [codex-platform](.agents/skills/codex-platform/SKILL.md) for codex_platform work.
24
+ <!-- codex-platform:skill:end -->
25
+ ```
@@ -71,6 +71,7 @@ plugins:
71
71
  nav:
72
72
  - Home: index.md
73
73
  - Guide (EN):
74
+ - Agent Skill: en/guides/agent-skills.md
74
75
  - Architecture:
75
76
  - Notifications:
76
77
  - Overview: en/architecture/notifications/README.md
@@ -85,6 +86,7 @@ nav:
85
86
  - Overview: en/architecture/workers/README.md
86
87
  - Data Flow: en/architecture/workers/data_flow.md
87
88
  - Руководство (RU):
89
+ - Навык для агента: ru/guides/agent-skills.md
88
90
  - Архитектура:
89
91
  - Уведомления:
90
92
  - Обзор: ru/architecture/notifications/README.md
@@ -20,7 +20,7 @@ classifiers = [
20
20
  ]
21
21
  dependencies = [
22
22
  "pydantic>=2.0,<3.0",
23
- "codex-core>=0.3.0,<0.10.0",
23
+ "codex-core>=0.5.0,<0.10.0",
24
24
  ]
25
25
 
26
26
  [project.urls]
@@ -32,7 +32,7 @@ Issues = "https://github.com/codexdlc/codex-platform/issues"
32
32
  [project.optional-dependencies]
33
33
  redis = ["redis>=5.0"]
34
34
  arq = ["arq>=0.25"]
35
- notifications = ["aiosmtplib>=3.0", "jinja2>=3.1"]
35
+ notifications = ["aiosmtplib>=5.1.2", "jinja2>=3.1"]
36
36
  streams = ["codex-platform[redis]"]
37
37
  all = [
38
38
  "codex-platform[redis,arq,notifications]",
@@ -49,12 +49,12 @@ dev = [
49
49
  "pre-commit>=3.0",
50
50
  "bandit>=1.7",
51
51
  "pip-audit>=2.7",
52
- "pip>=26.1",
52
+ "pip>=26.2.1",
53
53
  "detect-secrets>=1.5",
54
54
  ]
55
55
  docs = [
56
56
  "mkdocs>=1.5,<2.0",
57
- "mkdocs-material>=9.0",
57
+ "mkdocs-material>=9.7.7",
58
58
  "mkdocstrings[python]>=0.24",
59
59
  "mkdocs-include-markdown-plugin",
60
60
  "mike>=2.0",
@@ -0,0 +1 @@
1
+ # empty module
@@ -0,0 +1,4 @@
1
+ from codex_platform.agent_skills.cli import main
2
+
3
+ if __name__ == "__main__":
4
+ main()
@@ -0,0 +1,39 @@
1
+ import argparse
2
+ import sys
3
+ from collections.abc import Sequence
4
+ from pathlib import Path
5
+
6
+ from codex_platform.agent_skills.fs_transaction import FSError
7
+ from codex_platform.agent_skills.orchestrator import OrchestratorError, check_status, perform_delete, perform_install
8
+
9
+
10
+ def main(args: Sequence[str] | None = None) -> None:
11
+ parser = argparse.ArgumentParser(prog="python -m codex_platform.agent_skills")
12
+ parser.add_argument("action", choices=["install", "update", "delete", "status"])
13
+ parser.add_argument("--project", required=True, help="Path to project root")
14
+
15
+ parsed = parser.parse_args(args)
16
+
17
+ project_dir = Path(parsed.project).absolute()
18
+ if not project_dir.is_dir():
19
+ print(f"Error: Project directory does not exist or is not a directory: {project_dir}", file=sys.stderr)
20
+ sys.exit(1)
21
+
22
+ try:
23
+ if parsed.action == "install":
24
+ perform_install(project_dir, update=False)
25
+ print("Installed successfully.")
26
+ elif parsed.action == "update":
27
+ perform_install(project_dir, update=True)
28
+ print("Updated successfully.")
29
+ elif parsed.action == "delete":
30
+ perform_delete(project_dir)
31
+ print("Deleted successfully.")
32
+ elif parsed.action == "status":
33
+ is_valid, msg = check_status(project_dir)
34
+ print(msg)
35
+ if not is_valid:
36
+ sys.exit(1)
37
+ except (OrchestratorError, FSError) as e:
38
+ print(f"Error: {e}", file=sys.stderr)
39
+ sys.exit(1)