DefStream-RabbitMQ 0.1.26__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.
Files changed (477) hide show
  1. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/create-pr-from-issue.mjs +132 -153
  2. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/create-pr-from-issue.test.mjs +430 -199
  3. defstream_rabbitmq-0.1.28/.github/scripts/tests/test_release_notes.py +154 -0
  4. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/workflows/ci.yml +17 -1
  5. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/workflows/create-pr-from-issue.yml +2 -0
  6. {defstream_rabbitmq-0.1.26/instructions → defstream_rabbitmq-0.1.28/.instructions}/README.instructions.md +1 -1
  7. defstream_rabbitmq-0.1.28/.instructions.assistant/DEV.Javascript.instructions.md +32 -0
  8. defstream_rabbitmq-0.1.28/.instructions.assistant/DEV.Python.instructions.md +42 -0
  9. defstream_rabbitmq-0.1.28/.instructions.assistant/DEV.instructions.md +65 -0
  10. defstream_rabbitmq-0.1.28/.instructions.assistant/GIT.COMMIT.MESSAGE.instructions.md +63 -0
  11. defstream_rabbitmq-0.1.28/.instructions.assistant/INSTRUCTIONS.instructions.md +54 -0
  12. defstream_rabbitmq-0.1.28/.instructions.assistant/MARKDOWN.instructions.md +57 -0
  13. defstream_rabbitmq-0.1.28/.instructions.assistant/TASK.instructions.md +333 -0
  14. defstream_rabbitmq-0.1.28/AGENTS.md +54 -0
  15. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/PKG-INFO +2 -2
  16. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/build/RabbitMQ/DefStream_RabbitMQ.egg-info/SOURCES.txt +42 -3
  17. defstream_rabbitmq-0.1.28/issues/fix/64/CHANGELOG.md +3 -0
  18. defstream_rabbitmq-0.1.28/issues/fix/64/IMPLEMENTS.md +20 -0
  19. defstream_rabbitmq-0.1.28/issues/fix/64/PLAN.md +69 -0
  20. defstream_rabbitmq-0.1.28/issues/fix/64/README.md +45 -0
  21. defstream_rabbitmq-0.1.28/issues/fix/64/REQUIREMENTS.md +63 -0
  22. defstream_rabbitmq-0.1.28/issues/fix/64/TASKS.md +21 -0
  23. defstream_rabbitmq-0.1.28/issues/fix/64/implements/1793807653096.md +10 -0
  24. defstream_rabbitmq-0.1.28/issues/fix/64/implements/1793807663436.md +9 -0
  25. defstream_rabbitmq-0.1.28/issues/fix/64/tasks/1793806949650.md +8 -0
  26. defstream_rabbitmq-0.1.28/issues/fix/64/tasks/1793807182094.md +7 -0
  27. defstream_rabbitmq-0.1.28/issues/fix/64/tasks/1793807663435.md +13 -0
  28. defstream_rabbitmq-0.1.28/issues/fix/64/tasks/1793807722809.md +31 -0
  29. defstream_rabbitmq-0.1.28/issues/task/67/CHANGELOG.md +14 -0
  30. defstream_rabbitmq-0.1.28/issues/task/67/IMPLEMENTS.md +19 -0
  31. defstream_rabbitmq-0.1.28/issues/task/67/IR.md +23 -0
  32. defstream_rabbitmq-0.1.28/issues/task/67/PLAN.md +28 -0
  33. defstream_rabbitmq-0.1.28/issues/task/67/README.md +54 -0
  34. defstream_rabbitmq-0.1.28/issues/task/67/REQUIREMENTS.md +37 -0
  35. defstream_rabbitmq-0.1.28/issues/task/67/TASKS.md +10 -0
  36. defstream_rabbitmq-0.1.28/issues/task/67/context/1793888309066.md +19 -0
  37. defstream_rabbitmq-0.1.28/issues/task/67/context/1794072954261.md +13 -0
  38. defstream_rabbitmq-0.1.28/issues/task/67/context/1794083380328.md +9 -0
  39. defstream_rabbitmq-0.1.28/issues/task/67/context/1794083646073.md +11 -0
  40. defstream_rabbitmq-0.1.28/issues/task/67/implements/1793888309066.md +5 -0
  41. defstream_rabbitmq-0.1.28/issues/task/67/implements/1794072954261.md +7 -0
  42. defstream_rabbitmq-0.1.28/issues/task/67/implements/1794083646073.md +3 -0
  43. defstream_rabbitmq-0.1.28/issues/task/67/tasks/1793888309066.md +5 -0
  44. defstream_rabbitmq-0.1.28/issues/task/67/tasks/1794072954261.md +11 -0
  45. defstream_rabbitmq-0.1.28/issues/task/67/tasks/1794083380328.md +3 -0
  46. defstream_rabbitmq-0.1.28/issues/task/67/tasks/1794083646073.md +7 -0
  47. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Consumer.py +5 -1
  48. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_protocol_contracts.py +14 -0
  49. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.dev/scripts/editable_view.py +0 -0
  50. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.dev/scripts/tests/__init__.py +0 -0
  51. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.dev/scripts/tests/test_editable_view.py +0 -0
  52. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.distribution-target +0 -0
  53. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/01.feature.yml +0 -0
  54. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/02.bug.yml +0 -0
  55. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/03.fix.yml +0 -0
  56. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/04.task.yml +0 -0
  57. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  58. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  59. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/build_backend.py +0 -0
  60. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/build_distributions.py +0 -0
  61. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/check_distributions.py +0 -0
  62. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/create-issues-from-reviews.mjs +0 -0
  63. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/prepare_upload.py +0 -0
  64. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/run_core_tests.py +0 -0
  65. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/__init__.py +0 -0
  66. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/create-issues-from-reviews.test.mjs +0 -0
  67. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/test_build_backend.py +0 -0
  68. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/test_distributions.py +0 -0
  69. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/scripts/tests/test_release.py +0 -0
  70. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.github/workflows/create-issues-from-reviews.yml +0 -0
  71. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/.gitignore +0 -0
  72. {defstream_rabbitmq-0.1.26/instructions → defstream_rabbitmq-0.1.28/.instructions}/CODE.instructions.md +0 -0
  73. {defstream_rabbitmq-0.1.26/instructions → defstream_rabbitmq-0.1.28/.instructions}/DOCS.instructions.md +0 -0
  74. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/LICENSE +0 -0
  75. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/README.en.md +0 -0
  76. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/README.md +0 -0
  77. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/README.setup.md +0 -0
  78. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Contracts.en.md +0 -0
  79. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Contracts.md +0 -0
  80. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/GettingStarted.en.md +0 -0
  81. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/GettingStarted.md +0 -0
  82. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/LifecycleHooks.en.md +0 -0
  83. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/LifecycleHooks.md +0 -0
  84. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Operations.en.md +0 -0
  85. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Operations.md +0 -0
  86. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Packaging.en.md +0 -0
  87. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Packaging.md +0 -0
  88. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/README.en.md +0 -0
  89. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/README.md +0 -0
  90. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/RabbitMQ.en.md +0 -0
  91. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/RabbitMQ.md +0 -0
  92. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Redis.en.md +0 -0
  93. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Redis.md +0 -0
  94. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Tasks.en.md +0 -0
  95. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/docs/Tasks.md +0 -0
  96. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/bug/16/IMPLEMENTS.md +0 -0
  97. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/bug/16/ISSUE.md +0 -0
  98. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/bug/16/README.md +0 -0
  99. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/bug/16/REQUIREMENTS.md +0 -0
  100. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/1/IMPLEMENTS.md +0 -0
  101. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/1/README.md +0 -0
  102. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/1/REQUIREMENTS.md +0 -0
  103. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/1/TASK.md +0 -0
  104. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/1/ci.refs.json +0 -0
  105. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/CHANGELOG.md +0 -0
  106. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/IMPLEMENTS.md +0 -0
  107. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/PLAN.md +0 -0
  108. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/README.md +0 -0
  109. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/REQUIREMENTS.md +0 -0
  110. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/TASKS.md +0 -0
  111. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793274693488.md +0 -0
  112. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793275218996.md +0 -0
  113. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793275899489.md +0 -0
  114. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793276075771.md +0 -0
  115. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793276518340.md +0 -0
  116. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793277364116.md +0 -0
  117. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793278267422.md +0 -0
  118. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793278764701.md +0 -0
  119. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/implements/1793279849390.md +0 -0
  120. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793272872217.md +0 -0
  121. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793274121654.md +0 -0
  122. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793274231988.md +0 -0
  123. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793275218995.md +0 -0
  124. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793275501812.md +0 -0
  125. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793275955973.md +0 -0
  126. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793276099601.md +0 -0
  127. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793276518341.md +0 -0
  128. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793277424063.md +0 -0
  129. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793278267423.md +0 -0
  130. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793278764702.md +0 -0
  131. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/46/tasks/1793279849391.md +0 -0
  132. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/CHANGELOG.md +0 -0
  133. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/IMPLEMENTS.md +0 -0
  134. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/PLAN.md +0 -0
  135. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/README.md +0 -0
  136. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/REQUIREMENTS.md +0 -0
  137. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/TASKS.md +0 -0
  138. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/implements/1793271568985.md +0 -0
  139. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/implements/1793272077065.md +0 -0
  140. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271236067.md +0 -0
  141. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271384432.md +0 -0
  142. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271506089.md +0 -0
  143. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793271819682.md +0 -0
  144. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/47/tasks/1793272077066.md +0 -0
  145. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/CHANGELOG.md +0 -0
  146. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/IMPLEMENTS.md +0 -0
  147. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/PLAN.md +0 -0
  148. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/README.md +0 -0
  149. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/REQUIREMENTS.md +0 -0
  150. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/TASKS.md +0 -0
  151. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/implements/1793714914193.md +0 -0
  152. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/implements/1793717149425.md +0 -0
  153. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793705387888.md +0 -0
  154. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793714914194.md +0 -0
  155. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793715537355.md +0 -0
  156. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/55/tasks/1793717149426.md +0 -0
  157. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/CHANGELOG.md +0 -0
  158. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/IMPLEMENTS.md +0 -0
  159. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/PLAN.md +0 -0
  160. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/README.md +0 -0
  161. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/REQUIREMENTS.md +0 -0
  162. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/TASKS.md +0 -0
  163. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/implements/1793777682327.md +0 -0
  164. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/implements/1793778339166.md +0 -0
  165. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793772101827.md +0 -0
  166. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793774701691.md +0 -0
  167. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793775544541.md +0 -0
  168. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793775771772.md +0 -0
  169. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793777337621.md +0 -0
  170. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793777847993.md +0 -0
  171. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793778003070.md +0 -0
  172. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/62/tasks/1793778440735.md +0 -0
  173. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/8/IMPLEMENTS.md +0 -0
  174. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/8/README.md +0 -0
  175. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/8/REQUIREMENTS.md +0 -0
  176. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/feature/8/ci.refs.json +0 -0
  177. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/10/IMPLEMENTS.md +0 -0
  178. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/10/README.md +0 -0
  179. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/10/REQUIREMENTS.md +0 -0
  180. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/13/README.md +0 -0
  181. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/21/IMPLEMENTS.md +0 -0
  182. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/21/ISSUE.md +0 -0
  183. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/21/README.md +0 -0
  184. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/21/REQUIREMENTS.md +0 -0
  185. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/24/IMPLEMENTS.md +0 -0
  186. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/24/ISSUE.md +0 -0
  187. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/24/README.md +0 -0
  188. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/24/REQUIREMENTS.md +0 -0
  189. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/25/IMPLEMENTS.md +0 -0
  190. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/25/ISSUE.md +0 -0
  191. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/25/README.md +0 -0
  192. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/25/REQUIREMENTS.md +0 -0
  193. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/25/TASK.md +0 -0
  194. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/26/IMPLEMENTS.md +0 -0
  195. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/26/ISSUE.md +0 -0
  196. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/26/README.md +0 -0
  197. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/26/REQUIREMENTS.md +0 -0
  198. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/29/ISSUE.md +0 -0
  199. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/29/README.md +0 -0
  200. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/29/REQUIREMENTS.md +0 -0
  201. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/29/TASK.md +0 -0
  202. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/3/IMPLEMENTS.md +0 -0
  203. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/3/README.md +0 -0
  204. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/3/REQUIREMENTS.md +0 -0
  205. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/3/ci.refs.json +0 -0
  206. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/CHANGELOG.md +0 -0
  207. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/IMPLEMENTS.md +0 -0
  208. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/PLAN.md +0 -0
  209. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/README.md +0 -0
  210. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/REQUIREMENTS.md +0 -0
  211. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/TASKS.md +0 -0
  212. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/implements/1793257519898.md +0 -0
  213. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/implements/1793257826069.md +0 -0
  214. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793256929057.md +0 -0
  215. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793256990072.md +0 -0
  216. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793257216492.md +0 -0
  217. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793257519899.md +0 -0
  218. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/41/tasks/1793257826068.md +0 -0
  219. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/CHANGELOG.md +0 -0
  220. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/IMPLEMENTS.md +0 -0
  221. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/PLAN.md +0 -0
  222. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/README.md +0 -0
  223. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/REQUIREMENTS.md +0 -0
  224. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/TASKS.md +0 -0
  225. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/implements/1793260818660.md +0 -0
  226. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/implements/1793261447018.md +0 -0
  227. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/tasks/1793260818661.md +0 -0
  228. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/tasks/1793261447019.md +0 -0
  229. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/43/tasks/1793262314955.md +0 -0
  230. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/CHANGELOG.md +0 -0
  231. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/IMPLEMENTS.md +0 -0
  232. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/PLAN.md +0 -0
  233. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/README.md +0 -0
  234. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/REQUIREMENTS.md +0 -0
  235. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/TASKS.md +0 -0
  236. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/implements/1793282630353.md +0 -0
  237. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/50/tasks/1793282630354.md +0 -0
  238. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/CHANGELOG.md +0 -0
  239. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/IMPLEMENTS.md +0 -0
  240. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/PLAN.md +0 -0
  241. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/README.md +0 -0
  242. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/REQUIREMENTS.md +0 -0
  243. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/TASKS.md +0 -0
  244. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793294516720.md +0 -0
  245. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793295445979.md +0 -0
  246. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793295838896.md +0 -0
  247. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793296500296.md +0 -0
  248. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793299630936.md +0 -0
  249. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793301537859.md +0 -0
  250. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793301829543.md +0 -0
  251. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793302547669.md +0 -0
  252. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793327181557.md +0 -0
  253. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793329241422.md +0 -0
  254. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793516005517.md +0 -0
  255. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793516879583.md +0 -0
  256. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793517548589.md +0 -0
  257. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/implements/1793518878753.md +0 -0
  258. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793294230195.md +0 -0
  259. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793295445976.md +0 -0
  260. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793295838893.md +0 -0
  261. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793296500299.md +0 -0
  262. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793297795667.md +0 -0
  263. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793299630939.md +0 -0
  264. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793301829546.md +0 -0
  265. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793302844699.md +0 -0
  266. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793327181558.md +0 -0
  267. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793327685707.md +0 -0
  268. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793328011412.md +0 -0
  269. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793329241423.md +0 -0
  270. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793516005518.md +0 -0
  271. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793516879584.md +0 -0
  272. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793517548590.md +0 -0
  273. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/53/tasks/1793518878754.md +0 -0
  274. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/6/IMPLEMENTS.md +0 -0
  275. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/6/README.md +0 -0
  276. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/fix/6/REQUIREMENTS.md +0 -0
  277. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/18/IMPLEMENTS.md +0 -0
  278. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/18/README.md +0 -0
  279. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/18/REQUIREMENTS.md +0 -0
  280. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/32/IMPLEMENTS.md +0 -0
  281. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/32/ISSUE.md +0 -0
  282. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/32/PLAN.md +0 -0
  283. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/32/README.md +0 -0
  284. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/32/REQUIREMENTS.md +0 -0
  285. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/32/TASK.md +0 -0
  286. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/34/CHANGELOG.md +0 -0
  287. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/34/IMPLEMENTS.md +0 -0
  288. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/34/PLAN.md +0 -0
  289. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/34/README.md +0 -0
  290. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/34/REQUIREMENTS.md +0 -0
  291. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/36/CHANGELOG.md +0 -0
  292. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/36/IMPLEMENTS.md +0 -0
  293. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/36/PLAN.md +0 -0
  294. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/36/README.md +0 -0
  295. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/36/REQUIREMENTS.md +0 -0
  296. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/CHANGELOG.md +0 -0
  297. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/IMPLEMENTS.md +0 -0
  298. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/PLAN.md +0 -0
  299. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/README.md +0 -0
  300. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/REQUIREMENTS.md +0 -0
  301. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/TASKS.md +0 -0
  302. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/docs/CopilotReviewIssues.md +0 -0
  303. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/docs/CopilotReviewIssuesSetup.md +0 -0
  304. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/implements/1793291844133.md +0 -0
  305. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/tasks/1793291844134.md +0 -0
  306. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/38/tasks/1793292234123.md +0 -0
  307. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/CHANGELOG.md +0 -0
  308. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/IMPLEMENTS.md +0 -0
  309. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/PLAN.md +0 -0
  310. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/README.md +0 -0
  311. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/REQUIREMENTS.md +0 -0
  312. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/TASKS.md +0 -0
  313. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793623390266.md +0 -0
  314. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793625464717.md +0 -0
  315. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793626388737.md +0 -0
  316. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793626820522.md +0 -0
  317. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793627348502.md +0 -0
  318. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793628366252.md +0 -0
  319. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793629199999.md +0 -0
  320. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/implements/1793631035346.md +0 -0
  321. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793620359610.md +0 -0
  322. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793621161604.md +0 -0
  323. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793621502459.md +0 -0
  324. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793621903677.md +0 -0
  325. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793623390265.md +0 -0
  326. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793625269565.md +0 -0
  327. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793626388737.md +0 -0
  328. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793626820522.md +0 -0
  329. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793627348502.md +0 -0
  330. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793627590185.md +0 -0
  331. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793628366252.md +0 -0
  332. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793629199998.md +0 -0
  333. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/39/tasks/1793631035345.md +0 -0
  334. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/CHANGELOG.md +0 -0
  335. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/IMPLEMENTS.md +0 -0
  336. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/PLAN.md +0 -0
  337. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/README.md +0 -0
  338. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/REQUIREMENTS.md +0 -0
  339. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/TASKS.md +0 -0
  340. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/implements/1793395003714.md +0 -0
  341. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/tasks/1793395003713.md +0 -0
  342. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/issues/task/57/tasks/1793395058100.md +0 -0
  343. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/pyproject.toml +0 -0
  344. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/README.md +0 -0
  345. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/enabled_plugins +0 -0
  346. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/rabbitmq-3.yml +0 -0
  347. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/res/docker/rabbitmq/rabbitmq-4.yml +0 -0
  348. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/res/docker/redis/README.md +0 -0
  349. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/res/docker/redis/redis-6.yml +0 -0
  350. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/res/docker/redis/redis-7.yml +0 -0
  351. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.RPC.py +0 -0
  352. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.Stream.py +0 -0
  353. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.Timer.py +0 -0
  354. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Broker/RabbitMQ/Sample.py +0 -0
  355. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Broker/Redis/Sample.Stream.py +0 -0
  356. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Broker/Redis/Sample.py +0 -0
  357. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Broker/Sample.py +0 -0
  358. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Worker/RabbitMQ/Client.py +0 -0
  359. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Worker/RabbitMQ/Tasks.py +0 -0
  360. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Worker/RabbitMQ/Worker.py +0 -0
  361. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Worker/Redis/Sample.py +0 -0
  362. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/samples/Worker/Sample.py +0 -0
  363. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/setup.cfg +0 -0
  364. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/setup.py +0 -0
  365. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Configuration.py +0 -0
  366. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Connection.py +0 -0
  367. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Consumer.py +0 -0
  368. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Errors.py +0 -0
  369. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Event.py +0 -0
  370. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Configuration.py +0 -0
  371. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Connection.py +0 -0
  372. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Event.py +0 -0
  373. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Exchange.py +0 -0
  374. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Queue.py +0 -0
  375. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Serializer.py +0 -0
  376. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Stream.py +0 -0
  377. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/Subscription.py +0 -0
  378. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/RabbitMQ/__init__.py +0 -0
  379. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Configuration.py +0 -0
  380. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Connection.py +0 -0
  381. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Consumer.py +0 -0
  382. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Event.py +0 -0
  383. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Queue.py +0 -0
  384. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Serializer.py +0 -0
  385. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/Subscription.py +0 -0
  386. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/Redis/__init__.py +0 -0
  387. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Implements/__init__.py +0 -0
  388. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Priority.py +0 -0
  389. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/Protocol.py +0 -0
  390. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Broker/__init__.py +0 -0
  391. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Descriptor/DataObject.py +0 -0
  392. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Descriptor/Types.py +0 -0
  393. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Descriptor/Value.py +0 -0
  394. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Descriptor/__init__.py +0 -0
  395. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extension.py +0 -0
  396. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Metrics.py +0 -0
  397. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Ping.py +0 -0
  398. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Play.html +0 -0
  399. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Play.py +0 -0
  400. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Specifications.py +0 -0
  401. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Status.html +0 -0
  402. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/Status.py +0 -0
  403. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Extensions/__init__.py +0 -0
  404. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Inspector.py +0 -0
  405. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/Response.py +0 -0
  406. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Inspector/__init__.py +0 -0
  407. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Pattern.py +0 -0
  408. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Array.py +0 -0
  409. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Common.py +0 -0
  410. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Compare.py +0 -0
  411. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Condition.py +0 -0
  412. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/DataObject.py +0 -0
  413. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/DateTime.py +0 -0
  414. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Number.py +0 -0
  415. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Object.py +0 -0
  416. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Size.py +0 -0
  417. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/String.py +0 -0
  418. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/Type.py +0 -0
  419. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Patterns/__init__.py +0 -0
  420. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Validate.py +0 -0
  421. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/Validator.py +0 -0
  422. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Validator/__init__.py +0 -0
  423. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/Executor.py +0 -0
  424. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/Message.py +0 -0
  425. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/Pool.py +0 -0
  426. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/Run.py +0 -0
  427. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/Specification.py +0 -0
  428. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/Startup.py +0 -0
  429. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/Worker.py +0 -0
  430. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/Worker/__init__.py +0 -0
  431. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/src/__init__.py +0 -0
  432. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/__init__.py +0 -0
  433. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/_support.py +0 -0
  434. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/_support_inspector.py +0 -0
  435. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/_support_inspector_play.py +0 -0
  436. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/_support_task_messages.py +0 -0
  437. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/__init__.py +0 -0
  438. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_inspector.py +0 -0
  439. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_inspector_play.py +0 -0
  440. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_broker_methods.py +0 -0
  441. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_integration.py +0 -0
  442. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_logging.py +0 -0
  443. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_priorities.py +0 -0
  444. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_rpc.py +0 -0
  445. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_rpc_integration.py +0 -0
  446. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_timeouts.py +0 -0
  447. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_timers.py +0 -0
  448. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_rabbitmq_worker.py +0 -0
  449. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_specifications.py +0 -0
  450. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_task_messages.py +0 -0
  451. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/rabbitmq/test_task_priorities.py +0 -0
  452. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/__init__.py +0 -0
  453. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/test_inspector.py +0 -0
  454. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/test_inspector_play.py +0 -0
  455. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/test_redis.py +0 -0
  456. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/test_redis_integration.py +0 -0
  457. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/test_redis_logging.py +0 -0
  458. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/test_task_messages.py +0 -0
  459. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/redis/test_task_priorities.py +0 -0
  460. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_broker_packaging.py +0 -0
  461. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_descriptor.py +0 -0
  462. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_inspector.py +0 -0
  463. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_inspector_logging.py +0 -0
  464. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_inspector_play.py +0 -0
  465. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_lifecycle_hooks.py +0 -0
  466. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_logging.py +0 -0
  467. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_pool_callbacks.py +0 -0
  468. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_process_signals.py +0 -0
  469. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_runner_hooks.py +0 -0
  470. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_specifications.py +0 -0
  471. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_status.py +0 -0
  472. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_status_ui.cjs +0 -0
  473. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_task_messages.py +0 -0
  474. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_validator_patterns.py +0 -0
  475. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_worker.py +0 -0
  476. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_worker_recovery.py +0 -0
  477. {defstream_rabbitmq-0.1.26 → defstream_rabbitmq-0.1.28}/tests/test_worker_startup.py +0 -0
@@ -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
- 'IMPLEMENTS.md',
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+.-]*:|\/\/)/i.test(value)) {
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({ template, documents, issue, issueDirectory, owner, repo, sha }) {
99
- const issueType = issueDirectory.split('/')[1];
100
- const documentTitle = /^#[ \t]+(.+)$/m.exec(documents['README.md'] ?? '')?.[1].trim();
101
- const title = documentTitle && documentTitle.length <= 256 ? documentTitle : issue?.title?.trim();
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 linkedDocuments = {};
107
- for (const [fileName, markdown] of Object.entries(documents)) {
108
- if (markdown.trim()) {
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 changeType = {
113
- bug: '버그 수정 및 일반 변경, 핫픽스 처리',
114
- fix: '버그 수정 및 일반 변경, 핫픽스 처리',
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 checkbox = `- [ ] ${changeType}`;
122
- const issueNumber = issueDirectory.split('/')[2];
123
- const issueLink = `https://github.com/${owner}/${repo}/issues/${issueNumber}`;
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
- body = render(false, false);
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, issue };
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 issueDirectory = parseIssueBranch(branch);
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(openPullRequests[0]?.number)) {
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 openPullRequests[0]?.node_id !== 'string' || !openPullRequests[0].node_id) {
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
- const { labels, assignees, milestone, nodeId: issueNodeId } = await getIssueMetadata(
389
- encodedRepository,
390
- issueDirectory,
391
- token,
392
- fetchImpl,
393
- );
394
- await addPullRequestLabels(
395
- encodedRepository,
396
- openPullRequests[0].number,
397
- labels,
398
- token,
399
- fetchImpl,
400
- );
401
- await addPullRequestAssignees(
402
- encodedRepository,
403
- openPullRequests[0].number,
404
- assignees,
405
- token,
406
- fetchImpl,
407
- );
408
- await setPullRequestMilestone(
409
- encodedRepository,
410
- openPullRequests[0].number,
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
- await linkPullRequestToIssue(
416
- issueNodeId,
417
- openPullRequests[0].node_id,
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
- return { status: 'already-open', number: openPullRequests[0].number };
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
- const compare = await githubRequest(
425
- `${encodedRepository}/compare/${encodeURIComponent(base)}...${encodeURIComponent(sha)}`,
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
- if (baseTree === headTree) {
448
- return { status: 'no-changes' };
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(`Pull request #${result.number} is already open for this branch and base`);
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
  }