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

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