@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,3 +1,4 @@
1
+ import { parseAddedLinesFromPatch } from './diff-lines.js';
1
2
  const DEFAULT_COMPRESSION_OPTIONS = {
2
3
  enabled: true,
3
4
  maxTokens: 8000,
@@ -5,6 +6,7 @@ const DEFAULT_COMPRESSION_OPTIONS = {
5
6
  softBufferTokens: 1500,
6
7
  hardBufferTokens: 1000,
7
8
  tokenEstimateDivisor: 4,
9
+ summaryThresholdMultiplier: 3,
8
10
  };
9
11
  function normalizeOptions(options) {
10
12
  return {
@@ -19,6 +21,38 @@ function estimateTokens(text, divisor) {
19
21
  function buildDiffEntry(file) {
20
22
  return `### ${file.filename}\n\n\`\`\`diff\n${file.patch}\n\`\`\``;
21
23
  }
24
+ function formatLineRanges(lines) {
25
+ const sorted = [...lines].sort((a, b) => a - b);
26
+ const ranges = [];
27
+ let start;
28
+ let previous;
29
+ for (const line of sorted) {
30
+ if (start === undefined || previous === undefined) {
31
+ start = line;
32
+ previous = line;
33
+ continue;
34
+ }
35
+ if (line === previous + 1) {
36
+ previous = line;
37
+ continue;
38
+ }
39
+ ranges.push(start === previous ? `${start}` : `${start}-${previous}`);
40
+ start = line;
41
+ previous = line;
42
+ }
43
+ if (start !== undefined && previous !== undefined) {
44
+ ranges.push(start === previous ? `${start}` : `${start}-${previous}`);
45
+ }
46
+ return ranges;
47
+ }
48
+ function buildOmittedFileInfo(file, estimatedTokens) {
49
+ return {
50
+ filename: file.filename,
51
+ ...computePatchStats(file.patch ?? ''),
52
+ estimatedTokens,
53
+ addedLineRanges: formatLineRanges(parseAddedLinesFromPatch(file.patch ?? '')),
54
+ };
55
+ }
22
56
  /** Count additions, deletions, and detect new-file status from a unified diff patch */
23
57
  export function computePatchStats(patch) {
24
58
  let additions = 0;
@@ -103,7 +137,14 @@ export function compressFilesWithDiffs(files, options) {
103
137
  const resolvedOptions = normalizeOptions(options);
104
138
  if (!resolvedOptions.enabled) {
105
139
  return {
140
+ mode: 'full',
106
141
  files,
142
+ stats: {
143
+ changedFiles: files.length,
144
+ filesWithDiffs: files.filter((file) => file.patch).length,
145
+ inlineFiles: files.filter((file) => file.patch).length,
146
+ estimatedTokens: 0,
147
+ },
107
148
  omitted: {
108
149
  deletionsOnly: [],
109
150
  dueToBudget: [],
@@ -129,7 +170,14 @@ export function compressFilesWithDiffs(files, options) {
129
170
  }
130
171
  if (filesWithDiffs.length === 0) {
131
172
  return {
173
+ mode: 'full',
132
174
  files,
175
+ stats: {
176
+ changedFiles: files.length,
177
+ filesWithDiffs: 0,
178
+ inlineFiles: 0,
179
+ estimatedTokens: 0,
180
+ },
133
181
  omitted: {
134
182
  deletionsOnly,
135
183
  dueToBudget: [],
@@ -148,10 +196,36 @@ export function compressFilesWithDiffs(files, options) {
148
196
  const totalTokens = entries.reduce((sum, entry) => sum + entry.tokens, 0);
149
197
  const softLimit = resolvedOptions.maxTokens - resolvedOptions.softBufferTokens;
150
198
  const hardLimit = resolvedOptions.maxTokens - resolvedOptions.hardBufferTokens;
199
+ const summaryThreshold = hardLimit * resolvedOptions.summaryThresholdMultiplier;
200
+ if (totalTokens > summaryThreshold) {
201
+ const omitted = entries.map((entry) => buildOmittedFileInfo(entry.file, entry.tokens));
202
+ return {
203
+ mode: 'summary',
204
+ files: files.map((file) => (file.patch ? { filename: file.filename } : file)),
205
+ stats: {
206
+ changedFiles: files.length,
207
+ filesWithDiffs: filesWithDiffs.length,
208
+ inlineFiles: 0,
209
+ estimatedTokens: totalTokens,
210
+ },
211
+ omitted: {
212
+ deletionsOnly,
213
+ dueToBudget: omitted,
214
+ generated: [],
215
+ },
216
+ };
217
+ }
151
218
  if (totalTokens <= softLimit) {
152
219
  const patchLookup = new Map(filesWithDiffs.map((file) => [file.filename, file.patch]));
153
220
  return {
221
+ mode: 'full',
154
222
  files: files.map((file) => file.patch ? { filename: file.filename, patch: patchLookup.get(file.filename) } : file),
223
+ stats: {
224
+ changedFiles: files.length,
225
+ filesWithDiffs: filesWithDiffs.length,
226
+ inlineFiles: filesWithDiffs.length,
227
+ estimatedTokens: totalTokens,
228
+ },
155
229
  omitted: {
156
230
  deletionsOnly,
157
231
  dueToBudget: [],
@@ -168,21 +242,11 @@ export function compressFilesWithDiffs(files, options) {
168
242
  let currentTokens = 0;
169
243
  for (const entry of sorted) {
170
244
  if (currentTokens > hardLimit) {
171
- const stats = computePatchStats(entry.file.patch ?? '');
172
- budgetOmitted.push({
173
- filename: entry.file.filename,
174
- ...stats,
175
- estimatedTokens: entry.tokens,
176
- });
245
+ budgetOmitted.push(buildOmittedFileInfo(entry.file, entry.tokens));
177
246
  continue;
178
247
  }
179
248
  if (currentTokens + entry.tokens > softLimit) {
180
- const stats = computePatchStats(entry.file.patch ?? '');
181
- budgetOmitted.push({
182
- filename: entry.file.filename,
183
- ...stats,
184
- estimatedTokens: entry.tokens,
185
- });
249
+ budgetOmitted.push(buildOmittedFileInfo(entry.file, entry.tokens));
186
250
  continue;
187
251
  }
188
252
  kept.push(entry.file);
@@ -196,7 +260,14 @@ export function compressFilesWithDiffs(files, options) {
196
260
  return keptPatch ? { filename: file.filename, patch: keptPatch } : { filename: file.filename };
197
261
  });
198
262
  return {
263
+ mode: 'partial',
199
264
  files: keptFiles,
265
+ stats: {
266
+ changedFiles: files.length,
267
+ filesWithDiffs: filesWithDiffs.length,
268
+ inlineFiles: kept.length,
269
+ estimatedTokens: totalTokens,
270
+ },
200
271
  omitted: {
201
272
  deletionsOnly,
202
273
  dueToBudget: budgetOmitted,
@@ -241,6 +312,20 @@ export function prepareDiffsForAgent(files, options) {
241
312
  }
242
313
  export function formatCompressionSummary(result) {
243
314
  const sections = [];
315
+ if (result.mode === 'summary') {
316
+ sections.push([
317
+ '- Adaptive diff context: large diff summarized only; no file patches are inline.',
318
+ `- Changed files: ${result.stats.changedFiles}; files with diffs: ${result.stats.filesWithDiffs}; estimated diff tokens: ~${result.stats.estimatedTokens}.`,
319
+ '- Use the git_diff tool for each file you need to inspect before making file-specific claims.',
320
+ ].join('\n'));
321
+ }
322
+ else if (result.mode === 'partial') {
323
+ sections.push([
324
+ '- Adaptive diff context: partial inline diff; some patches were omitted to stay within the token budget.',
325
+ `- Inline patches: ${result.stats.inlineFiles}/${result.stats.filesWithDiffs}; estimated total diff tokens: ~${result.stats.estimatedTokens}.`,
326
+ '- Use the git_diff tool for omitted files before reviewing or describing their specific changes.',
327
+ ].join('\n'));
328
+ }
244
329
  if (result.omitted.generated.length > 0) {
245
330
  sections.push(`- Auto-excluded generated files (machine-generated, not reviewed):\n${result.omitted.generated
246
331
  .map((name) => ` - ${name}`)
@@ -254,11 +339,14 @@ export function formatCompressionSummary(result) {
254
339
  if (result.omitted.dueToBudget.length > 0) {
255
340
  // Sort by additions descending so agents see highest-value files first
256
341
  const sorted = [...result.omitted.dueToBudget].sort((a, b) => b.additions - a.additions);
257
- sections.push(`- Omitted due to token budget (use Read/Grep tools to inspect, listed by review priority):\n${sorted
342
+ sections.push(`- Omitted due to token budget (use git_diff first, then Read/Grep for surrounding context; listed by review priority):\n${sorted
258
343
  .map((info) => {
259
344
  const parts = [`+${info.additions}`, `-${info.deletions}`];
260
345
  if (info.isNew)
261
346
  parts.push('new file');
347
+ if (info.addedLineRanges.length > 0) {
348
+ parts.push(`added lines ${info.addedLineRanges.join(', ')}`);
349
+ }
262
350
  parts.push(`~${info.estimatedTokens} tokens`);
263
351
  return ` - ${info.filename} (${parts.join(', ')})`;
264
352
  })
@@ -1 +1 @@
1
- {"version":3,"file":"context-compression.js","sourceRoot":"","sources":["../../src/lib/context-compression.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-compression.js","sourceRoot":"","sources":["../../src/lib/context-compression.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { DRSConfig } from './config.js';
2
+ import type { ReviewVerificationContext } from './review-orchestrator.js';
2
3
  export interface AgentContext {
3
4
  /**
4
5
  * Source of the agent definition
@@ -26,5 +27,5 @@ export declare function loadAgentContext(agentId: string, projectRoot?: string,
26
27
  /**
27
28
  * Build review prompt with global and agent-specific context
28
29
  */
29
- export declare function buildReviewPrompt(agentId: string, basePrompt: string, reviewLabel: string, changedFiles: string[], projectRoot?: string, config?: DRSConfig, describeSummary?: string): string;
30
+ export declare function buildReviewPrompt(agentId: string, basePrompt: string, reviewLabel: string, changedFiles: string[], projectRoot?: string, config?: DRSConfig, describeSummary?: string, verificationContext?: ReviewVerificationContext): string;
30
31
  //# sourceMappingURL=context-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-loader.d.ts","sourceRoot":"","sources":["../../src/lib/context-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAE/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAQpF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAsB,EACnC,MAAM,CAAC,EAAE,SAAS,GACjB,YAAY,CA2Bd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,GAAE,MAAsB,EACnC,MAAM,CAAC,EAAE,SAAS,EAClB,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,CA8CR"}
1
+ {"version":3,"file":"context-loader.d.ts","sourceRoot":"","sources":["../../src/lib/context-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAW1E,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAE/B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAQpF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAsB,EACnC,MAAM,CAAC,EAAE,SAAS,GACjB,YAAY,CA2Bd;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,GAAE,MAAsB,EACnC,MAAM,CAAC,EAAE,SAAS,EAClB,eAAe,CAAC,EAAE,MAAM,EACxB,mBAAmB,CAAC,EAAE,yBAAyB,GAC9C,MAAM,CAkDR"}
@@ -2,6 +2,18 @@ import { existsSync, readFileSync } from 'fs';
2
2
  import { join } from 'path';
3
3
  import { requireAgentId } from './agent-id.js';
4
4
  import { resolveAgentPaths } from '../runtime/path-config.js';
5
+ function severityRankValue(severity) {
6
+ const normalized = severity.trim().toUpperCase();
7
+ if (normalized === 'CRITICAL')
8
+ return 4;
9
+ if (normalized === 'HIGH')
10
+ return 3;
11
+ if (normalized === 'MEDIUM')
12
+ return 2;
13
+ if (normalized === 'LOW')
14
+ return 1;
15
+ return 0;
16
+ }
5
17
  /**
6
18
  * Load global project context from .drs/context.md
7
19
  */
@@ -43,7 +55,7 @@ export function loadAgentContext(agentId, projectRoot = process.cwd(), config) {
43
55
  /**
44
56
  * Build review prompt with global and agent-specific context
45
57
  */
46
- export function buildReviewPrompt(agentId, basePrompt, reviewLabel, changedFiles, projectRoot = process.cwd(), config, describeSummary) {
58
+ export function buildReviewPrompt(agentId, basePrompt, reviewLabel, changedFiles, projectRoot = process.cwd(), config, describeSummary, verificationContext) {
47
59
  const globalContext = loadGlobalContext(projectRoot);
48
60
  const agentContext = loadAgentContext(agentId, projectRoot, config);
49
61
  let prompt = '';
@@ -71,6 +83,9 @@ export function buildReviewPrompt(agentId, basePrompt, reviewLabel, changedFiles
71
83
  if (describeSummary) {
72
84
  prompt += `# Change Summary\n\n${describeSummary}\n\n`;
73
85
  }
86
+ if (verificationContext) {
87
+ prompt += formatVerificationContext(verificationContext);
88
+ }
74
89
  // 2. Agent-specific context (if available)
75
90
  if (agentContext.agentContext) {
76
91
  const agentLabel = agentId.split('/').pop() ?? agentId;
@@ -81,4 +96,58 @@ export function buildReviewPrompt(agentId, basePrompt, reviewLabel, changedFiles
81
96
  prompt += basePrompt;
82
97
  return prompt;
83
98
  }
99
+ function formatVerificationContext(context) {
100
+ const severityText = context.severity ? ` at or above ${context.severity}` : '';
101
+ const thresholdRank = context.severity ? severityRankValue(context.severity) : 0;
102
+ const findingsToVerify = context.artifact.findings.filter((f) => !thresholdRank || severityRankValue(f.issue.severity) >= thresholdRank);
103
+ const findingIds = findingsToVerify.map((f) => f.id).join(', ');
104
+ const manifest = findingsToVerify
105
+ .map((f) => `- ${f.id} | ${f.issue.severity} | ${f.issue.file}${f.issue.line ? `:${f.issue.line}` : ''} | ${f.disposition} | ${f.issue.title}`)
106
+ .join('\n');
107
+ let prompt = `# Fix Verification Context
108
+
109
+ This is a verification review over the full post-fix diff. Verify the existing review findings${severityText} before reporting anything else.
110
+
111
+ You MUST output a verification finding for EACH of these IDs: ${findingIds}
112
+
113
+ Missing verdicts will be treated as still_open. Do not skip any finding.
114
+
115
+ For each finding, decide whether it is:
116
+ - resolved: the original issue no longer exists in the current code
117
+ - still_open: the same issue still exists
118
+ - partial: the fix attempted the issue but is incomplete or moved the problem
119
+
120
+ Do not mark a finding resolved just because it is absent from a narrower local fix diff. Use the full diff and surrounding code as needed.
121
+
122
+ ## Findings to verify
123
+
124
+ ${manifest}
125
+
126
+ `;
127
+ if (context.artifactPath) {
128
+ prompt += `Use the read_artifact tool with artifact path "${context.artifactPath}" and a specific findingId to pull full issue details (problem, solution, verification rationale) for any finding you need to examine more closely.
129
+
130
+ `;
131
+ }
132
+ prompt += `In your review output JSON, include this additional top-level field:
133
+ {
134
+ "verification": {
135
+ "findings": [
136
+ {
137
+ "id": "${findingsToVerify[0]?.id ?? 'F001'}",
138
+ "disposition": "resolved",
139
+ "rationale": "short explanation",
140
+ "issue": null
141
+ }
142
+ ]
143
+ }
144
+ }
145
+
146
+ The allowed disposition values are: resolved, still_open, partial.
147
+
148
+ The normal top-level "issues" array should contain only new regressions introduced by the fix, not the original findings being verified.
149
+
150
+ `;
151
+ return prompt;
152
+ }
84
153
  //# sourceMappingURL=context-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-loader.js","sourceRoot":"","sources":["../../src/lib/context-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-loader.js","sourceRoot":"","sources":["../../src/lib/context-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,SAAS,iBAAiB,CAAC,QAAgB;IACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,IAAI,UAAU,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACtC,IAAI,UAAU,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC;AACX,CAAC;AAqBD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,cAAsB,OAAO,CAAC,GAAG,EAAE;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IAE5D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,cAAsB,OAAO,CAAC,GAAG,EAAE,EACnC,MAAkB;IAElB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAEnD,gCAAgC;IAChC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,eAAe,EAAE,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC;SACjD,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,OAAO;QACL,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,UAAkB,EAClB,WAAmB,EACnB,YAAsB,EACtB,cAAsB,OAAO,CAAC,GAAG,EAAE,EACnC,MAAkB,EAClB,eAAwB,EACxB,mBAA+C;IAE/C,MAAM,aAAa,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAEpE,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,gEAAgE;IAChE,IAAI,YAAY,CAAC,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;QACvE,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC;QAEtC,mBAAmB;QACnB,MAAM,IAAI,uCAAuC,WAAW,OAAO,CAAC;QACpE,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sDAAsD;IAEtD,2CAA2C;IAC3C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1F,IAAI,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,cAAc,MAAM,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,wBAAwB,cAAc,MAAM,CAAC;QACzD,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,uBAAuB,eAAe,MAAM,CAAC;IACzD,CAAC;IAED,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,IAAI,yBAAyB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,CAAC;IAED,2CAA2C;IAC3C,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC;QACvD,MAAM,IAAI,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC;QAC5F,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,MAAM,CAAC;IAC/C,CAAC;IAED,6BAA6B;IAC7B,MAAM,IAAI,UAAU,CAAC;IAErB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAkC;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChF,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,aAAa,CAC9E,CAAC;IACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,gBAAgB;SAC9B,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CACrI;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,IAAI,MAAM,GAAG;;gGAEiF,YAAY;;gEAE5C,UAAU;;;;;;;;;;;;;EAaxE,QAAQ;;CAET,CAAC;IAEA,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,kDAAkD,OAAO,CAAC,YAAY;;CAEnF,CAAC;IACA,CAAC;IAED,MAAM,IAAI;;;;;iBAKK,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,MAAM;;;;;;;;;;;;;CAajD,CAAC;IAEA,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"describe-core.d.ts","sourceRoot":"","sources":["../../src/lib/describe-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EAAE,EACrB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAkER"}
1
+ {"version":3,"file":"describe-core.d.ts","sourceRoot":"","sources":["../../src/lib/describe-core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,YAAY,EAAE,EACrB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAmER"}
@@ -65,7 +65,8 @@ ${compressionSummary ? `${compressionSummary}\n\n` : ''}${outputSchema}
65
65
  Instructions:
66
66
  1. Focus on new or modified code (lines starting with + in diffs).
67
67
  2. Summarize intent and impact. Avoid code review feedback.
68
- 3. Use the Read tool for additional context if needed.
69
- 4. Follow the output requirements and schema above exactly.`;
68
+ 3. If diff content is omitted or summarized, use git_diff for the relevant files before describing their specific changes.
69
+ 4. Use the Read tool for additional context if needed.
70
+ 5. Follow the output requirements and schema above exactly.`;
70
71
  }
71
72
  //# sourceMappingURL=describe-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"describe-core.js","sourceRoot":"","sources":["../../src/lib/describe-core.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,KAAqB,EACrB,kBAA2B,EAC3B,cAAuB;IAEvB,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,cAAc,EAAE,IAAI,EAAE,CAAC;IAC9C,MAAM,cAAc,GAAG,cAAc;QACnC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,CAAC,CAAC,GAAG,cAAc,MAAM;YACzB,CAAC,CAAC,wBAAwB,cAAc,MAAM;QAChD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,iBAAiB,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7F,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCrB,CAAC;IAED,OAAO,GAAG,cAAc,kDAAkD,KAAK;;;EAG/E,QAAQ;;EAER,QAAQ,CAAC,CAAC,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE;;EAErD,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY;;;;;;4DAMV,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"describe-core.js","sourceRoot":"","sources":["../../src/lib/describe-core.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAa,EACb,KAAqB,EACrB,kBAA2B,EAC3B,cAAuB;IAEvB,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,cAAc,EAAE,IAAI,EAAE,CAAC;IAC9C,MAAM,cAAc,GAAG,cAAc;QACnC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,CAAC,CAAC,GAAG,cAAc,MAAM;YACzB,CAAC,CAAC,wBAAwB,cAAc,MAAM;QAChD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,iBAAiB,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7F,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCrB,CAAC;IAED,OAAO,GAAG,cAAc,kDAAkD,KAAK;;;EAG/E,QAAQ;;EAER,QAAQ,CAAC,CAAC,CAAC,sBAAsB,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE;;EAErD,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY;;;;;;;4DAOV,CAAC;AAC7D,CAAC"}
@@ -1,9 +1,18 @@
1
1
  /**
2
2
  * Parse a unified diff patch and return line numbers in the new file that can receive comments.
3
3
  */
4
+ export interface DiffLineInfo {
5
+ /** New-file lines that were added by the patch. */
6
+ addedLines: Set<number>;
7
+ /** New-file lines present in diff hunks and commentable by platforms. */
8
+ commentableLines: Set<number>;
9
+ }
10
+ export declare function parseDiffLineInfo(patch: string): DiffLineInfo;
4
11
  export declare function parseValidLinesFromPatch(patch: string): Set<number>;
12
+ export declare function parseAddedLinesFromPatch(patch: string): Set<number>;
5
13
  /**
6
14
  * Alias for GitLab call sites, where API responses call the same unified patch text a diff.
7
15
  */
8
16
  export declare const parseValidLinesFromDiff: typeof parseValidLinesFromPatch;
17
+ export declare const parseAddedLinesFromDiff: typeof parseAddedLinesFromPatch;
9
18
  //# sourceMappingURL=diff-lines.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-lines.d.ts","sourceRoot":"","sources":["../../src/lib/diff-lines.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAyBnE;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,iCAA2B,CAAC"}
1
+ {"version":3,"file":"diff-lines.d.ts","sourceRoot":"","sources":["../../src/lib/diff-lines.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,yEAAyE;IACzE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CA6B7D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAEnE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAEnE;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,iCAA2B,CAAC;AAChE,eAAO,MAAM,uBAAuB,iCAA2B,CAAC"}
@@ -1,32 +1,40 @@
1
- /**
2
- * Parse a unified diff patch and return line numbers in the new file that can receive comments.
3
- */
4
- export function parseValidLinesFromPatch(patch) {
5
- const validLines = new Set();
1
+ export function parseDiffLineInfo(patch) {
2
+ const addedLines = new Set();
3
+ const commentableLines = new Set();
6
4
  const lines = patch.split('\n');
7
5
  let currentLine = 0;
6
+ let inHunk = false;
8
7
  for (const line of lines) {
9
8
  const hunkMatch = line.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
10
9
  if (hunkMatch) {
11
10
  currentLine = parseInt(hunkMatch[1], 10);
11
+ inHunk = true;
12
12
  continue;
13
13
  }
14
- if (!line)
14
+ if (!inHunk || !line)
15
15
  continue;
16
16
  const prefix = line[0];
17
17
  if (prefix === '+') {
18
- validLines.add(currentLine);
18
+ addedLines.add(currentLine);
19
+ commentableLines.add(currentLine);
19
20
  currentLine++;
20
21
  }
21
22
  else if (prefix === ' ') {
22
- validLines.add(currentLine);
23
+ commentableLines.add(currentLine);
23
24
  currentLine++;
24
25
  }
25
26
  }
26
- return validLines;
27
+ return { addedLines, commentableLines };
28
+ }
29
+ export function parseValidLinesFromPatch(patch) {
30
+ return parseDiffLineInfo(patch).commentableLines;
31
+ }
32
+ export function parseAddedLinesFromPatch(patch) {
33
+ return parseDiffLineInfo(patch).addedLines;
27
34
  }
28
35
  /**
29
36
  * Alias for GitLab call sites, where API responses call the same unified patch text a diff.
30
37
  */
31
38
  export const parseValidLinesFromDiff = parseValidLinesFromPatch;
39
+ export const parseAddedLinesFromDiff = parseAddedLinesFromPatch;
32
40
  //# sourceMappingURL=diff-lines.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff-lines.js","sourceRoot":"","sources":["../../src/lib/diff-lines.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACtE,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5B,WAAW,EAAE,CAAC;QAChB,CAAC;aAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5B,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"diff-lines.js","sourceRoot":"","sources":["../../src/lib/diff-lines.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACtE,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM,GAAG,IAAI,CAAC;YACd,SAAS;QACX,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI;YAAE,SAAS;QAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACnB,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5B,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAClC,WAAW,EAAE,CAAC;QAChB,CAAC;aAAM,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAClC,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,gBAAgB,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,uBAAuB,GAAG,wBAAwB,CAAC"}
package/dist/lib/exit.js CHANGED
@@ -5,9 +5,9 @@
5
5
  * In tests the handler can be replaced with `setExitHandler()` to capture
6
6
  * the exit code without terminating the process.
7
7
  */
8
- let currentHandler = ((code) => {
8
+ let currentHandler = (code) => {
9
9
  process.exit(code);
10
- });
10
+ };
11
11
  /**
12
12
  * Exit the process (or trigger the installed handler in tests).
13
13
  */
@@ -46,8 +46,8 @@ export class ExitError extends Error {
46
46
  * Returns a restore function.
47
47
  */
48
48
  export function installTestExitHandler() {
49
- return setExitHandler(((code) => {
49
+ return setExitHandler((code) => {
50
50
  throw new ExitError(code);
51
- }));
51
+ });
52
52
  }
53
53
  //# sourceMappingURL=exit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/lib/exit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,IAAI,cAAc,GAAgB,CAAC,CAAC,IAAY,EAAE,EAAE;IAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAgB,CAAC;AAElB;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoB;IACjD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAChC,cAAc,GAAG,OAAO,CAAC;IACzB,OAAO,GAAG,EAAE;QACV,cAAc,GAAG,QAAQ,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IACN;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;QADL,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,cAAc,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE;QACtC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAgB,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"exit.js","sourceRoot":"","sources":["../../src/lib/exit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,IAAI,cAAc,GAAgB,CAAC,IAAY,EAAE,EAAE;IACjD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,OAAoB;IACjD,MAAM,QAAQ,GAAG,cAAc,CAAC;IAChC,cAAc,GAAG,OAAO,CAAC;IACzB,OAAO,GAAG,EAAE;QACV,cAAc,GAAG,QAAQ,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IACN;IAA5B,YAA4B,IAAY;QACtC,KAAK,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;QADL,SAAI,GAAJ,IAAI,CAAQ;QAEtC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,cAAc,CAAC,CAAC,IAAY,EAAE,EAAE;QACrC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface ArtifactOutputPointer {
2
+ outputType: 'artifact_output';
3
+ outputPath: string;
4
+ }
5
+ export declare function extractHtmlDocument(content: string): string;
6
+ export declare function validateHtmlArtifact(content: string): void;
7
+ export declare function parseArtifactOutputPointer(content: string): ArtifactOutputPointer | undefined;
8
+ export declare function writeArtifactOutput({ outputPath, content, workingDir, }: {
9
+ outputPath: string;
10
+ content: string;
11
+ workingDir?: string;
12
+ }): Promise<ArtifactOutputPointer>;
13
+ export declare function readArtifactOutputPointer(workingDir: string, pointer: ArtifactOutputPointer): Promise<string>;
14
+ //# sourceMappingURL=html-artifact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-artifact.d.ts","sourceRoot":"","sources":["../../src/lib/html-artifact.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa3D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAW1D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAc7F;AAED,wBAAsB,mBAAmB,CAAC,EACxC,UAAU,EACV,OAAO,EACP,UAAU,GACX,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAQjC;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAKjB"}
@@ -0,0 +1,59 @@
1
+ import { mkdir, readFile, writeFile } from 'fs/promises';
2
+ import { dirname } from 'path';
3
+ import { resolveWithinWorkingDir } from './path-utils.js';
4
+ export function extractHtmlDocument(content) {
5
+ const doctypeMatch = /<!DOCTYPE\s+html\s*>/i.exec(content);
6
+ if (!doctypeMatch) {
7
+ throw new Error('HTML artifact output must contain <!DOCTYPE html>.');
8
+ }
9
+ const html = content.slice(doctypeMatch.index).trimStart();
10
+ const closingHtmlMatch = /<\/html\s*>/i.exec(html);
11
+ if (!closingHtmlMatch) {
12
+ throw new Error('HTML artifact output must contain a closing </html> tag.');
13
+ }
14
+ return html.slice(0, closingHtmlMatch.index + closingHtmlMatch[0].length);
15
+ }
16
+ export function validateHtmlArtifact(content) {
17
+ const trimmed = content.trimStart();
18
+ if (!trimmed.startsWith('<!DOCTYPE html>')) {
19
+ throw new Error('HTML artifact must start with <!DOCTYPE html>.');
20
+ }
21
+ if (!/<\/html\s*>\s*$/i.test(trimmed)) {
22
+ throw new Error('HTML artifact must end with a closing </html> tag.');
23
+ }
24
+ if (/^```/.test(trimmed) || /```\s*$/.test(trimmed)) {
25
+ throw new Error('HTML artifact must not be wrapped in Markdown code fences.');
26
+ }
27
+ }
28
+ export function parseArtifactOutputPointer(content) {
29
+ try {
30
+ const parsed = JSON.parse(content.trim());
31
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
32
+ return undefined;
33
+ }
34
+ const record = parsed;
35
+ if (record.outputType !== 'artifact_output' || typeof record.outputPath !== 'string') {
36
+ return undefined;
37
+ }
38
+ return { outputType: 'artifact_output', outputPath: record.outputPath };
39
+ }
40
+ catch {
41
+ return undefined;
42
+ }
43
+ }
44
+ export async function writeArtifactOutput({ outputPath, content, workingDir, }) {
45
+ const html = extractHtmlDocument(content);
46
+ validateHtmlArtifact(html);
47
+ const root = workingDir ?? process.env.DRS_PROJECT_ROOT ?? process.cwd();
48
+ const resolvedPath = resolveWithinWorkingDir(root, outputPath, 'write');
49
+ await mkdir(dirname(resolvedPath), { recursive: true });
50
+ await writeFile(resolvedPath, html, 'utf-8');
51
+ return { outputType: 'artifact_output', outputPath };
52
+ }
53
+ export async function readArtifactOutputPointer(workingDir, pointer) {
54
+ const resolvedPath = resolveWithinWorkingDir(workingDir, pointer.outputPath, 'read');
55
+ const content = await readFile(resolvedPath, 'utf-8');
56
+ validateHtmlArtifact(content);
57
+ return content;
58
+ }
59
+ //# sourceMappingURL=html-artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-artifact.js","sourceRoot":"","sources":["../../src/lib/html-artifact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAO1D,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;IAC3D,MAAM,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAY,CAAC;QACrD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,MAAiC,CAAC;QACjD,IAAI,MAAM,CAAC,UAAU,KAAK,iBAAiB,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACrF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,EACxC,UAAU,EACV,OAAO,EACP,UAAU,GAKX;IACC,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC1C,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzE,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxE,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAkB,EAClB,OAA8B;IAE9B,MAAM,YAAY,GAAG,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACtD,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -42,7 +42,7 @@ export function parseReviewIssues(content, agentName = 'unknown') {
42
42
  }
43
43
  }
44
44
  }
45
- catch (e) {
45
+ catch {
46
46
  // Continue to next match
47
47
  }
48
48
  }
@@ -62,7 +62,7 @@ export function parseReviewIssues(content, agentName = 'unknown') {
62
62
  }
63
63
  }
64
64
  }
65
- catch (e) {
65
+ catch {
66
66
  // Not valid JSON, try to find JSON objects with better bracket matching
67
67
  const jsonObjects = extractJsonObjects(content);
68
68
  for (const jsonStr of jsonObjects) {
@@ -79,7 +79,7 @@ export function parseReviewIssues(content, agentName = 'unknown') {
79
79
  }
80
80
  }
81
81
  }
82
- catch (e) {
82
+ catch {
83
83
  // Continue to next object
84
84
  }
85
85
  }