@diff-review-system/drs 4.0.0-rc.4 → 4.1.0

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 (419) hide show
  1. package/.pi/agents/describe/pr-describer.md +14 -0
  2. package/.pi/agents/review/unified-reviewer.md +33 -7
  3. package/.pi/agents/task/agents-md-updater.md +3 -1
  4. package/.pi/agents/task/review-assistant.md +22 -0
  5. package/.pi/agents/task/review-issue-fixer.md +18 -1
  6. package/.pi/agents/visual/pr-explainer.md +205 -0
  7. package/.pi/workflows/github-pr-describe.yaml +10 -7
  8. package/.pi/workflows/github-pr-fix-review-issues-stacked.yaml +154 -0
  9. package/.pi/workflows/github-pr-post-comment.yaml +10 -10
  10. package/.pi/workflows/github-pr-review-post.yaml +18 -8
  11. package/.pi/workflows/github-pr-review.yaml +354 -7
  12. package/.pi/workflows/github-pr-show-changes.yaml +8 -8
  13. package/.pi/workflows/github-pr-update-agents-md-stacked.yaml +103 -0
  14. package/.pi/workflows/github-pr-visual-explain.yaml +80 -0
  15. package/.pi/workflows/gitlab-mr-describe.yaml +8 -5
  16. package/.pi/workflows/gitlab-mr-fix-review-issues-stacked.yaml +150 -0
  17. package/.pi/workflows/gitlab-mr-post-comment.yaml +8 -8
  18. package/.pi/workflows/gitlab-mr-review.yaml +354 -5
  19. package/.pi/workflows/gitlab-mr-show-changes.yaml +6 -6
  20. package/.pi/workflows/gitlab-mr-update-agents-md-stacked.yaml +100 -0
  21. package/.pi/workflows/gitlab-mr-visual-explain.yaml +78 -0
  22. package/.pi/workflows/local-fix-review-issues.yaml +89 -13
  23. package/.pi/workflows/local-review.yaml +15 -2
  24. package/.pi/workflows/local-update-agents-md.yaml +1 -1
  25. package/.pi/workflows/local-visual-explain.yaml +76 -0
  26. package/.pi/workflows/release-changelog-finalize.yaml +47 -0
  27. package/.pi/workflows/tag-changelog-update.yaml +4 -4
  28. package/.pi/workflows/temporal-control-smoke.yaml +63 -0
  29. package/README.md +130 -27
  30. package/dist/ci/runner.d.ts.map +1 -1
  31. package/dist/ci/runner.js +3 -1
  32. package/dist/ci/runner.js.map +1 -1
  33. package/dist/cli/index.js +258 -9
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/cli/init.d.ts +6 -1
  36. package/dist/cli/init.d.ts.map +1 -1
  37. package/dist/cli/init.js +29 -10
  38. package/dist/cli/init.js.map +1 -1
  39. package/dist/cli/run-agent.d.ts +4 -7
  40. package/dist/cli/run-agent.d.ts.map +1 -1
  41. package/dist/cli/run-agent.js +4 -0
  42. package/dist/cli/run-agent.js.map +1 -1
  43. package/dist/cli/workflow-executor-selection.d.ts +3 -0
  44. package/dist/cli/workflow-executor-selection.d.ts.map +1 -0
  45. package/dist/cli/workflow-executor-selection.js +15 -0
  46. package/dist/cli/workflow-executor-selection.js.map +1 -0
  47. package/dist/cli/workflow.d.ts +76 -26
  48. package/dist/cli/workflow.d.ts.map +1 -1
  49. package/dist/cli/workflow.js +1624 -192
  50. package/dist/cli/workflow.js.map +1 -1
  51. package/dist/github/client.d.ts +12 -0
  52. package/dist/github/client.d.ts.map +1 -1
  53. package/dist/github/client.js +27 -0
  54. package/dist/github/client.js.map +1 -1
  55. package/dist/github/platform-adapter.d.ts +6 -1
  56. package/dist/github/platform-adapter.d.ts.map +1 -1
  57. package/dist/github/platform-adapter.js +84 -8
  58. package/dist/github/platform-adapter.js.map +1 -1
  59. package/dist/gitlab/client.d.ts +11 -0
  60. package/dist/gitlab/client.d.ts.map +1 -1
  61. package/dist/gitlab/client.js +11 -0
  62. package/dist/gitlab/client.js.map +1 -1
  63. package/dist/gitlab/platform-adapter.d.ts +3 -1
  64. package/dist/gitlab/platform-adapter.d.ts.map +1 -1
  65. package/dist/gitlab/platform-adapter.js +32 -1
  66. package/dist/gitlab/platform-adapter.js.map +1 -1
  67. package/dist/lib/agent-result.d.ts +8 -0
  68. package/dist/lib/agent-result.d.ts.map +1 -0
  69. package/dist/lib/agent-result.js +2 -0
  70. package/dist/lib/agent-result.js.map +1 -0
  71. package/dist/lib/comment-formatter.d.ts +8 -0
  72. package/dist/lib/comment-formatter.d.ts.map +1 -1
  73. package/dist/lib/comment-formatter.js +12 -4
  74. package/dist/lib/comment-formatter.js.map +1 -1
  75. package/dist/lib/comment-poster.d.ts.map +1 -1
  76. package/dist/lib/comment-poster.js +28 -1
  77. package/dist/lib/comment-poster.js.map +1 -1
  78. package/dist/lib/config.d.ts +71 -11
  79. package/dist/lib/config.d.ts.map +1 -1
  80. package/dist/lib/config.js +163 -28
  81. package/dist/lib/config.js.map +1 -1
  82. package/dist/lib/context-compression.d.ts +10 -0
  83. package/dist/lib/context-compression.d.ts.map +1 -1
  84. package/dist/lib/context-compression.js +101 -13
  85. package/dist/lib/context-compression.js.map +1 -1
  86. package/dist/lib/context-loader.d.ts +2 -1
  87. package/dist/lib/context-loader.d.ts.map +1 -1
  88. package/dist/lib/context-loader.js +70 -1
  89. package/dist/lib/context-loader.js.map +1 -1
  90. package/dist/lib/describe-core.d.ts.map +1 -1
  91. package/dist/lib/describe-core.js +3 -2
  92. package/dist/lib/describe-core.js.map +1 -1
  93. package/dist/lib/diff-lines.d.ts +9 -0
  94. package/dist/lib/diff-lines.d.ts.map +1 -1
  95. package/dist/lib/diff-lines.js +17 -9
  96. package/dist/lib/diff-lines.js.map +1 -1
  97. package/dist/lib/exit.js +4 -4
  98. package/dist/lib/exit.js.map +1 -1
  99. package/dist/lib/html-artifact.d.ts +14 -0
  100. package/dist/lib/html-artifact.d.ts.map +1 -0
  101. package/dist/lib/html-artifact.js +59 -0
  102. package/dist/lib/html-artifact.js.map +1 -0
  103. package/dist/lib/issue-parser.js +3 -3
  104. package/dist/lib/issue-parser.js.map +1 -1
  105. package/dist/lib/json-output-schema.d.ts +70 -0
  106. package/dist/lib/json-output-schema.d.ts.map +1 -1
  107. package/dist/lib/json-output-schema.js +40 -0
  108. package/dist/lib/json-output-schema.js.map +1 -1
  109. package/dist/lib/output-paths.d.ts +0 -1
  110. package/dist/lib/output-paths.d.ts.map +1 -1
  111. package/dist/lib/output-paths.js +0 -1
  112. package/dist/lib/output-paths.js.map +1 -1
  113. package/dist/lib/platform-client.d.ts +26 -0
  114. package/dist/lib/platform-client.d.ts.map +1 -1
  115. package/dist/lib/project-setup.d.ts +10 -0
  116. package/dist/lib/project-setup.d.ts.map +1 -0
  117. package/dist/lib/project-setup.js +25 -0
  118. package/dist/lib/project-setup.js.map +1 -0
  119. package/dist/lib/review-artifact-store.d.ts +16 -0
  120. package/dist/lib/review-artifact-store.d.ts.map +1 -0
  121. package/dist/lib/review-artifact-store.js +84 -0
  122. package/dist/lib/review-artifact-store.js.map +1 -0
  123. package/dist/lib/review-artifact.d.ts +69 -0
  124. package/dist/lib/review-artifact.d.ts.map +1 -0
  125. package/dist/lib/review-artifact.js +172 -0
  126. package/dist/lib/review-artifact.js.map +1 -0
  127. package/dist/lib/review-core.d.ts +7 -4
  128. package/dist/lib/review-core.d.ts.map +1 -1
  129. package/dist/lib/review-core.js +82 -165
  130. package/dist/lib/review-core.js.map +1 -1
  131. package/dist/lib/review-orchestrator.d.ts +23 -0
  132. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  133. package/dist/lib/review-orchestrator.js +20 -13
  134. package/dist/lib/review-orchestrator.js.map +1 -1
  135. package/dist/lib/review-parser.d.ts.map +1 -1
  136. package/dist/lib/review-parser.js +15 -12
  137. package/dist/lib/review-parser.js.map +1 -1
  138. package/dist/lib/review-usage.d.ts +4 -0
  139. package/dist/lib/review-usage.d.ts.map +1 -1
  140. package/dist/lib/review-usage.js +25 -0
  141. package/dist/lib/review-usage.js.map +1 -1
  142. package/dist/lib/skills.d.ts +16 -0
  143. package/dist/lib/skills.d.ts.map +1 -0
  144. package/dist/lib/skills.js +140 -0
  145. package/dist/lib/skills.js.map +1 -0
  146. package/dist/lib/trace-collector.d.ts +105 -0
  147. package/dist/lib/trace-collector.d.ts.map +1 -0
  148. package/dist/lib/trace-collector.js +255 -0
  149. package/dist/lib/trace-collector.js.map +1 -0
  150. package/dist/lib/trace-html.d.ts +3 -0
  151. package/dist/lib/trace-html.d.ts.map +1 -0
  152. package/dist/lib/trace-html.js +349 -0
  153. package/dist/lib/trace-html.js.map +1 -0
  154. package/dist/lib/workflow/artifact-store.d.ts +71 -0
  155. package/dist/lib/workflow/artifact-store.d.ts.map +1 -0
  156. package/dist/lib/workflow/artifact-store.js +121 -0
  157. package/dist/lib/workflow/artifact-store.js.map +1 -0
  158. package/dist/lib/workflow/compiled-plan.d.ts +87 -0
  159. package/dist/lib/workflow/compiled-plan.d.ts.map +1 -0
  160. package/dist/lib/workflow/compiled-plan.js +62 -0
  161. package/dist/lib/workflow/compiled-plan.js.map +1 -0
  162. package/dist/lib/workflow/executor.d.ts +18 -0
  163. package/dist/lib/workflow/executor.d.ts.map +1 -0
  164. package/dist/lib/workflow/executor.js +2 -0
  165. package/dist/lib/workflow/executor.js.map +1 -0
  166. package/dist/lib/workflow/graph.d.ts +30 -0
  167. package/dist/lib/workflow/graph.d.ts.map +1 -0
  168. package/dist/lib/workflow/graph.js +139 -0
  169. package/dist/lib/workflow/graph.js.map +1 -0
  170. package/dist/lib/workflow/input.d.ts +4 -0
  171. package/dist/lib/workflow/input.d.ts.map +1 -0
  172. package/dist/lib/workflow/input.js +4 -0
  173. package/dist/lib/workflow/input.js.map +1 -0
  174. package/dist/lib/workflow/node-executor.d.ts +19 -0
  175. package/dist/lib/workflow/node-executor.d.ts.map +1 -0
  176. package/dist/lib/workflow/node-executor.js +2 -0
  177. package/dist/lib/workflow/node-executor.js.map +1 -0
  178. package/dist/lib/workflow/planning.d.ts +51 -0
  179. package/dist/lib/workflow/planning.d.ts.map +1 -0
  180. package/dist/lib/workflow/planning.js +814 -0
  181. package/dist/lib/workflow/planning.js.map +1 -0
  182. package/dist/lib/workflow/types.d.ts +66 -0
  183. package/dist/lib/workflow/types.d.ts.map +1 -0
  184. package/dist/lib/workflow/types.js +2 -0
  185. package/dist/lib/workflow/types.js.map +1 -0
  186. package/dist/lib/workflow-artifacts.d.ts +54 -0
  187. package/dist/lib/workflow-artifacts.d.ts.map +1 -0
  188. package/dist/lib/workflow-artifacts.js +150 -0
  189. package/dist/lib/workflow-artifacts.js.map +1 -0
  190. package/dist/lib/write-json-output.d.ts.map +1 -1
  191. package/dist/lib/write-json-output.js +3 -8
  192. package/dist/lib/write-json-output.js.map +1 -1
  193. package/dist/pi/sdk.d.ts.map +1 -1
  194. package/dist/pi/sdk.js +576 -8
  195. package/dist/pi/sdk.js.map +1 -1
  196. package/dist/runtime/agent-loader.js +2 -2
  197. package/dist/runtime/built-in-paths.d.ts +1 -0
  198. package/dist/runtime/built-in-paths.d.ts.map +1 -1
  199. package/dist/runtime/built-in-paths.js +7 -0
  200. package/dist/runtime/built-in-paths.js.map +1 -1
  201. package/dist/runtime/client.d.ts +2 -0
  202. package/dist/runtime/client.d.ts.map +1 -1
  203. package/dist/runtime/client.js +11 -5
  204. package/dist/runtime/client.js.map +1 -1
  205. package/dist/temporal/activities.d.ts +26 -0
  206. package/dist/temporal/activities.d.ts.map +1 -0
  207. package/dist/temporal/activities.js +219 -0
  208. package/dist/temporal/activities.js.map +1 -0
  209. package/dist/temporal/config.d.ts +4 -0
  210. package/dist/temporal/config.d.ts.map +1 -0
  211. package/dist/temporal/config.js +36 -0
  212. package/dist/temporal/config.js.map +1 -0
  213. package/dist/temporal/executor.d.ts +7 -0
  214. package/dist/temporal/executor.d.ts.map +1 -0
  215. package/dist/temporal/executor.js +233 -0
  216. package/dist/temporal/executor.js.map +1 -0
  217. package/dist/temporal/retry-policy.d.ts +28 -0
  218. package/dist/temporal/retry-policy.d.ts.map +1 -0
  219. package/dist/temporal/retry-policy.js +56 -0
  220. package/dist/temporal/retry-policy.js.map +1 -0
  221. package/dist/temporal/types.d.ts +86 -0
  222. package/dist/temporal/types.d.ts.map +1 -0
  223. package/dist/temporal/types.js +2 -0
  224. package/dist/temporal/types.js.map +1 -0
  225. package/dist/temporal/worker.d.ts +3 -0
  226. package/dist/temporal/worker.d.ts.map +1 -0
  227. package/dist/temporal/worker.js +18 -0
  228. package/dist/temporal/worker.js.map +1 -0
  229. package/dist/temporal/workflow-id.d.ts +27 -0
  230. package/dist/temporal/workflow-id.d.ts.map +1 -0
  231. package/dist/temporal/workflow-id.js +53 -0
  232. package/dist/temporal/workflow-id.js.map +1 -0
  233. package/dist/temporal/workflows.d.ts +6 -0
  234. package/dist/temporal/workflows.d.ts.map +1 -0
  235. package/dist/temporal/workflows.js +342 -0
  236. package/dist/temporal/workflows.js.map +1 -0
  237. package/package.json +26 -15
  238. package/.pi/workflows/github-pr-describe-post.yaml +0 -24
  239. package/.pi/workflows/gitlab-mr-describe-post.yaml +0 -22
  240. package/.pi/workflows/gitlab-mr-review-code-quality.yaml +0 -31
  241. package/.pi/workflows/gitlab-mr-review-post-code-quality.yaml +0 -40
  242. package/.pi/workflows/gitlab-mr-review-post.yaml +0 -30
  243. package/.pi/workflows/local-staged-review.yaml +0 -17
  244. package/dist/cli/run-agent.test.d.ts +0 -2
  245. package/dist/cli/run-agent.test.d.ts.map +0 -1
  246. package/dist/cli/run-agent.test.js +0 -204
  247. package/dist/cli/run-agent.test.js.map +0 -1
  248. package/dist/cli/workflow.test.d.ts +0 -2
  249. package/dist/cli/workflow.test.d.ts.map +0 -1
  250. package/dist/cli/workflow.test.js +0 -1410
  251. package/dist/cli/workflow.test.js.map +0 -1
  252. package/dist/github/client.test.d.ts +0 -2
  253. package/dist/github/client.test.d.ts.map +0 -1
  254. package/dist/github/client.test.js +0 -206
  255. package/dist/github/client.test.js.map +0 -1
  256. package/dist/github/platform-adapter.test.d.ts +0 -2
  257. package/dist/github/platform-adapter.test.d.ts.map +0 -1
  258. package/dist/github/platform-adapter.test.js +0 -40
  259. package/dist/github/platform-adapter.test.js.map +0 -1
  260. package/dist/gitlab/diff-parser.test.d.ts +0 -2
  261. package/dist/gitlab/diff-parser.test.d.ts.map +0 -1
  262. package/dist/gitlab/diff-parser.test.js +0 -315
  263. package/dist/gitlab/diff-parser.test.js.map +0 -1
  264. package/dist/gitlab/platform-adapter.test.d.ts +0 -2
  265. package/dist/gitlab/platform-adapter.test.d.ts.map +0 -1
  266. package/dist/gitlab/platform-adapter.test.js +0 -21
  267. package/dist/gitlab/platform-adapter.test.js.map +0 -1
  268. package/dist/index.test.d.ts +0 -2
  269. package/dist/index.test.d.ts.map +0 -1
  270. package/dist/index.test.js +0 -7
  271. package/dist/index.test.js.map +0 -1
  272. package/dist/lib/code-quality-report.test.d.ts +0 -2
  273. package/dist/lib/code-quality-report.test.d.ts.map +0 -1
  274. package/dist/lib/code-quality-report.test.js +0 -327
  275. package/dist/lib/code-quality-report.test.js.map +0 -1
  276. package/dist/lib/comment-formatter.test.d.ts +0 -2
  277. package/dist/lib/comment-formatter.test.d.ts.map +0 -1
  278. package/dist/lib/comment-formatter.test.js +0 -727
  279. package/dist/lib/comment-formatter.test.js.map +0 -1
  280. package/dist/lib/comment-manager.test.d.ts +0 -2
  281. package/dist/lib/comment-manager.test.d.ts.map +0 -1
  282. package/dist/lib/comment-manager.test.js +0 -680
  283. package/dist/lib/comment-manager.test.js.map +0 -1
  284. package/dist/lib/comment-poster.test.d.ts +0 -5
  285. package/dist/lib/comment-poster.test.d.ts.map +0 -1
  286. package/dist/lib/comment-poster.test.js +0 -255
  287. package/dist/lib/comment-poster.test.js.map +0 -1
  288. package/dist/lib/config-model-overrides.test.d.ts +0 -2
  289. package/dist/lib/config-model-overrides.test.d.ts.map +0 -1
  290. package/dist/lib/config-model-overrides.test.js +0 -218
  291. package/dist/lib/config-model-overrides.test.js.map +0 -1
  292. package/dist/lib/config.test.d.ts +0 -2
  293. package/dist/lib/config.test.d.ts.map +0 -1
  294. package/dist/lib/config.test.js +0 -353
  295. package/dist/lib/config.test.js.map +0 -1
  296. package/dist/lib/context-compression.test.d.ts +0 -2
  297. package/dist/lib/context-compression.test.d.ts.map +0 -1
  298. package/dist/lib/context-compression.test.js +0 -337
  299. package/dist/lib/context-compression.test.js.map +0 -1
  300. package/dist/lib/context-loader.test.d.ts +0 -2
  301. package/dist/lib/context-loader.test.d.ts.map +0 -1
  302. package/dist/lib/context-loader.test.js +0 -212
  303. package/dist/lib/context-loader.test.js.map +0 -1
  304. package/dist/lib/cursor-fix-link.test.d.ts +0 -2
  305. package/dist/lib/cursor-fix-link.test.d.ts.map +0 -1
  306. package/dist/lib/cursor-fix-link.test.js +0 -70
  307. package/dist/lib/cursor-fix-link.test.js.map +0 -1
  308. package/dist/lib/describe-core.test.d.ts +0 -2
  309. package/dist/lib/describe-core.test.d.ts.map +0 -1
  310. package/dist/lib/describe-core.test.js +0 -208
  311. package/dist/lib/describe-core.test.js.map +0 -1
  312. package/dist/lib/describe-output-path.test.d.ts +0 -2
  313. package/dist/lib/describe-output-path.test.d.ts.map +0 -1
  314. package/dist/lib/describe-output-path.test.js +0 -51
  315. package/dist/lib/describe-output-path.test.js.map +0 -1
  316. package/dist/lib/describe-parser.test.d.ts +0 -2
  317. package/dist/lib/describe-parser.test.d.ts.map +0 -1
  318. package/dist/lib/describe-parser.test.js +0 -282
  319. package/dist/lib/describe-parser.test.js.map +0 -1
  320. package/dist/lib/description-executor.test.d.ts +0 -2
  321. package/dist/lib/description-executor.test.d.ts.map +0 -1
  322. package/dist/lib/description-executor.test.js +0 -135
  323. package/dist/lib/description-executor.test.js.map +0 -1
  324. package/dist/lib/description-formatter.test.d.ts +0 -2
  325. package/dist/lib/description-formatter.test.d.ts.map +0 -1
  326. package/dist/lib/description-formatter.test.js +0 -57
  327. package/dist/lib/description-formatter.test.js.map +0 -1
  328. package/dist/lib/diff-lines.test.d.ts +0 -2
  329. package/dist/lib/diff-lines.test.d.ts.map +0 -1
  330. package/dist/lib/diff-lines.test.js +0 -13
  331. package/dist/lib/diff-lines.test.js.map +0 -1
  332. package/dist/lib/diff-parser.test.d.ts +0 -2
  333. package/dist/lib/diff-parser.test.d.ts.map +0 -1
  334. package/dist/lib/diff-parser.test.js +0 -335
  335. package/dist/lib/diff-parser.test.js.map +0 -1
  336. package/dist/lib/error-comment-poster.test.d.ts +0 -2
  337. package/dist/lib/error-comment-poster.test.d.ts.map +0 -1
  338. package/dist/lib/error-comment-poster.test.js +0 -128
  339. package/dist/lib/error-comment-poster.test.js.map +0 -1
  340. package/dist/lib/exit.test.d.ts +0 -2
  341. package/dist/lib/exit.test.d.ts.map +0 -1
  342. package/dist/lib/exit.test.js +0 -120
  343. package/dist/lib/exit.test.js.map +0 -1
  344. package/dist/lib/issue-parser.test.d.ts +0 -2
  345. package/dist/lib/issue-parser.test.d.ts.map +0 -1
  346. package/dist/lib/issue-parser.test.js +0 -281
  347. package/dist/lib/issue-parser.test.js.map +0 -1
  348. package/dist/lib/json-output-schema.test.d.ts +0 -2
  349. package/dist/lib/json-output-schema.test.d.ts.map +0 -1
  350. package/dist/lib/json-output-schema.test.js +0 -92
  351. package/dist/lib/json-output-schema.test.js.map +0 -1
  352. package/dist/lib/json-output.test.d.ts +0 -2
  353. package/dist/lib/json-output.test.d.ts.map +0 -1
  354. package/dist/lib/json-output.test.js +0 -141
  355. package/dist/lib/json-output.test.js.map +0 -1
  356. package/dist/lib/logger.test.d.ts +0 -2
  357. package/dist/lib/logger.test.d.ts.map +0 -1
  358. package/dist/lib/logger.test.js +0 -324
  359. package/dist/lib/logger.test.js.map +0 -1
  360. package/dist/lib/position-validator.test.d.ts +0 -2
  361. package/dist/lib/position-validator.test.d.ts.map +0 -1
  362. package/dist/lib/position-validator.test.js +0 -128
  363. package/dist/lib/position-validator.test.js.map +0 -1
  364. package/dist/lib/prompt-budget.test.d.ts +0 -2
  365. package/dist/lib/prompt-budget.test.d.ts.map +0 -1
  366. package/dist/lib/prompt-budget.test.js +0 -55
  367. package/dist/lib/prompt-budget.test.js.map +0 -1
  368. package/dist/lib/repository-validator.test.d.ts +0 -5
  369. package/dist/lib/repository-validator.test.d.ts.map +0 -1
  370. package/dist/lib/repository-validator.test.js +0 -341
  371. package/dist/lib/repository-validator.test.js.map +0 -1
  372. package/dist/lib/review-core.test.d.ts +0 -2
  373. package/dist/lib/review-core.test.d.ts.map +0 -1
  374. package/dist/lib/review-core.test.js +0 -614
  375. package/dist/lib/review-core.test.js.map +0 -1
  376. package/dist/lib/review-orchestrator.test.d.ts +0 -2
  377. package/dist/lib/review-orchestrator.test.d.ts.map +0 -1
  378. package/dist/lib/review-orchestrator.test.js +0 -552
  379. package/dist/lib/review-orchestrator.test.js.map +0 -1
  380. package/dist/lib/review-output-path.test.d.ts +0 -2
  381. package/dist/lib/review-output-path.test.d.ts.map +0 -1
  382. package/dist/lib/review-output-path.test.js +0 -83
  383. package/dist/lib/review-output-path.test.js.map +0 -1
  384. package/dist/lib/review-parser.test.d.ts +0 -2
  385. package/dist/lib/review-parser.test.d.ts.map +0 -1
  386. package/dist/lib/review-parser.test.js +0 -130
  387. package/dist/lib/review-parser.test.js.map +0 -1
  388. package/dist/lib/review-usage.test.d.ts +0 -2
  389. package/dist/lib/review-usage.test.d.ts.map +0 -1
  390. package/dist/lib/review-usage.test.js +0 -83
  391. package/dist/lib/review-usage.test.js.map +0 -1
  392. package/dist/lib/unified-review-executor.d.ts +0 -58
  393. package/dist/lib/unified-review-executor.d.ts.map +0 -1
  394. package/dist/lib/unified-review-executor.js +0 -201
  395. package/dist/lib/unified-review-executor.js.map +0 -1
  396. package/dist/lib/unified-review-executor.test.d.ts +0 -5
  397. package/dist/lib/unified-review-executor.test.d.ts.map +0 -1
  398. package/dist/lib/unified-review-executor.test.js +0 -472
  399. package/dist/lib/unified-review-executor.test.js.map +0 -1
  400. package/dist/lib/write-json-output.test.d.ts +0 -2
  401. package/dist/lib/write-json-output.test.d.ts.map +0 -1
  402. package/dist/lib/write-json-output.test.js +0 -259
  403. package/dist/lib/write-json-output.test.js.map +0 -1
  404. package/dist/pi/sdk.test.d.ts +0 -2
  405. package/dist/pi/sdk.test.d.ts.map +0 -1
  406. package/dist/pi/sdk.test.js +0 -488
  407. package/dist/pi/sdk.test.js.map +0 -1
  408. package/dist/runtime/agent-loader.test.d.ts +0 -2
  409. package/dist/runtime/agent-loader.test.d.ts.map +0 -1
  410. package/dist/runtime/agent-loader.test.js +0 -277
  411. package/dist/runtime/agent-loader.test.js.map +0 -1
  412. package/dist/runtime/client.test.d.ts +0 -2
  413. package/dist/runtime/client.test.d.ts.map +0 -1
  414. package/dist/runtime/client.test.js +0 -772
  415. package/dist/runtime/client.test.js.map +0 -1
  416. package/dist/runtime/path-config.test.d.ts +0 -2
  417. package/dist/runtime/path-config.test.d.ts.map +0 -1
  418. package/dist/runtime/path-config.test.js +0 -112
  419. package/dist/runtime/path-config.test.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ name: gitlab-mr-fix-review-issues-stacked
2
+ description: Fix high-severity GitLab MR review issues and open a stacked MR
3
+ metadata:
4
+ kind: review
5
+ tags: [review, fix, gitlab, merge-request]
6
+ review:
7
+ source: gitlab-mr
8
+ diff: true
9
+ issues: true
10
+ inputs:
11
+ project: ''
12
+ mr: ''
13
+ severity: 'high'
14
+ minIssues: '1'
15
+ branchPrefix: 'drs-fix/mr-'
16
+ allowStackedSource: 'false'
17
+ draft: 'false'
18
+ output: changeRequest
19
+ nodes:
20
+ change:
21
+ action: change-source
22
+ with:
23
+ type: gitlab-mr
24
+ project: '{{inputs.project}}'
25
+ mr: '{{inputs.mr}}'
26
+ output: change
27
+
28
+ guard:
29
+ action: stack-guard
30
+ needs:
31
+ - change
32
+ with:
33
+ source: change
34
+ allowStackedSource: '{{inputs.allowStackedSource}}'
35
+ output: stackGuard
36
+
37
+ review:
38
+ action: review
39
+ needs:
40
+ - change
41
+ - guard
42
+ if: '{{artifacts.stackGuard.allowed}} == true'
43
+ with:
44
+ source: change
45
+ output: review
46
+
47
+ threshold:
48
+ action: review-threshold
49
+ needs:
50
+ - review
51
+ with:
52
+ review: review
53
+ severity: '{{inputs.severity}}'
54
+ minIssues: '{{inputs.minIssues}}'
55
+ output: reviewThreshold
56
+
57
+ branch:
58
+ action: git-branch
59
+ needs:
60
+ - threshold
61
+ if: '{{artifacts.reviewThreshold.matched}} == true'
62
+ with:
63
+ name: '{{inputs.branchPrefix}}{{inputs.mr}}'
64
+ force: true
65
+ output: branch
66
+
67
+ fix-issues:
68
+ agent: task/review-issue-fixer
69
+ needs:
70
+ - branch
71
+ - review
72
+ input: |
73
+ Fix actionable issues from this DRS review artifact for GitLab MR !{{inputs.mr}}.
74
+
75
+ Only fix findings at or above severity {{inputs.severity}} unless a lower-severity issue is directly required by such a fix.
76
+
77
+ Review artifact path: {{artifacts.reviewArtifact.path}}
78
+
79
+ Use the read_artifact tool with this path to get the finding manifest, then pull full details for specific findings by id. Do not assume the review JSON is in this prompt — call the tool.
80
+
81
+ Current MR change source files (read these as needed):
82
+ {{artifacts.change.files}}
83
+
84
+ Use the drs_check tool after making changes to run configured validation checks before returning.
85
+ output: fixes
86
+
87
+ diff:
88
+ action: has-diff
89
+ needs:
90
+ - fix-issues
91
+ output: fixDiff
92
+
93
+ commit:
94
+ action: git-commit
95
+ needs:
96
+ - diff
97
+ if: '{{artifacts.fixDiff.changed}} == true'
98
+ with:
99
+ message: 'fix: address DRS review issues for MR !{{inputs.mr}}'
100
+ paths: '.'
101
+ output: commit
102
+
103
+ push:
104
+ action: git-push
105
+ needs:
106
+ - commit
107
+ with:
108
+ branch: '{{inputs.branchPrefix}}{{inputs.mr}}'
109
+ output: push
110
+
111
+ create:
112
+ action: create-change-request
113
+ needs:
114
+ - push
115
+ with:
116
+ platform: gitlab
117
+ project: '{{inputs.project}}'
118
+ sourceBranch: '{{inputs.branchPrefix}}{{inputs.mr}}'
119
+ targetBranch: '{{artifacts.change.context.pullRequest.sourceBranch}}'
120
+ title: 'fix: address DRS review issues for MR !{{inputs.mr}}'
121
+ draft: '{{inputs.draft}}'
122
+ body: |
123
+ Automated DRS fix stacked on MR !{{inputs.mr}}.
124
+
125
+ Threshold: {{inputs.severity}}, minimum issues: {{inputs.minIssues}}
126
+
127
+ Review artifact: {{artifacts.reviewArtifact.path}}
128
+
129
+ <!-- drs-stack-source: gitlab:{{inputs.project}}!{{inputs.mr}} -->
130
+ <!-- drs-stack-kind: fix -->
131
+ output: changeRequest
132
+
133
+ post-fix-status:
134
+ action: post-fix-status
135
+ needs:
136
+ - create
137
+ - review
138
+ with:
139
+ platform: gitlab
140
+ project: '{{inputs.project}}'
141
+ mr: '{{inputs.mr}}'
142
+ source: change
143
+ reviewArtifact: reviewArtifact
144
+ severity: '{{inputs.severity}}'
145
+ stackedPrUrl: '{{artifacts.changeRequest.url}}'
146
+ marker: drs-fix-status
147
+ output: fixStatus
148
+
149
+ done:
150
+ control: end
@@ -1,17 +1,17 @@
1
1
  name: gitlab-mr-post-comment
2
2
  description: Post or update a GitLab merge request comment
3
3
  inputs:
4
- project: ""
5
- mr: ""
6
- body: ""
7
- marker: ""
4
+ project: ''
5
+ mr: ''
6
+ body: ''
7
+ marker: ''
8
8
  nodes:
9
9
  comment:
10
10
  action: post-comment
11
- input: "{{inputs.body}}"
11
+ input: '{{inputs.body}}'
12
12
  with:
13
13
  platform: gitlab
14
- project: "{{inputs.project}}"
15
- mr: "{{inputs.mr}}"
16
- marker: "{{inputs.marker}}"
14
+ project: '{{inputs.project}}'
15
+ mr: '{{inputs.mr}}'
16
+ marker: '{{inputs.marker}}'
17
17
  output: comment
@@ -1,17 +1,88 @@
1
1
  name: gitlab-mr-review
2
- description: Review a GitLab merge request
2
+ description: Review a GitLab merge request, optionally posting a description, DRS comments, Code Quality, and a visual HTML explainer
3
+ metadata:
4
+ kind: review
5
+ tags: [review, gitlab, merge-request]
6
+ review:
7
+ source: gitlab-mr
8
+ diff: true
9
+ issues: true
3
10
  inputs:
4
- project: ""
5
- mr: ""
11
+ project:
12
+ type: string
13
+ required: true
14
+ description: GitLab project path or id
15
+ mr:
16
+ type: number
17
+ required: true
18
+ description: Merge request IID
19
+ describe:
20
+ type: boolean
21
+ default: false
22
+ post:
23
+ type: boolean
24
+ default: false
25
+ visual:
26
+ type: boolean
27
+ default: false
28
+ fix:
29
+ type: boolean
30
+ default: false
31
+ fixMode:
32
+ type: enum
33
+ values: [stacked, internal]
34
+ default: stacked
35
+ fixSeverity:
36
+ type: enum
37
+ values: [critical, high, medium, low]
38
+ default: high
39
+ fixMinIssues:
40
+ type: number
41
+ default: 1
42
+ fixBranchPrefix:
43
+ type: string
44
+ default: drs-fix/mr-
45
+ fixCreateChangeRequest:
46
+ type: boolean
47
+ default: false
48
+ fixMaxIterations:
49
+ type: number
50
+ default: 3
51
+ allowStackedSource:
52
+ type: boolean
53
+ default: false
54
+ fixDraft:
55
+ type: boolean
56
+ default: false
57
+ visualOutputPath:
58
+ type: string
59
+ default: .drs/visual-mr-explainer.html
60
+ codeQuality:
61
+ type: boolean
62
+ default: false
63
+ codeQualityReport:
64
+ type: string
65
+ default: gl-code-quality-report.json
66
+ output: review
6
67
  nodes:
7
68
  change:
8
69
  action: change-source
9
70
  with:
10
71
  type: gitlab-mr
11
- project: "{{inputs.project}}"
12
- mr: "{{inputs.mr}}"
72
+ project: '{{inputs.project}}'
73
+ mr: '{{inputs.mr}}'
13
74
  output: change
14
75
 
76
+ describe:
77
+ action: describe
78
+ needs:
79
+ - change
80
+ if: inputs.describe == true
81
+ with:
82
+ source: change
83
+ post: true
84
+ output: description
85
+
15
86
  review:
16
87
  action: review
17
88
  needs:
@@ -19,3 +90,281 @@ nodes:
19
90
  with:
20
91
  source: change
21
92
  output: review
93
+
94
+ visual:
95
+ agent: visual/pr-explainer
96
+ needs:
97
+ - change
98
+ - review
99
+ if: inputs.visual == true
100
+ input: |
101
+ Generate a visual MR explainer HTML artifact.
102
+
103
+ Output path: {{inputs.visualOutputPath}}
104
+ Slide mode: false
105
+
106
+ Use the supplied DRS change-source context. If important file diffs are omitted or summarized, use git_diff for those files before explaining them.
107
+
108
+ DRS change-source context:
109
+ {{artifacts.change}}
110
+
111
+ DRS review result:
112
+ {{artifacts.review}}
113
+ writes: '{{inputs.visualOutputPath}}'
114
+ output: visualExplainer
115
+
116
+ post-comments:
117
+ action: post-review-comments
118
+ needs:
119
+ - review
120
+ if: inputs.post == true
121
+ with:
122
+ source: change
123
+ review: review
124
+ output: postedReview
125
+
126
+ code-quality:
127
+ action: code-quality-report
128
+ needs:
129
+ - review
130
+ if: inputs.codeQuality == true
131
+ with:
132
+ review: review
133
+ path: '{{inputs.codeQualityReport}}'
134
+ output: codeQualityReport
135
+
136
+ stack-guard:
137
+ action: stack-guard
138
+ needs:
139
+ - change
140
+ - review
141
+ if: inputs.fix == true
142
+ with:
143
+ source: change
144
+ allowStackedSource: '{{inputs.allowStackedSource}}'
145
+ output: stackGuard
146
+
147
+ fix-threshold:
148
+ action: review-threshold
149
+ needs:
150
+ - review
151
+ - stack-guard
152
+ if: artifacts.stackGuard.allowed == true
153
+ with:
154
+ review: review
155
+ severity: '{{inputs.fixSeverity}}'
156
+ minIssues: '{{inputs.fixMinIssues}}'
157
+ output: reviewThreshold
158
+
159
+ fix-branch:
160
+ action: git-branch
161
+ needs:
162
+ - fix-threshold
163
+ if: artifacts.reviewThreshold.matched == true
164
+ with:
165
+ name: '{{inputs.fixBranchPrefix}}{{inputs.mr}}'
166
+ force: true
167
+ output: fixBranch
168
+
169
+ fix-issues:
170
+ agent: task/review-issue-fixer
171
+ needs:
172
+ - fix-branch
173
+ - review
174
+ input: |
175
+ Fix actionable issues from this DRS review artifact for GitLab MR !{{inputs.mr}}.
176
+
177
+ Only fix findings at or above severity {{inputs.fixSeverity}} unless a lower-severity issue is directly required by such a fix.
178
+
179
+ Review artifact path: {{artifacts.reviewArtifact.path}}
180
+
181
+ Use the read_artifact tool with this path to get the finding manifest, then pull full details for specific findings by id. Do not assume the review JSON is in this prompt — call the tool.
182
+
183
+ Current MR change source files (read these as needed):
184
+ {{artifacts.change.files}}
185
+
186
+ Use the drs_check tool after making changes to run configured validation checks before returning.
187
+ output: fixes
188
+
189
+ fix-change:
190
+ action: change-source
191
+ needs:
192
+ - fix-issues
193
+ if: inputs.fixMode == internal
194
+ with:
195
+ type: local
196
+ staged: false
197
+ output: fixChange
198
+
199
+ stage-fixes:
200
+ action: git-add
201
+ needs:
202
+ - fix-change
203
+ if: inputs.fixMode == internal
204
+ with:
205
+ paths: '.'
206
+ output: stagedFixes
207
+
208
+ verification-change:
209
+ action: change-source
210
+ needs:
211
+ - fix-change
212
+ if: inputs.fixMode == internal
213
+ with:
214
+ type: fix-verification
215
+ source: change
216
+ fixChange: fixChange
217
+ output: verificationChange
218
+
219
+ re-review:
220
+ action: review
221
+ needs:
222
+ - verification-change
223
+ if: inputs.fixMode == internal
224
+ with:
225
+ source: verificationChange
226
+ reviewArtifact: reviewArtifact
227
+ severity: '{{inputs.fixSeverity}}'
228
+ output: reReview
229
+
230
+ verify-fix:
231
+ action: verify-fix
232
+ needs:
233
+ - re-review
234
+ - fix-change
235
+ if: inputs.fixMode == internal
236
+ with:
237
+ artifact: reviewArtifact
238
+ review: reReview
239
+ fixChange: fixChange
240
+ severity: '{{inputs.fixSeverity}}'
241
+ minIssues: '1'
242
+ output: reviewArtifact
243
+
244
+ fix-loop:
245
+ control: loop
246
+ needs:
247
+ - verify-fix
248
+ if: artifacts.verify-fix.shouldContinue == true && inputs.fixMode == internal
249
+ target: fix-issues
250
+ exit: post-fix-status-internal
251
+ maxIterations: '{{inputs.fixMaxIterations}}'
252
+ onMaxIterations: exit
253
+
254
+ post-fix-status-internal:
255
+ action: post-fix-status
256
+ needs:
257
+ - verify-fix
258
+ if: inputs.fixMode == internal
259
+ with:
260
+ platform: gitlab
261
+ project: '{{inputs.project}}'
262
+ mr: '{{inputs.mr}}'
263
+ source: change
264
+ reviewArtifact: reviewArtifact
265
+ fixReview: reReview
266
+ fixChange: fixChange
267
+ severity: '{{inputs.fixSeverity}}'
268
+ marker: drs-fix-status
269
+ output: fixStatus
270
+
271
+ commit-internal-fix:
272
+ action: git-commit
273
+ needs:
274
+ - post-fix-status-internal
275
+ if: artifacts.verify-fix.fixFiles > 0
276
+ with:
277
+ message: 'fix: address DRS review issues for MR !{{inputs.mr}}'
278
+ paths: '.'
279
+ output: internalFixCommit
280
+
281
+ push-internal-fix:
282
+ action: git-push
283
+ needs:
284
+ - commit-internal-fix
285
+ with:
286
+ branch: HEAD
287
+ remoteBranch: '{{artifacts.change.context.pullRequest.sourceBranch}}'
288
+ setUpstream: false
289
+ output: internalFixPush
290
+
291
+ fix-diff:
292
+ action: has-diff
293
+ needs:
294
+ - fix-issues
295
+ if: inputs.fixMode != internal
296
+ output: fixDiff
297
+
298
+ fix-commit:
299
+ action: git-commit
300
+ needs:
301
+ - fix-diff
302
+ if: '{{artifacts.fixDiff.changed}} == true && {{inputs.fixCreateChangeRequest}} == true && {{inputs.fixMode}} != internal'
303
+ with:
304
+ message: 'fix: address DRS review issues for MR !{{inputs.mr}}'
305
+ paths: '.'
306
+ output: fixCommit
307
+
308
+ fix-push:
309
+ action: git-push
310
+ needs:
311
+ - fix-commit
312
+ with:
313
+ branch: '{{inputs.fixBranchPrefix}}{{inputs.mr}}'
314
+ output: fixPush
315
+
316
+ create-fix-mr:
317
+ action: create-change-request
318
+ needs:
319
+ - fix-push
320
+ with:
321
+ platform: gitlab
322
+ project: '{{inputs.project}}'
323
+ sourceBranch: '{{inputs.fixBranchPrefix}}{{inputs.mr}}'
324
+ targetBranch: '{{artifacts.change.context.pullRequest.sourceBranch}}'
325
+ title: 'fix: address DRS review issues for MR !{{inputs.mr}}'
326
+ draft: '{{inputs.fixDraft}}'
327
+ body: |
328
+ Automated DRS fix stacked on MR !{{inputs.mr}} from the main gitlab-mr-review workflow.
329
+
330
+ Threshold: {{inputs.fixSeverity}}, minimum issues: {{inputs.fixMinIssues}}
331
+ Review artifact: {{artifacts.reviewArtifact.path}}
332
+
333
+ <!-- drs-stack-source: gitlab:{{inputs.project}}!{{inputs.mr}} -->
334
+ <!-- drs-stack-kind: fix -->
335
+ output: changeRequest
336
+
337
+ notify-fix-mr:
338
+ action: post-comment
339
+ needs:
340
+ - create-fix-mr
341
+ with:
342
+ platform: gitlab
343
+ project: '{{inputs.project}}'
344
+ mr: '{{inputs.mr}}'
345
+ marker: drs-stacked-fix-notification
346
+ input: |
347
+ 🔧 DRS created a stacked fix MR: {{artifacts.changeRequest.url}}
348
+
349
+ The fix addresses {{inputs.fixSeverity}}-priority review findings from this MR's review run.
350
+
351
+ <!-- drs-stacked-fix-notification -->
352
+
353
+ post-fix-status-stacked:
354
+ action: post-fix-status
355
+ needs:
356
+ - create-fix-mr
357
+ - review
358
+ with:
359
+ platform: gitlab
360
+ project: '{{inputs.project}}'
361
+ mr: '{{inputs.mr}}'
362
+ source: change
363
+ reviewArtifact: reviewArtifact
364
+ severity: '{{inputs.fixSeverity}}'
365
+ stackedPrUrl: '{{artifacts.changeRequest.url}}'
366
+ marker: drs-fix-status
367
+ output: fixStatus
368
+
369
+ done:
370
+ control: end
@@ -1,16 +1,16 @@
1
1
  name: gitlab-mr-show-changes
2
2
  description: Show the review context for a GitLab merge request
3
3
  inputs:
4
- project: ""
5
- mr: ""
6
- file: ""
4
+ project: ''
5
+ mr: ''
6
+ file: ''
7
7
  nodes:
8
8
  change:
9
9
  action: change-source
10
10
  with:
11
11
  type: gitlab-mr
12
- project: "{{inputs.project}}"
13
- mr: "{{inputs.mr}}"
12
+ project: '{{inputs.project}}'
13
+ mr: '{{inputs.mr}}'
14
14
  output: change
15
15
 
16
16
  context:
@@ -19,5 +19,5 @@ nodes:
19
19
  - change
20
20
  with:
21
21
  source: change
22
- file: "{{inputs.file}}"
22
+ file: '{{inputs.file}}'
23
23
  output: reviewContext
@@ -0,0 +1,100 @@
1
+ name: gitlab-mr-update-agents-md-stacked
2
+ description: Update agent guidance for a GitLab MR and open a stacked MR when warranted
3
+ inputs:
4
+ project: ''
5
+ mr: ''
6
+ paths: 'AGENTS.md,CLAUDE.md,.github/copilot-instructions.md'
7
+ branchPrefix: 'drs-guidance/mr-'
8
+ allowStackedSource: 'false'
9
+ draft: 'false'
10
+ output: changeRequest
11
+ nodes:
12
+ change:
13
+ action: change-source
14
+ with:
15
+ type: gitlab-mr
16
+ project: '{{inputs.project}}'
17
+ mr: '{{inputs.mr}}'
18
+ output: change
19
+
20
+ guard:
21
+ action: stack-guard
22
+ needs:
23
+ - change
24
+ with:
25
+ source: change
26
+ allowStackedSource: '{{inputs.allowStackedSource}}'
27
+ output: stackGuard
28
+
29
+ branch:
30
+ action: git-branch
31
+ needs:
32
+ - guard
33
+ if: '{{artifacts.stackGuard.allowed}} == true'
34
+ with:
35
+ name: '{{inputs.branchPrefix}}{{inputs.mr}}'
36
+ force: true
37
+ output: branch
38
+
39
+ update-guidance:
40
+ agent: task/agents-md-updater
41
+ needs:
42
+ - change
43
+ - branch
44
+ input: |
45
+ Decide whether this GitLab MR warrants an update to repository coding-agent guidance.
46
+
47
+ Guidance paths to consider: {{inputs.paths}}
48
+
49
+ If no durable guidance update is warranted, leave files unchanged and say so.
50
+
51
+ GitLab MR change source:
52
+ {{artifacts.change}}
53
+ output: guidance
54
+
55
+ diff:
56
+ action: has-diff
57
+ needs:
58
+ - update-guidance
59
+ with:
60
+ paths: '{{inputs.paths}}'
61
+ output: guidanceDiff
62
+
63
+ commit:
64
+ action: git-commit
65
+ needs:
66
+ - diff
67
+ if: '{{artifacts.guidanceDiff.changed}} == true'
68
+ with:
69
+ message: 'docs: update agent guidance for MR !{{inputs.mr}}'
70
+ paths: '{{inputs.paths}}'
71
+ output: commit
72
+
73
+ push:
74
+ action: git-push
75
+ needs:
76
+ - commit
77
+ with:
78
+ branch: '{{inputs.branchPrefix}}{{inputs.mr}}'
79
+ output: push
80
+
81
+ create:
82
+ action: create-change-request
83
+ needs:
84
+ - push
85
+ with:
86
+ platform: gitlab
87
+ project: '{{inputs.project}}'
88
+ sourceBranch: '{{inputs.branchPrefix}}{{inputs.mr}}'
89
+ targetBranch: '{{artifacts.change.context.pullRequest.sourceBranch}}'
90
+ title: 'docs: update agent guidance for MR !{{inputs.mr}}'
91
+ draft: '{{inputs.draft}}'
92
+ body: |
93
+ Automated DRS guidance update stacked on MR !{{inputs.mr}}.
94
+
95
+ <!-- drs-stack-source: gitlab:{{inputs.project}}!{{inputs.mr}} -->
96
+ <!-- drs-stack-kind: guidance -->
97
+ output: changeRequest
98
+
99
+ done:
100
+ control: end