DefStream-RabbitMQ 0.1.27__tar.gz → 0.1.28__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.
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/create-pr-from-issue.mjs +132 -153
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/create-pr-from-issue.test.mjs +430 -199
- defstream_rabbitmq-0.1.28/.github/scripts/tests/test_release_notes.py +154 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/workflows/ci.yml +17 -1
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/workflows/create-pr-from-issue.yml +2 -0
- {defstream_rabbitmq-0.1.27/instructions → defstream_rabbitmq-0.1.28/.instructions}/README.instructions.md +1 -1
- defstream_rabbitmq-0.1.28/.instructions.assistant/DEV.Javascript.instructions.md +32 -0
- defstream_rabbitmq-0.1.28/.instructions.assistant/DEV.Python.instructions.md +42 -0
- defstream_rabbitmq-0.1.28/.instructions.assistant/DEV.instructions.md +65 -0
- defstream_rabbitmq-0.1.28/.instructions.assistant/GIT.COMMIT.MESSAGE.instructions.md +63 -0
- defstream_rabbitmq-0.1.28/.instructions.assistant/INSTRUCTIONS.instructions.md +54 -0
- defstream_rabbitmq-0.1.28/.instructions.assistant/MARKDOWN.instructions.md +57 -0
- defstream_rabbitmq-0.1.28/.instructions.assistant/TASK.instructions.md +333 -0
- defstream_rabbitmq-0.1.28/AGENTS.md +54 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/PKG-INFO +2 -2
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/build/RabbitMQ/DefStream_RabbitMQ.egg-info/SOURCES.txt +30 -3
- defstream_rabbitmq-0.1.28/issues/task/67/CHANGELOG.md +14 -0
- defstream_rabbitmq-0.1.28/issues/task/67/IMPLEMENTS.md +19 -0
- defstream_rabbitmq-0.1.28/issues/task/67/IR.md +23 -0
- defstream_rabbitmq-0.1.28/issues/task/67/PLAN.md +28 -0
- defstream_rabbitmq-0.1.28/issues/task/67/README.md +54 -0
- defstream_rabbitmq-0.1.28/issues/task/67/REQUIREMENTS.md +37 -0
- defstream_rabbitmq-0.1.28/issues/task/67/TASKS.md +10 -0
- defstream_rabbitmq-0.1.28/issues/task/67/context/1793888309066.md +19 -0
- defstream_rabbitmq-0.1.28/issues/task/67/context/1794072954261.md +13 -0
- defstream_rabbitmq-0.1.28/issues/task/67/context/1794083380328.md +9 -0
- defstream_rabbitmq-0.1.28/issues/task/67/context/1794083646073.md +11 -0
- defstream_rabbitmq-0.1.28/issues/task/67/implements/1793888309066.md +5 -0
- defstream_rabbitmq-0.1.28/issues/task/67/implements/1794072954261.md +7 -0
- defstream_rabbitmq-0.1.28/issues/task/67/implements/1794083646073.md +3 -0
- defstream_rabbitmq-0.1.28/issues/task/67/tasks/1793888309066.md +5 -0
- defstream_rabbitmq-0.1.28/issues/task/67/tasks/1794072954261.md +11 -0
- defstream_rabbitmq-0.1.28/issues/task/67/tasks/1794083380328.md +3 -0
- defstream_rabbitmq-0.1.28/issues/task/67/tasks/1794083646073.md +7 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.dev/scripts/editable_view.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.dev/scripts/tests/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.dev/scripts/tests/test_editable_view.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.distribution-target +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/01.feature.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/02.bug.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/03.fix.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/04.task.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/build_backend.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/build_distributions.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/check_distributions.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/create-issues-from-reviews.mjs +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/prepare_upload.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/run_core_tests.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/create-issues-from-reviews.test.mjs +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/test_build_backend.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/test_distributions.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/test_release.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/workflows/create-issues-from-reviews.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.gitignore +0 -0
- {defstream_rabbitmq-0.1.27/instructions → defstream_rabbitmq-0.1.28/.instructions}/CODE.instructions.md +0 -0
- {defstream_rabbitmq-0.1.27/instructions → defstream_rabbitmq-0.1.28/.instructions}/DOCS.instructions.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/LICENSE +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/README.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/README.setup.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Contracts.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Contracts.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/GettingStarted.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/GettingStarted.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/LifecycleHooks.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/LifecycleHooks.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Operations.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Operations.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Packaging.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Packaging.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/README.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/RabbitMQ.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/RabbitMQ.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Redis.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Redis.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Tasks.en.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/docs/Tasks.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/bug/16/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/bug/16/ISSUE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/bug/16/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/bug/16/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/1/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/1/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/1/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/1/TASK.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/1/ci.refs.json +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793274693488.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793275218996.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793275899489.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793276075771.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793276518340.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793277364116.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793278267422.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793278764701.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793279849390.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793272872217.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793274121654.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793274231988.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793275218995.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793275501812.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793275955973.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793276099601.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793276518341.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793277424063.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793278267423.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793278764702.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793279849391.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/implements/1793271568985.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/implements/1793272077065.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271236067.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271384432.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271506089.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271819682.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793272077066.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/implements/1793714914193.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/implements/1793717149425.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793705387888.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793714914194.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793715537355.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793717149426.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/implements/1793777682327.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/implements/1793778339166.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793772101827.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793774701691.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793775544541.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793775771772.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793777337621.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793777847993.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793778003070.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793778440735.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/8/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/8/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/8/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/feature/8/ci.refs.json +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/10/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/10/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/10/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/13/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/21/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/21/ISSUE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/21/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/21/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/24/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/24/ISSUE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/24/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/24/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/25/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/25/ISSUE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/25/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/25/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/25/TASK.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/26/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/26/ISSUE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/26/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/26/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/29/ISSUE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/29/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/29/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/29/TASK.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/3/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/3/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/3/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/3/ci.refs.json +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/implements/1793257519898.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/implements/1793257826069.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793256929057.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793256990072.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793257216492.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793257519899.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793257826068.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/implements/1793260818660.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/implements/1793261447018.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/tasks/1793260818661.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/tasks/1793261447019.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/43/tasks/1793262314955.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/implements/1793282630353.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/50/tasks/1793282630354.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793294516720.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793295445979.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793295838896.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793296500296.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793299630936.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793301537859.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793301829543.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793302547669.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793327181557.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793329241422.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793516005517.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793516879583.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793517548589.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793518878753.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793294230195.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793295445976.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793295838893.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793296500299.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793297795667.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793299630939.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793301829546.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793302844699.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793327181558.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793327685707.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793328011412.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793329241423.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793516005518.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793516879584.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793517548590.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793518878754.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/6/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/6/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/6/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/implements/1793807653096.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/implements/1793807663436.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/tasks/1793806949650.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/tasks/1793807182094.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/tasks/1793807663435.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/fix/64/tasks/1793807722809.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/18/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/18/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/18/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/32/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/32/ISSUE.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/32/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/32/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/32/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/32/TASK.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/34/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/34/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/34/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/34/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/34/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/36/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/36/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/36/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/36/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/36/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/docs/CopilotReviewIssues.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/docs/CopilotReviewIssuesSetup.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/implements/1793291844133.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/tasks/1793291844134.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/38/tasks/1793292234123.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793623390266.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793625464717.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793626388737.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793626820522.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793627348502.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793628366252.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793629199999.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793631035346.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793620359610.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793621161604.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793621502459.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793621903677.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793623390265.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793625269565.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793626388737.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793626820522.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793627348502.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793627590185.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793628366252.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793629199998.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793631035345.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/CHANGELOG.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/IMPLEMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/PLAN.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/REQUIREMENTS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/TASKS.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/implements/1793395003714.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/tasks/1793395003713.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/issues/task/57/tasks/1793395058100.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/pyproject.toml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/enabled_plugins +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/rabbitmq-3.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/rabbitmq-4.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/res/docker/redis/README.md +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/res/docker/redis/redis-6.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/res/docker/redis/redis-7.yml +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.RPC.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.Stream.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.Timer.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Broker/Redis/Sample.Stream.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Broker/Redis/Sample.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Broker/Sample.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Worker/RabbitMQ/Client.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Worker/RabbitMQ/Tasks.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Worker/RabbitMQ/Worker.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Worker/Redis/Sample.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/samples/Worker/Sample.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/setup.cfg +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/setup.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Configuration.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Connection.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Consumer.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Errors.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Event.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Configuration.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Connection.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Consumer.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Event.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Exchange.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Queue.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Serializer.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Stream.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Subscription.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Configuration.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Connection.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Consumer.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Event.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Queue.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Serializer.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Subscription.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Priority.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/Protocol.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Broker/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Descriptor/DataObject.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Descriptor/Types.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Descriptor/Value.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Descriptor/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extension.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Metrics.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Ping.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Play.html +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Play.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Specifications.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Status.html +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Status.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Inspector.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/Response.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Inspector/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Pattern.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Array.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Common.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Compare.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Condition.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/DataObject.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/DateTime.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Number.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Object.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Size.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/String.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Type.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Validate.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/Validator.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Validator/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/Executor.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/Message.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/Pool.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/Run.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/Specification.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/Startup.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/Worker.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/Worker/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/src/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/_support.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/_support_inspector.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/_support_inspector_play.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/_support_task_messages.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_inspector.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_inspector_play.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_broker_methods.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_integration.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_logging.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_priorities.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_rpc.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_rpc_integration.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_timeouts.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_timers.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_worker.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_specifications.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_task_messages.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_task_priorities.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/__init__.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/test_inspector.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/test_inspector_play.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/test_redis.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/test_redis_integration.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/test_redis_logging.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/test_task_messages.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/redis/test_task_priorities.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_broker_packaging.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_descriptor.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_inspector.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_inspector_logging.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_inspector_play.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_lifecycle_hooks.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_logging.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_pool_callbacks.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_process_signals.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_protocol_contracts.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_runner_hooks.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_specifications.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_status.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_status_ui.cjs +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_task_messages.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_validator_patterns.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_worker.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_worker_recovery.py +0 -0
- {defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/tests/test_worker_startup.py +0 -0
{defstream_rabbitmq-0.1.27 → defstream_rabbitmq-0.1.28}/.github/scripts/create-pr-from-issue.mjs
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
1
|
+
import { lstat, readFile } from 'node:fs/promises';
|
|
2
2
|
import { join, posix, resolve } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
|
|
@@ -6,11 +6,8 @@ const API_URL = 'https://api.github.com';
|
|
|
6
6
|
const MAX_PR_BODY_LENGTH = 65536;
|
|
7
7
|
const ISSUE_TYPES = new Set(['bug', 'fix', 'feature', 'task']);
|
|
8
8
|
const ISSUE_DOCUMENTS = [
|
|
9
|
-
'README.md',
|
|
10
|
-
'REQUIREMENTS.md',
|
|
11
9
|
'CHANGELOG.md',
|
|
12
|
-
'
|
|
13
|
-
'TASKS.md',
|
|
10
|
+
'IR.md',
|
|
14
11
|
];
|
|
15
12
|
|
|
16
13
|
export function parseIssueBranch(branch) {
|
|
@@ -32,11 +29,6 @@ async function readOptionalFile(path) {
|
|
|
32
29
|
}
|
|
33
30
|
}
|
|
34
31
|
|
|
35
|
-
function sourceLink(owner, repo, sha, path) {
|
|
36
|
-
const encodedPath = path.split('/').map(encodeURIComponent).join('/');
|
|
37
|
-
return `https://github.com/${owner}/${repo}/blob/${sha}/${encodedPath}`;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
32
|
function resolveDocumentLinks(markdown, documentPath, owner, repo, sha) {
|
|
41
33
|
const destination = String.raw`<[^>\r\n]+>|[^\s()]+(?:\([^\s()]*\)[^\s()]*)*`;
|
|
42
34
|
const tokens = new RegExp([
|
|
@@ -51,7 +43,7 @@ function resolveDocumentLinks(markdown, documentPath, owner, repo, sha) {
|
|
|
51
43
|
const absolute = (target) => {
|
|
52
44
|
const angled = target.startsWith('<');
|
|
53
45
|
const value = angled ? target.slice(1, -1) : target;
|
|
54
|
-
if (/^(?:[a-z][a-z0-9+.-]
|
|
46
|
+
if (/^(?:[a-z][a-z0-9+.-]*:|\/\/|#)/i.test(value)) {
|
|
55
47
|
return target;
|
|
56
48
|
}
|
|
57
49
|
const suffixIndex = value.search(/[?#]/);
|
|
@@ -95,86 +87,27 @@ function resolveDocumentLinks(markdown, documentPath, owner, repo, sha) {
|
|
|
95
87
|
});
|
|
96
88
|
}
|
|
97
89
|
|
|
98
|
-
export function buildPullRequest({
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (!title || title.length > 256 || /[\r\n]/.test(title)) {
|
|
103
|
-
throw new Error('The source issue must provide a PR title of at most 256 characters');
|
|
90
|
+
export function buildPullRequest({ documents, issueDirectory, owner, repo, sha }) {
|
|
91
|
+
const markdown = documents['IR.md'];
|
|
92
|
+
if (!markdown?.trim()) {
|
|
93
|
+
throw new Error(`PR body is missing or empty: ${issueDirectory}/IR.md`);
|
|
104
94
|
}
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
linkedDocuments[fileName] = resolveDocumentLinks(markdown, `${issueDirectory}/${fileName}`, owner, repo, sha);
|
|
110
|
-
}
|
|
95
|
+
const heading = /^#[ \t]+([^\r\n]+)(?:\r?\n|$)/.exec(markdown);
|
|
96
|
+
const title = heading?.[1].trim();
|
|
97
|
+
if (!title || title.length > 256) {
|
|
98
|
+
throw new Error(`PR title must be a non-empty first-line heading of at most 256 characters: ${issueDirectory}/IR.md`);
|
|
111
99
|
}
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
feature: '기능 추가',
|
|
116
|
-
task: '기타',
|
|
117
|
-
}[issueType];
|
|
118
|
-
if (!changeType) {
|
|
119
|
-
throw new Error(`Unsupported issue type "${issueType}"`);
|
|
100
|
+
const bodyMarkdown = markdown.slice(heading[0].length);
|
|
101
|
+
if (!bodyMarkdown.trim()) {
|
|
102
|
+
throw new Error(`PR body is missing or empty: ${issueDirectory}/IR.md`);
|
|
120
103
|
}
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const render = (includeContent, includeTemplate = true) => {
|
|
125
|
-
const summary = [`원본 이슈: [#${issueNumber}](${issueLink})`];
|
|
126
|
-
const validation = [];
|
|
127
|
-
if (!includeContent) {
|
|
128
|
-
summary.push('PR 본문 길이 제한으로 문서와 이슈의 내용은 아래 원문 링크에서 제공합니다.');
|
|
129
|
-
}
|
|
130
|
-
if (!includeTemplate) {
|
|
131
|
-
summary.push(`PR 템플릿도 길이 제한을 초과하여 [템플릿 원문](${sourceLink(owner, repo, sha, '.github/PULL_REQUEST_TEMPLATE.md')})으로 제공합니다.`);
|
|
132
|
-
}
|
|
133
|
-
for (const [fileName, markdown] of Object.entries(linkedDocuments)) {
|
|
134
|
-
const link = sourceLink(owner, repo, sha, `${issueDirectory}/${fileName}`);
|
|
135
|
-
const record = includeContent
|
|
136
|
-
? `<details>\n<summary>${fileName}</summary>\n\n${markdown}\n\n[원문](${link})\n\n</details>`
|
|
137
|
-
: `[${fileName}](${link})`;
|
|
138
|
-
(fileName === 'TASKS.md' ? validation : summary).push(record);
|
|
139
|
-
}
|
|
140
|
-
if (Object.keys(linkedDocuments).length === 0) {
|
|
141
|
-
summary.push('첨부된 작업 문서가 없어 원본 이슈를 기준으로 작성했습니다.');
|
|
142
|
-
if (includeContent && issue?.body) {
|
|
143
|
-
summary.push(issue.body);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
if (validation.length === 0) {
|
|
147
|
-
validation.push('별도 작업·검증 문서가 첨부되지 않았습니다. 검증 수행 여부는 원본 이슈와 첨부 문서를 확인해 주세요.');
|
|
148
|
-
}
|
|
149
|
-
const sections = new Map([
|
|
150
|
-
['<!-- 무엇을 왜 변경했는지 간단히 요약해 주세요. -->', {
|
|
151
|
-
heading: '## 변경 내용', content: summary.join('\n\n'),
|
|
152
|
-
}],
|
|
153
|
-
['<!-- 실행한 테스트와 결과를 작성해 주세요. 테스트를 실행하지 않았다면 사유를 적어 주세요. -->', {
|
|
154
|
-
heading: '## 검증', content: validation.join('\n\n'),
|
|
155
|
-
}],
|
|
156
|
-
]);
|
|
157
|
-
let body = (includeTemplate ? template : '').replace(checkbox, `- [X] ${changeType}`).replace(
|
|
158
|
-
/<!-- 무엇을 왜 변경했는지 간단히 요약해 주세요\. -->|<!-- 실행한 테스트와 결과를 작성해 주세요\. 테스트를 실행하지 않았다면 사유를 적어 주세요\. -->/g,
|
|
159
|
-
(placeholder) => {
|
|
160
|
-
const section = sections.get(placeholder);
|
|
161
|
-
section.inserted = true;
|
|
162
|
-
return section.content;
|
|
163
|
-
},
|
|
164
|
-
);
|
|
165
|
-
for (const section of sections.values()) {
|
|
166
|
-
if (!section.inserted) {
|
|
167
|
-
body += `\n\n${section.heading}\n\n${section.content}`;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
return `${body.trim()}\n\nCloses #${issueNumber}`;
|
|
171
|
-
};
|
|
172
|
-
let body = render(true);
|
|
173
|
-
if (body.length > MAX_PR_BODY_LENGTH) {
|
|
174
|
-
body = render(false);
|
|
104
|
+
const lines = bodyMarkdown.trim().split(/\r?\n/).filter((line) => line.trim());
|
|
105
|
+
if (lines.at(-1) !== `- Changes: ${issueDirectory}/CHANGELOG.md`) {
|
|
106
|
+
throw new Error(`IR document must end with the changelog entry: ${issueDirectory}/IR.md`);
|
|
175
107
|
}
|
|
108
|
+
const body = resolveDocumentLinks(bodyMarkdown, `${issueDirectory}/IR.md`, owner, repo, sha).trim();
|
|
176
109
|
if (body.length > MAX_PR_BODY_LENGTH) {
|
|
177
|
-
|
|
110
|
+
throw new Error(`PR body exceeds the ${MAX_PR_BODY_LENGTH}-character limit`);
|
|
178
111
|
}
|
|
179
112
|
return { title, body };
|
|
180
113
|
}
|
|
@@ -203,6 +136,36 @@ async function githubRequest(path, token, fetchImpl, options = {}) {
|
|
|
203
136
|
return result;
|
|
204
137
|
}
|
|
205
138
|
|
|
139
|
+
async function findPullRequestIssueDirectory(repositoryPath, pullRequestNumber, token, fetchImpl) {
|
|
140
|
+
const candidates = [];
|
|
141
|
+
for (let page = 1; page <= 30; page += 1) {
|
|
142
|
+
const files = await githubRequest(
|
|
143
|
+
`${repositoryPath}/pulls/${pullRequestNumber}/files?per_page=100&page=${page}`,
|
|
144
|
+
token,
|
|
145
|
+
fetchImpl,
|
|
146
|
+
);
|
|
147
|
+
if (!Array.isArray(files)) {
|
|
148
|
+
throw new Error('GitHub API did not return the pull request file list');
|
|
149
|
+
}
|
|
150
|
+
for (const file of files) {
|
|
151
|
+
if (typeof file?.filename !== 'string' || typeof file.status !== 'string') {
|
|
152
|
+
throw new Error('GitHub API returned an invalid pull request file');
|
|
153
|
+
}
|
|
154
|
+
if (file.status !== 'removed'
|
|
155
|
+
&& /^issues\/(?:bug|fix|feature|task)\/[A-Za-z0-9][A-Za-z0-9._-]*\/IR\.md$/.test(file.filename)) {
|
|
156
|
+
candidates.push(file.filename.slice(0, -'/IR.md'.length));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (files.length < 100) {
|
|
160
|
+
if (candidates.length !== 1) {
|
|
161
|
+
throw new Error(`Expected exactly one changed issue IR.md, found ${candidates.length} in PR #${pullRequestNumber}`);
|
|
162
|
+
}
|
|
163
|
+
return candidates[0];
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
throw new Error(`Pull request file list reached GitHub's 3000-file limit: PR #${pullRequestNumber}`);
|
|
167
|
+
}
|
|
168
|
+
|
|
206
169
|
async function githubGraphqlRequest(query, variables, token, fetchImpl) {
|
|
207
170
|
const response = await fetchImpl(`${API_URL}/graphql`, {
|
|
208
171
|
method: 'POST',
|
|
@@ -261,7 +224,7 @@ async function getIssueMetadata(repositoryPath, issueDirectory, token, fetchImpl
|
|
|
261
224
|
&& (!Number.isSafeInteger(issue.milestone?.number) || issue.milestone.number <= 0)) {
|
|
262
225
|
throw new Error(`GitHub API returned an invalid milestone for issue #${issueNumber}`);
|
|
263
226
|
}
|
|
264
|
-
return { labels, assignees, milestone: issue.milestone, nodeId: issue.node_id
|
|
227
|
+
return { labels, assignees, milestone: issue.milestone, nodeId: issue.node_id };
|
|
265
228
|
}
|
|
266
229
|
|
|
267
230
|
async function addPullRequestLabels(repositoryPath, pullRequestNumber, labels, token, fetchImpl) {
|
|
@@ -362,7 +325,8 @@ export async function createPullRequest({
|
|
|
362
325
|
return { status: 'default-branch' };
|
|
363
326
|
}
|
|
364
327
|
|
|
365
|
-
const
|
|
328
|
+
const agentBranch = /^(?:copilot|codex)\/.+$/.test(branch);
|
|
329
|
+
let issueDirectory = agentBranch ? null : parseIssueBranch(branch);
|
|
366
330
|
const encodedRepository = `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`;
|
|
367
331
|
const query = new URLSearchParams({
|
|
368
332
|
state: 'open',
|
|
@@ -378,97 +342,111 @@ export async function createPullRequest({
|
|
|
378
342
|
if (!Array.isArray(openPullRequests)) {
|
|
379
343
|
throw new Error('GitHub API did not return the open pull request list');
|
|
380
344
|
}
|
|
345
|
+
const existing = openPullRequests[0];
|
|
381
346
|
if (openPullRequests.length > 0) {
|
|
382
|
-
if (!Number.isInteger(
|
|
347
|
+
if (!Number.isInteger(existing?.number)) {
|
|
383
348
|
throw new Error('GitHub API returned an open pull request without a number');
|
|
384
349
|
}
|
|
385
|
-
if (typeof
|
|
350
|
+
if (typeof existing.node_id !== 'string' || !existing.node_id) {
|
|
386
351
|
throw new Error('GitHub API did not return a node ID for the open pull request');
|
|
387
352
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
milestone,
|
|
353
|
+
if (agentBranch) {
|
|
354
|
+
if (openPullRequests.length !== 1) {
|
|
355
|
+
throw new Error('GitHub API returned multiple open pull requests for the agent branch');
|
|
356
|
+
}
|
|
357
|
+
if (typeof existing.head?.sha !== 'string' || !existing.head.sha) {
|
|
358
|
+
throw new Error('GitHub API did not return the agent pull request head SHA');
|
|
359
|
+
}
|
|
360
|
+
if (existing.head.sha !== sha) {
|
|
361
|
+
return { status: 'stale-agent-push' };
|
|
362
|
+
}
|
|
363
|
+
issueDirectory = await findPullRequestIssueDirectory(
|
|
364
|
+
encodedRepository,
|
|
365
|
+
existing.number,
|
|
366
|
+
token,
|
|
367
|
+
fetchImpl,
|
|
368
|
+
);
|
|
369
|
+
}
|
|
370
|
+
} else {
|
|
371
|
+
if (agentBranch) {
|
|
372
|
+
return { status: 'no-open-agent-pull-request' };
|
|
373
|
+
}
|
|
374
|
+
const compare = await githubRequest(
|
|
375
|
+
`${encodedRepository}/compare/${encodeURIComponent(base)}...${encodeURIComponent(sha)}`,
|
|
412
376
|
token,
|
|
413
377
|
fetchImpl,
|
|
414
378
|
);
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
379
|
+
if (!Number.isInteger(compare?.ahead_by) || compare.ahead_by < 0
|
|
380
|
+
|| !Array.isArray(compare.files)) {
|
|
381
|
+
throw new Error('GitHub API did not return the branch comparison result');
|
|
382
|
+
}
|
|
383
|
+
if (compare.ahead_by === 0 || compare.files.length === 0) {
|
|
384
|
+
return { status: 'no-changes' };
|
|
385
|
+
}
|
|
386
|
+
const headCommit = await githubRequest(
|
|
387
|
+
`${encodedRepository}/git/commits/${encodeURIComponent(sha)}`,
|
|
418
388
|
token,
|
|
419
389
|
fetchImpl,
|
|
420
390
|
);
|
|
421
|
-
|
|
391
|
+
const baseTree = compare.base_commit?.commit?.tree?.sha;
|
|
392
|
+
const headTree = headCommit?.tree?.sha;
|
|
393
|
+
if (typeof baseTree !== 'string' || !baseTree
|
|
394
|
+
|| typeof headTree !== 'string' || !headTree) {
|
|
395
|
+
throw new Error('GitHub API did not return the base and head commit tree SHAs');
|
|
396
|
+
}
|
|
397
|
+
if (baseTree === headTree) {
|
|
398
|
+
return { status: 'no-changes' };
|
|
399
|
+
}
|
|
422
400
|
}
|
|
423
401
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
token,
|
|
427
|
-
fetchImpl,
|
|
428
|
-
);
|
|
429
|
-
if (!Number.isInteger(compare?.ahead_by) || compare.ahead_by < 0
|
|
430
|
-
|| !Array.isArray(compare.files)) {
|
|
431
|
-
throw new Error('GitHub API did not return the branch comparison result');
|
|
432
|
-
}
|
|
433
|
-
if (compare.ahead_by === 0 || compare.files.length === 0) {
|
|
434
|
-
return { status: 'no-changes' };
|
|
435
|
-
}
|
|
436
|
-
const headCommit = await githubRequest(
|
|
437
|
-
`${encodedRepository}/git/commits/${encodeURIComponent(sha)}`,
|
|
438
|
-
token,
|
|
439
|
-
fetchImpl,
|
|
440
|
-
);
|
|
441
|
-
const baseTree = compare.base_commit?.commit?.tree?.sha;
|
|
442
|
-
const headTree = headCommit?.tree?.sha;
|
|
443
|
-
if (typeof baseTree !== 'string' || !baseTree
|
|
444
|
-
|| typeof headTree !== 'string' || !headTree) {
|
|
445
|
-
throw new Error('GitHub API did not return the base and head commit tree SHAs');
|
|
402
|
+
let metadata;
|
|
403
|
+
if (!agentBranch) {
|
|
404
|
+
metadata = await getIssueMetadata(encodedRepository, issueDirectory, token, fetchImpl);
|
|
446
405
|
}
|
|
447
|
-
|
|
448
|
-
|
|
406
|
+
try {
|
|
407
|
+
if (!(await lstat(join(rootDirectory, issueDirectory, 'CHANGELOG.md'))).isFile()) {
|
|
408
|
+
throw new Error(`Changelog must be a regular file: ${issueDirectory}/CHANGELOG.md`);
|
|
409
|
+
}
|
|
410
|
+
} catch (error) {
|
|
411
|
+
if (error.code !== 'ENOENT') throw error;
|
|
449
412
|
}
|
|
450
|
-
|
|
451
|
-
const { labels, assignees, milestone, nodeId: issueNodeId, issue } = await getIssueMetadata(
|
|
452
|
-
encodedRepository,
|
|
453
|
-
issueDirectory,
|
|
454
|
-
token,
|
|
455
|
-
fetchImpl,
|
|
456
|
-
);
|
|
457
|
-
const template = await readOptionalFile(join(rootDirectory, '.github', 'PULL_REQUEST_TEMPLATE.md'));
|
|
458
413
|
const documents = {};
|
|
459
414
|
for (const fileName of ISSUE_DOCUMENTS) {
|
|
460
415
|
documents[fileName] = await readOptionalFile(join(rootDirectory, issueDirectory, fileName));
|
|
461
416
|
}
|
|
417
|
+
if (!documents['CHANGELOG.md'].trim()) {
|
|
418
|
+
throw new Error(`Changelog is missing or empty: ${issueDirectory}/CHANGELOG.md`);
|
|
419
|
+
}
|
|
462
420
|
const pullRequest = buildPullRequest({
|
|
463
|
-
template,
|
|
464
421
|
documents,
|
|
465
|
-
issue,
|
|
466
422
|
issueDirectory,
|
|
467
423
|
owner,
|
|
468
424
|
repo,
|
|
469
425
|
sha,
|
|
470
426
|
});
|
|
471
427
|
|
|
428
|
+
if (openPullRequests.length > 0) {
|
|
429
|
+
await githubRequest(
|
|
430
|
+
`${encodedRepository}/pulls/${existing.number}`,
|
|
431
|
+
token,
|
|
432
|
+
fetchImpl,
|
|
433
|
+
{
|
|
434
|
+
method: 'PATCH',
|
|
435
|
+
body: JSON.stringify({ title: pullRequest.title, body: pullRequest.body }),
|
|
436
|
+
},
|
|
437
|
+
);
|
|
438
|
+
if (agentBranch) {
|
|
439
|
+
return { status: 'already-open', number: existing.number };
|
|
440
|
+
}
|
|
441
|
+
const { labels, assignees, milestone, nodeId: issueNodeId } = metadata;
|
|
442
|
+
await addPullRequestLabels(encodedRepository, existing.number, labels, token, fetchImpl);
|
|
443
|
+
await addPullRequestAssignees(encodedRepository, existing.number, assignees, token, fetchImpl);
|
|
444
|
+
await setPullRequestMilestone(encodedRepository, existing.number, milestone, token, fetchImpl);
|
|
445
|
+
await linkPullRequestToIssue(issueNodeId, existing.node_id, token, fetchImpl);
|
|
446
|
+
return { status: 'already-open', number: existing.number };
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
const { labels, assignees, milestone, nodeId: issueNodeId } = metadata;
|
|
472
450
|
const created = await githubRequest(
|
|
473
451
|
`${encodedRepository}/pulls`,
|
|
474
452
|
token,
|
|
@@ -480,6 +458,7 @@ export async function createPullRequest({
|
|
|
480
458
|
body: pullRequest.body,
|
|
481
459
|
head: branch,
|
|
482
460
|
base,
|
|
461
|
+
draft: true,
|
|
483
462
|
}),
|
|
484
463
|
},
|
|
485
464
|
);
|
|
@@ -515,7 +494,7 @@ async function main() {
|
|
|
515
494
|
if (result.status === 'created') {
|
|
516
495
|
console.log(`Created pull request #${result.number}: ${result.url}`);
|
|
517
496
|
} else if (result.status === 'already-open') {
|
|
518
|
-
console.log(`
|
|
497
|
+
console.log(`Updated pull request #${result.number} for this branch and base`);
|
|
519
498
|
} else {
|
|
520
499
|
console.log(`Skipped pull request creation: ${result.status}`);
|
|
521
500
|
}
|