@diff-review-system/drs 3.3.1 → 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 (387) 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 +26 -0
  4. package/.pi/agents/task/changelog-updater.md +29 -0
  5. package/.pi/agents/task/review-issue-fixer.md +42 -0
  6. package/.pi/agents/visual/pr-explainer.md +205 -0
  7. package/.pi/workflows/github-pr-describe.yaml +26 -0
  8. package/.pi/workflows/github-pr-fix-review-issues-stacked.yaml +148 -0
  9. package/.pi/workflows/github-pr-post-comment.yaml +19 -0
  10. package/.pi/workflows/github-pr-review-post.yaml +43 -0
  11. package/.pi/workflows/github-pr-review.yaml +364 -0
  12. package/.pi/workflows/github-pr-show-changes.yaml +25 -0
  13. package/.pi/workflows/github-pr-update-agents-md-stacked.yaml +103 -0
  14. package/.pi/workflows/github-pr-visual-explain.yaml +35 -0
  15. package/.pi/workflows/gitlab-mr-describe.yaml +24 -0
  16. package/.pi/workflows/gitlab-mr-fix-review-issues-stacked.yaml +144 -0
  17. package/.pi/workflows/gitlab-mr-post-comment.yaml +17 -0
  18. package/.pi/workflows/gitlab-mr-review.yaml +364 -0
  19. package/.pi/workflows/gitlab-mr-show-changes.yaml +23 -0
  20. package/.pi/workflows/gitlab-mr-update-agents-md-stacked.yaml +100 -0
  21. package/.pi/workflows/gitlab-mr-visual-explain.yaml +33 -0
  22. package/.pi/workflows/local-changelog-update.yaml +23 -0
  23. package/.pi/workflows/local-fix-review-issues.yaml +111 -0
  24. package/.pi/workflows/local-review.yaml +24 -0
  25. package/.pi/workflows/local-update-agents-md.yaml +24 -0
  26. package/.pi/workflows/local-visual-explain.yaml +31 -0
  27. package/.pi/workflows/release-changelog-finalize.yaml +47 -0
  28. package/.pi/workflows/tag-changelog-update.yaml +26 -0
  29. package/README.md +281 -104
  30. package/dist/ci/runner.d.ts.map +1 -1
  31. package/dist/ci/runner.js +9 -8
  32. package/dist/ci/runner.js.map +1 -1
  33. package/dist/cli/index.js +95 -325
  34. package/dist/cli/index.js.map +1 -1
  35. package/dist/cli/init.d.ts.map +1 -1
  36. package/dist/cli/init.js +25 -23
  37. package/dist/cli/init.js.map +1 -1
  38. package/dist/cli/run-agent.d.ts +26 -0
  39. package/dist/cli/run-agent.d.ts.map +1 -0
  40. package/dist/cli/run-agent.js +143 -0
  41. package/dist/cli/run-agent.js.map +1 -0
  42. package/dist/cli/workflow.d.ts +105 -0
  43. package/dist/cli/workflow.d.ts.map +1 -0
  44. package/dist/cli/workflow.js +3309 -0
  45. package/dist/cli/workflow.js.map +1 -0
  46. package/dist/github/client.d.ts +12 -0
  47. package/dist/github/client.d.ts.map +1 -1
  48. package/dist/github/client.js +27 -0
  49. package/dist/github/client.js.map +1 -1
  50. package/dist/github/platform-adapter.d.ts +6 -1
  51. package/dist/github/platform-adapter.d.ts.map +1 -1
  52. package/dist/github/platform-adapter.js +84 -8
  53. package/dist/github/platform-adapter.js.map +1 -1
  54. package/dist/gitlab/client.d.ts +11 -0
  55. package/dist/gitlab/client.d.ts.map +1 -1
  56. package/dist/gitlab/client.js +11 -0
  57. package/dist/gitlab/client.js.map +1 -1
  58. package/dist/gitlab/platform-adapter.d.ts +3 -1
  59. package/dist/gitlab/platform-adapter.d.ts.map +1 -1
  60. package/dist/gitlab/platform-adapter.js +32 -1
  61. package/dist/gitlab/platform-adapter.js.map +1 -1
  62. package/dist/lib/agent-id.d.ts +9 -0
  63. package/dist/lib/agent-id.d.ts.map +1 -0
  64. package/dist/lib/agent-id.js +32 -0
  65. package/dist/lib/agent-id.js.map +1 -0
  66. package/dist/lib/comment-formatter.d.ts +15 -1
  67. package/dist/lib/comment-formatter.d.ts.map +1 -1
  68. package/dist/lib/comment-formatter.js +53 -4
  69. package/dist/lib/comment-formatter.js.map +1 -1
  70. package/dist/lib/comment-manager.d.ts +4 -0
  71. package/dist/lib/comment-manager.d.ts.map +1 -1
  72. package/dist/lib/comment-manager.js +7 -1
  73. package/dist/lib/comment-manager.js.map +1 -1
  74. package/dist/lib/comment-poster.d.ts +2 -2
  75. package/dist/lib/comment-poster.d.ts.map +1 -1
  76. package/dist/lib/comment-poster.js +31 -4
  77. package/dist/lib/comment-poster.js.map +1 -1
  78. package/dist/lib/config.d.ts +160 -44
  79. package/dist/lib/config.d.ts.map +1 -1
  80. package/dist/lib/config.js +475 -101
  81. package/dist/lib/config.js.map +1 -1
  82. package/dist/lib/context-compression.d.ts +10 -0
  83. package/dist/lib/context-compression.d.ts.map +1 -1
  84. package/dist/lib/context-compression.js +101 -13
  85. package/dist/lib/context-compression.js.map +1 -1
  86. package/dist/lib/context-loader.d.ts +5 -4
  87. package/dist/lib/context-loader.d.ts.map +1 -1
  88. package/dist/lib/context-loader.js +79 -7
  89. package/dist/lib/context-loader.js.map +1 -1
  90. package/dist/lib/describe-core.d.ts.map +1 -1
  91. package/dist/lib/describe-core.js +3 -2
  92. package/dist/lib/describe-core.js.map +1 -1
  93. package/dist/lib/description-executor.js +1 -1
  94. package/dist/lib/description-executor.js.map +1 -1
  95. package/dist/lib/diff-lines.d.ts +18 -0
  96. package/dist/lib/diff-lines.d.ts.map +1 -0
  97. package/dist/lib/diff-lines.js +40 -0
  98. package/dist/lib/diff-lines.js.map +1 -0
  99. package/dist/lib/exit.js +4 -4
  100. package/dist/lib/exit.js.map +1 -1
  101. package/dist/lib/html-artifact.d.ts +14 -0
  102. package/dist/lib/html-artifact.d.ts.map +1 -0
  103. package/dist/lib/html-artifact.js +59 -0
  104. package/dist/lib/html-artifact.js.map +1 -0
  105. package/dist/lib/issue-parser.js +3 -3
  106. package/dist/lib/issue-parser.js.map +1 -1
  107. package/dist/lib/json-output-schema.d.ts +70 -0
  108. package/dist/lib/json-output-schema.d.ts.map +1 -1
  109. package/dist/lib/json-output-schema.js +40 -0
  110. package/dist/lib/json-output-schema.js.map +1 -1
  111. package/dist/lib/logger.d.ts +1 -1
  112. package/dist/lib/logger.d.ts.map +1 -1
  113. package/dist/lib/platform-client.d.ts +26 -0
  114. package/dist/lib/platform-client.d.ts.map +1 -1
  115. package/dist/lib/review-artifact.d.ts +69 -0
  116. package/dist/lib/review-artifact.d.ts.map +1 -0
  117. package/dist/lib/review-artifact.js +171 -0
  118. package/dist/lib/review-artifact.js.map +1 -0
  119. package/dist/lib/review-core.d.ts +6 -4
  120. package/dist/lib/review-core.d.ts.map +1 -1
  121. package/dist/lib/review-core.js +88 -173
  122. package/dist/lib/review-core.js.map +1 -1
  123. package/dist/lib/review-orchestrator.d.ts +23 -0
  124. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  125. package/dist/lib/review-orchestrator.js +31 -21
  126. package/dist/lib/review-orchestrator.js.map +1 -1
  127. package/dist/lib/review-usage.d.ts +4 -0
  128. package/dist/lib/review-usage.d.ts.map +1 -1
  129. package/dist/lib/review-usage.js +25 -0
  130. package/dist/lib/review-usage.js.map +1 -1
  131. package/dist/lib/trace-collector.d.ts +105 -0
  132. package/dist/lib/trace-collector.d.ts.map +1 -0
  133. package/dist/lib/trace-collector.js +255 -0
  134. package/dist/lib/trace-collector.js.map +1 -0
  135. package/dist/lib/trace-html.d.ts +3 -0
  136. package/dist/lib/trace-html.d.ts.map +1 -0
  137. package/dist/lib/trace-html.js +349 -0
  138. package/dist/lib/trace-html.js.map +1 -0
  139. package/dist/lib/workflow-artifacts.d.ts +54 -0
  140. package/dist/lib/workflow-artifacts.d.ts.map +1 -0
  141. package/dist/lib/workflow-artifacts.js +150 -0
  142. package/dist/lib/workflow-artifacts.js.map +1 -0
  143. package/dist/pi/sdk.d.ts.map +1 -1
  144. package/dist/pi/sdk.js +605 -16
  145. package/dist/pi/sdk.js.map +1 -1
  146. package/dist/runtime/agent-loader.d.ts +10 -6
  147. package/dist/runtime/agent-loader.d.ts.map +1 -1
  148. package/dist/runtime/agent-loader.js +55 -29
  149. package/dist/runtime/agent-loader.js.map +1 -1
  150. package/dist/runtime/built-in-paths.d.ts +1 -0
  151. package/dist/runtime/built-in-paths.d.ts.map +1 -1
  152. package/dist/runtime/built-in-paths.js +7 -0
  153. package/dist/runtime/built-in-paths.js.map +1 -1
  154. package/dist/runtime/client.d.ts +14 -0
  155. package/dist/runtime/client.d.ts.map +1 -1
  156. package/dist/runtime/client.js +87 -56
  157. package/dist/runtime/client.js.map +1 -1
  158. package/dist/runtime/path-config.d.ts +2 -2
  159. package/dist/runtime/path-config.d.ts.map +1 -1
  160. package/dist/runtime/path-config.js +8 -8
  161. package/dist/runtime/path-config.js.map +1 -1
  162. package/package.json +22 -16
  163. package/.pi/agents/review/documentation.md +0 -56
  164. package/.pi/agents/review/performance.md +0 -53
  165. package/.pi/agents/review/quality.md +0 -59
  166. package/.pi/agents/review/security.md +0 -53
  167. package/.pi/agents/review/style.md +0 -132
  168. package/dist/cli/describe-mr.d.ts +0 -11
  169. package/dist/cli/describe-mr.d.ts.map +0 -1
  170. package/dist/cli/describe-mr.js +0 -134
  171. package/dist/cli/describe-mr.js.map +0 -1
  172. package/dist/cli/describe-pr.d.ts +0 -12
  173. package/dist/cli/describe-pr.d.ts.map +0 -1
  174. package/dist/cli/describe-pr.js +0 -135
  175. package/dist/cli/describe-pr.js.map +0 -1
  176. package/dist/cli/post-comments.d.ts +0 -20
  177. package/dist/cli/post-comments.d.ts.map +0 -1
  178. package/dist/cli/post-comments.js +0 -225
  179. package/dist/cli/post-comments.js.map +0 -1
  180. package/dist/cli/review-local.d.ts +0 -13
  181. package/dist/cli/review-local.d.ts.map +0 -1
  182. package/dist/cli/review-local.integration.test.d.ts +0 -2
  183. package/dist/cli/review-local.integration.test.d.ts.map +0 -1
  184. package/dist/cli/review-local.integration.test.js +0 -343
  185. package/dist/cli/review-local.integration.test.js.map +0 -1
  186. package/dist/cli/review-local.js +0 -90
  187. package/dist/cli/review-local.js.map +0 -1
  188. package/dist/cli/review-local.live.e2e.test.d.ts +0 -2
  189. package/dist/cli/review-local.live.e2e.test.d.ts.map +0 -1
  190. package/dist/cli/review-local.live.e2e.test.js +0 -153
  191. package/dist/cli/review-local.live.e2e.test.js.map +0 -1
  192. package/dist/cli/review-local.test.d.ts +0 -2
  193. package/dist/cli/review-local.test.d.ts.map +0 -1
  194. package/dist/cli/review-local.test.js +0 -164
  195. package/dist/cli/review-local.test.js.map +0 -1
  196. package/dist/cli/review-mr.d.ts +0 -22
  197. package/dist/cli/review-mr.d.ts.map +0 -1
  198. package/dist/cli/review-mr.js +0 -181
  199. package/dist/cli/review-mr.js.map +0 -1
  200. package/dist/cli/review-mr.test.d.ts +0 -2
  201. package/dist/cli/review-mr.test.d.ts.map +0 -1
  202. package/dist/cli/review-mr.test.js +0 -142
  203. package/dist/cli/review-mr.test.js.map +0 -1
  204. package/dist/cli/review-pr.d.ts +0 -22
  205. package/dist/cli/review-pr.d.ts.map +0 -1
  206. package/dist/cli/review-pr.js +0 -181
  207. package/dist/cli/review-pr.js.map +0 -1
  208. package/dist/cli/review-pr.test.d.ts +0 -2
  209. package/dist/cli/review-pr.test.d.ts.map +0 -1
  210. package/dist/cli/review-pr.test.js +0 -137
  211. package/dist/cli/review-pr.test.js.map +0 -1
  212. package/dist/cli/review-url.d.ts +0 -35
  213. package/dist/cli/review-url.d.ts.map +0 -1
  214. package/dist/cli/review-url.js +0 -110
  215. package/dist/cli/review-url.js.map +0 -1
  216. package/dist/cli/review-url.test.d.ts +0 -2
  217. package/dist/cli/review-url.test.d.ts.map +0 -1
  218. package/dist/cli/review-url.test.js +0 -132
  219. package/dist/cli/review-url.test.js.map +0 -1
  220. package/dist/cli/show-changes.d.ts +0 -15
  221. package/dist/cli/show-changes.d.ts.map +0 -1
  222. package/dist/cli/show-changes.js +0 -184
  223. package/dist/cli/show-changes.js.map +0 -1
  224. package/dist/github/client.test.d.ts +0 -2
  225. package/dist/github/client.test.d.ts.map +0 -1
  226. package/dist/github/client.test.js +0 -206
  227. package/dist/github/client.test.js.map +0 -1
  228. package/dist/github/platform-adapter.test.d.ts +0 -2
  229. package/dist/github/platform-adapter.test.d.ts.map +0 -1
  230. package/dist/github/platform-adapter.test.js +0 -40
  231. package/dist/github/platform-adapter.test.js.map +0 -1
  232. package/dist/gitlab/diff-parser.test.d.ts +0 -2
  233. package/dist/gitlab/diff-parser.test.d.ts.map +0 -1
  234. package/dist/gitlab/diff-parser.test.js +0 -315
  235. package/dist/gitlab/diff-parser.test.js.map +0 -1
  236. package/dist/gitlab/platform-adapter.test.d.ts +0 -2
  237. package/dist/gitlab/platform-adapter.test.d.ts.map +0 -1
  238. package/dist/gitlab/platform-adapter.test.js +0 -21
  239. package/dist/gitlab/platform-adapter.test.js.map +0 -1
  240. package/dist/index.test.d.ts +0 -2
  241. package/dist/index.test.d.ts.map +0 -1
  242. package/dist/index.test.js +0 -7
  243. package/dist/index.test.js.map +0 -1
  244. package/dist/lib/code-quality-report.test.d.ts +0 -2
  245. package/dist/lib/code-quality-report.test.d.ts.map +0 -1
  246. package/dist/lib/code-quality-report.test.js +0 -327
  247. package/dist/lib/code-quality-report.test.js.map +0 -1
  248. package/dist/lib/comment-formatter.test.d.ts +0 -2
  249. package/dist/lib/comment-formatter.test.d.ts.map +0 -1
  250. package/dist/lib/comment-formatter.test.js +0 -694
  251. package/dist/lib/comment-formatter.test.js.map +0 -1
  252. package/dist/lib/comment-manager.test.d.ts +0 -2
  253. package/dist/lib/comment-manager.test.d.ts.map +0 -1
  254. package/dist/lib/comment-manager.test.js +0 -680
  255. package/dist/lib/comment-manager.test.js.map +0 -1
  256. package/dist/lib/comment-poster.test.d.ts +0 -5
  257. package/dist/lib/comment-poster.test.d.ts.map +0 -1
  258. package/dist/lib/comment-poster.test.js +0 -245
  259. package/dist/lib/comment-poster.test.js.map +0 -1
  260. package/dist/lib/config-model-overrides.test.d.ts +0 -12
  261. package/dist/lib/config-model-overrides.test.d.ts.map +0 -1
  262. package/dist/lib/config-model-overrides.test.js +0 -254
  263. package/dist/lib/config-model-overrides.test.js.map +0 -1
  264. package/dist/lib/config.test.d.ts +0 -2
  265. package/dist/lib/config.test.d.ts.map +0 -1
  266. package/dist/lib/config.test.js +0 -73
  267. package/dist/lib/config.test.js.map +0 -1
  268. package/dist/lib/context-compression.test.d.ts +0 -2
  269. package/dist/lib/context-compression.test.d.ts.map +0 -1
  270. package/dist/lib/context-compression.test.js +0 -337
  271. package/dist/lib/context-compression.test.js.map +0 -1
  272. package/dist/lib/context-loader.test.d.ts +0 -2
  273. package/dist/lib/context-loader.test.d.ts.map +0 -1
  274. package/dist/lib/context-loader.test.js +0 -207
  275. package/dist/lib/context-loader.test.js.map +0 -1
  276. package/dist/lib/cursor-fix-link.test.d.ts +0 -2
  277. package/dist/lib/cursor-fix-link.test.d.ts.map +0 -1
  278. package/dist/lib/cursor-fix-link.test.js +0 -70
  279. package/dist/lib/cursor-fix-link.test.js.map +0 -1
  280. package/dist/lib/describe-core.test.d.ts +0 -2
  281. package/dist/lib/describe-core.test.d.ts.map +0 -1
  282. package/dist/lib/describe-core.test.js +0 -208
  283. package/dist/lib/describe-core.test.js.map +0 -1
  284. package/dist/lib/describe-output-path.test.d.ts +0 -2
  285. package/dist/lib/describe-output-path.test.d.ts.map +0 -1
  286. package/dist/lib/describe-output-path.test.js +0 -51
  287. package/dist/lib/describe-output-path.test.js.map +0 -1
  288. package/dist/lib/describe-parser.test.d.ts +0 -2
  289. package/dist/lib/describe-parser.test.d.ts.map +0 -1
  290. package/dist/lib/describe-parser.test.js +0 -282
  291. package/dist/lib/describe-parser.test.js.map +0 -1
  292. package/dist/lib/description-executor.test.d.ts +0 -2
  293. package/dist/lib/description-executor.test.d.ts.map +0 -1
  294. package/dist/lib/description-executor.test.js +0 -128
  295. package/dist/lib/description-executor.test.js.map +0 -1
  296. package/dist/lib/description-formatter.test.d.ts +0 -2
  297. package/dist/lib/description-formatter.test.d.ts.map +0 -1
  298. package/dist/lib/description-formatter.test.js +0 -57
  299. package/dist/lib/description-formatter.test.js.map +0 -1
  300. package/dist/lib/diff-parser.test.d.ts +0 -2
  301. package/dist/lib/diff-parser.test.d.ts.map +0 -1
  302. package/dist/lib/diff-parser.test.js +0 -335
  303. package/dist/lib/diff-parser.test.js.map +0 -1
  304. package/dist/lib/error-comment-poster.test.d.ts +0 -2
  305. package/dist/lib/error-comment-poster.test.d.ts.map +0 -1
  306. package/dist/lib/error-comment-poster.test.js +0 -128
  307. package/dist/lib/error-comment-poster.test.js.map +0 -1
  308. package/dist/lib/exit.test.d.ts +0 -2
  309. package/dist/lib/exit.test.d.ts.map +0 -1
  310. package/dist/lib/exit.test.js +0 -120
  311. package/dist/lib/exit.test.js.map +0 -1
  312. package/dist/lib/issue-parser.test.d.ts +0 -2
  313. package/dist/lib/issue-parser.test.d.ts.map +0 -1
  314. package/dist/lib/issue-parser.test.js +0 -281
  315. package/dist/lib/issue-parser.test.js.map +0 -1
  316. package/dist/lib/json-output-schema.test.d.ts +0 -2
  317. package/dist/lib/json-output-schema.test.d.ts.map +0 -1
  318. package/dist/lib/json-output-schema.test.js +0 -92
  319. package/dist/lib/json-output-schema.test.js.map +0 -1
  320. package/dist/lib/json-output.test.d.ts +0 -2
  321. package/dist/lib/json-output.test.d.ts.map +0 -1
  322. package/dist/lib/json-output.test.js +0 -141
  323. package/dist/lib/json-output.test.js.map +0 -1
  324. package/dist/lib/logger.test.d.ts +0 -2
  325. package/dist/lib/logger.test.d.ts.map +0 -1
  326. package/dist/lib/logger.test.js +0 -324
  327. package/dist/lib/logger.test.js.map +0 -1
  328. package/dist/lib/position-validator.test.d.ts +0 -2
  329. package/dist/lib/position-validator.test.d.ts.map +0 -1
  330. package/dist/lib/position-validator.test.js +0 -128
  331. package/dist/lib/position-validator.test.js.map +0 -1
  332. package/dist/lib/prompt-budget.test.d.ts +0 -2
  333. package/dist/lib/prompt-budget.test.d.ts.map +0 -1
  334. package/dist/lib/prompt-budget.test.js +0 -55
  335. package/dist/lib/prompt-budget.test.js.map +0 -1
  336. package/dist/lib/repository-validator.test.d.ts +0 -5
  337. package/dist/lib/repository-validator.test.d.ts.map +0 -1
  338. package/dist/lib/repository-validator.test.js +0 -341
  339. package/dist/lib/repository-validator.test.js.map +0 -1
  340. package/dist/lib/review-core.test.d.ts +0 -2
  341. package/dist/lib/review-core.test.d.ts.map +0 -1
  342. package/dist/lib/review-core.test.js +0 -600
  343. package/dist/lib/review-core.test.js.map +0 -1
  344. package/dist/lib/review-orchestrator.test.d.ts +0 -2
  345. package/dist/lib/review-orchestrator.test.d.ts.map +0 -1
  346. package/dist/lib/review-orchestrator.test.js +0 -531
  347. package/dist/lib/review-orchestrator.test.js.map +0 -1
  348. package/dist/lib/review-output-path.test.d.ts +0 -2
  349. package/dist/lib/review-output-path.test.d.ts.map +0 -1
  350. package/dist/lib/review-output-path.test.js +0 -83
  351. package/dist/lib/review-output-path.test.js.map +0 -1
  352. package/dist/lib/review-parser.test.d.ts +0 -2
  353. package/dist/lib/review-parser.test.d.ts.map +0 -1
  354. package/dist/lib/review-parser.test.js +0 -130
  355. package/dist/lib/review-parser.test.js.map +0 -1
  356. package/dist/lib/review-usage.test.d.ts +0 -2
  357. package/dist/lib/review-usage.test.d.ts.map +0 -1
  358. package/dist/lib/review-usage.test.js +0 -83
  359. package/dist/lib/review-usage.test.js.map +0 -1
  360. package/dist/lib/unified-review-executor.d.ts +0 -60
  361. package/dist/lib/unified-review-executor.d.ts.map +0 -1
  362. package/dist/lib/unified-review-executor.js +0 -207
  363. package/dist/lib/unified-review-executor.js.map +0 -1
  364. package/dist/lib/unified-review-executor.test.d.ts +0 -5
  365. package/dist/lib/unified-review-executor.test.d.ts.map +0 -1
  366. package/dist/lib/unified-review-executor.test.js +0 -472
  367. package/dist/lib/unified-review-executor.test.js.map +0 -1
  368. package/dist/lib/write-json-output.test.d.ts +0 -2
  369. package/dist/lib/write-json-output.test.d.ts.map +0 -1
  370. package/dist/lib/write-json-output.test.js +0 -259
  371. package/dist/lib/write-json-output.test.js.map +0 -1
  372. package/dist/pi/sdk.test.d.ts +0 -2
  373. package/dist/pi/sdk.test.d.ts.map +0 -1
  374. package/dist/pi/sdk.test.js +0 -449
  375. package/dist/pi/sdk.test.js.map +0 -1
  376. package/dist/runtime/agent-loader.test.d.ts +0 -2
  377. package/dist/runtime/agent-loader.test.d.ts.map +0 -1
  378. package/dist/runtime/agent-loader.test.js +0 -280
  379. package/dist/runtime/agent-loader.test.js.map +0 -1
  380. package/dist/runtime/client.test.d.ts +0 -2
  381. package/dist/runtime/client.test.d.ts.map +0 -1
  382. package/dist/runtime/client.test.js +0 -523
  383. package/dist/runtime/client.test.js.map +0 -1
  384. package/dist/runtime/path-config.test.d.ts +0 -2
  385. package/dist/runtime/path-config.test.d.ts.map +0 -1
  386. package/dist/runtime/path-config.test.js +0 -112
  387. package/dist/runtime/path-config.test.js.map +0 -1
@@ -1,207 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { loadGlobalContext, loadAgentContext, buildReviewPrompt } from './context-loader.js';
3
- import { existsSync, readFileSync } from 'fs';
4
- // Mock fs module
5
- vi.mock('fs', () => ({
6
- existsSync: vi.fn(),
7
- readFileSync: vi.fn(),
8
- }));
9
- describe('context-loader', () => {
10
- beforeEach(() => {
11
- vi.clearAllMocks();
12
- });
13
- describe('loadGlobalContext', () => {
14
- it('should load global context when file exists', () => {
15
- vi.mocked(existsSync).mockReturnValue(true);
16
- vi.mocked(readFileSync).mockReturnValue('# Project Context\n\nThis is project context');
17
- const result = loadGlobalContext('/test/project');
18
- expect(result).toBe('# Project Context\n\nThis is project context');
19
- expect(existsSync).toHaveBeenCalledWith('/test/project/.drs/context.md');
20
- expect(readFileSync).toHaveBeenCalledWith('/test/project/.drs/context.md', 'utf-8');
21
- });
22
- it('should return null when file does not exist', () => {
23
- vi.mocked(existsSync).mockReturnValue(false);
24
- const result = loadGlobalContext('/test/project');
25
- expect(result).toBeNull();
26
- expect(existsSync).toHaveBeenCalledWith('/test/project/.drs/context.md');
27
- expect(readFileSync).not.toHaveBeenCalled();
28
- });
29
- it('should use process.cwd() as default project root', () => {
30
- vi.mocked(existsSync).mockReturnValue(false);
31
- const originalCwd = process.cwd();
32
- loadGlobalContext();
33
- expect(existsSync).toHaveBeenCalledWith(`${originalCwd}/.drs/context.md`);
34
- });
35
- });
36
- describe('loadAgentContext', () => {
37
- it('should load full agent override when agent.md exists', () => {
38
- // Mock agent.md exists
39
- vi.mocked(existsSync).mockImplementation((path) => {
40
- return path.toString().includes('agent.md');
41
- });
42
- vi.mocked(readFileSync).mockReturnValue('# Custom Agent\n\nCustom agent definition');
43
- const result = loadAgentContext('security', '/test/project');
44
- expect(result).toEqual({
45
- source: 'override',
46
- agentDefinition: '# Custom Agent\n\nCustom agent definition',
47
- });
48
- expect(existsSync).toHaveBeenCalledWith('/test/project/.drs/agents/security/agent.md');
49
- });
50
- it('should load agent context when context.md exists but not agent.md', () => {
51
- // Mock only context.md exists
52
- vi.mocked(existsSync).mockImplementation((path) => {
53
- return path.toString().includes('context.md') && !path.toString().includes('agent.md');
54
- });
55
- vi.mocked(readFileSync).mockReturnValue('Agent-specific context');
56
- const result = loadAgentContext('quality', '/test/project');
57
- expect(result).toEqual({
58
- source: 'default',
59
- agentContext: 'Agent-specific context',
60
- });
61
- expect(existsSync).toHaveBeenCalledWith('/test/project/.drs/agents/quality/agent.md');
62
- expect(existsSync).toHaveBeenCalledWith('/test/project/.drs/agents/quality/context.md');
63
- });
64
- it('should return default when no customization exists', () => {
65
- vi.mocked(existsSync).mockReturnValue(false);
66
- const result = loadAgentContext('style', '/test/project');
67
- expect(result).toEqual({
68
- source: 'default',
69
- });
70
- expect(existsSync).toHaveBeenCalledWith('/test/project/.drs/agents/style/agent.md');
71
- expect(existsSync).toHaveBeenCalledWith('/test/project/.drs/agents/style/context.md');
72
- });
73
- it('should use process.cwd() as default project root', () => {
74
- vi.mocked(existsSync).mockReturnValue(false);
75
- const originalCwd = process.cwd();
76
- loadAgentContext('security');
77
- expect(existsSync).toHaveBeenCalledWith(`${originalCwd}/.drs/agents/security/agent.md`);
78
- });
79
- });
80
- describe('buildReviewPrompt', () => {
81
- it('should use full agent override when available', () => {
82
- // Mock agent override
83
- vi.mocked(existsSync).mockImplementation((path) => {
84
- return path.toString().includes('agent.md');
85
- });
86
- vi.mocked(readFileSync).mockReturnValue('# Custom Security Agent\n\nCustom instructions');
87
- const result = buildReviewPrompt('security', 'Default base prompt', 'PR #123', ['src/app.ts', 'src/utils.ts'], '/test/project');
88
- expect(result).toContain('# Custom Security Agent');
89
- expect(result).toContain('Custom instructions');
90
- expect(result).toContain('Review the following files from PR #123');
91
- expect(result).toContain('- src/app.ts');
92
- expect(result).toContain('- src/utils.ts');
93
- expect(result).not.toContain('Default base prompt');
94
- });
95
- it('should build prompt with global context and base prompt', () => {
96
- // Mock global context exists, no agent override
97
- vi.mocked(existsSync).mockImplementation((path) => {
98
- const pathStr = path.toString();
99
- return pathStr.includes('.drs/context.md');
100
- });
101
- vi.mocked(readFileSync).mockImplementation((path) => {
102
- if (path.toString().includes('.drs/context.md')) {
103
- return '# Project Context\n\nThis is our project';
104
- }
105
- return '';
106
- });
107
- const result = buildReviewPrompt('quality', 'Review code quality', 'MR !456', ['lib/index.ts'], '/test/project');
108
- expect(result).toContain('# Project Context');
109
- expect(result).toContain('This is our project');
110
- expect(result).toContain('Review code quality');
111
- });
112
- it('should add Project Context header when not present in global context', () => {
113
- vi.mocked(existsSync).mockImplementation((path) => {
114
- return path.toString().includes('.drs/context.md');
115
- });
116
- vi.mocked(readFileSync).mockReturnValue('Just some context without header');
117
- const result = buildReviewPrompt('security', 'Base instructions', 'PR #1', ['file.ts'], '/test/project');
118
- expect(result).toContain('# Project Context\n\nJust some context without header');
119
- });
120
- it('should not duplicate Project Context header when already present', () => {
121
- vi.mocked(existsSync).mockImplementation((path) => {
122
- return path.toString().includes('.drs/context.md');
123
- });
124
- vi.mocked(readFileSync).mockReturnValue('# Project Context\n\nAlready has header');
125
- const result = buildReviewPrompt('security', 'Base instructions', 'PR #1', ['file.ts'], '/test/project');
126
- // Should not have double "# Project Context"
127
- const matches = result.match(/# Project Context/g);
128
- expect(matches).toHaveLength(1);
129
- });
130
- it('should build prompt with agent-specific context', () => {
131
- // Mock agent context exists
132
- vi.mocked(existsSync).mockImplementation((path) => {
133
- const pathStr = path.toString();
134
- return pathStr.includes('agents/security/context.md');
135
- });
136
- vi.mocked(readFileSync).mockReturnValue('Focus on authentication and authorization');
137
- const result = buildReviewPrompt('security', 'Base security review', 'PR #2', ['auth.ts'], '/test/project');
138
- expect(result).toContain('# Security Agent Context');
139
- expect(result).toContain('Focus on authentication and authorization');
140
- expect(result).toContain('Base security review');
141
- });
142
- it('should capitalize agent name in agent context header', () => {
143
- vi.mocked(existsSync).mockImplementation((path) => {
144
- return path.toString().includes('agents/quality/context.md');
145
- });
146
- vi.mocked(readFileSync).mockReturnValue('Quality context');
147
- const result = buildReviewPrompt('quality', 'Base prompt', 'PR #3', ['file.ts'], '/test/project');
148
- expect(result).toContain('# Quality Agent Context');
149
- });
150
- it('should build prompt with all contexts (global + agent + base)', () => {
151
- // Mock both global and agent context
152
- vi.mocked(existsSync).mockImplementation((path) => {
153
- const pathStr = path.toString();
154
- return (pathStr.includes('.drs/context.md') || pathStr.includes('agents/security/context.md'));
155
- });
156
- vi.mocked(readFileSync).mockImplementation((path) => {
157
- if (path.toString().includes('.drs/context.md')) {
158
- return 'Global project context';
159
- }
160
- if (path.toString().includes('agents/security/context.md')) {
161
- return 'Security-specific context';
162
- }
163
- return '';
164
- });
165
- const result = buildReviewPrompt('security', 'Base security instructions', 'PR #4', ['auth.ts'], '/test/project');
166
- expect(result).toContain('Global project context');
167
- expect(result).toContain('Security-specific context');
168
- expect(result).toContain('Base security instructions');
169
- });
170
- it('should handle empty file list', () => {
171
- vi.mocked(existsSync).mockImplementation((path) => {
172
- return path.toString().includes('agent.md');
173
- });
174
- vi.mocked(readFileSync).mockReturnValue('Custom agent');
175
- const result = buildReviewPrompt('security', 'Base prompt', 'PR #5', [], '/test/project');
176
- expect(result).toContain('Review the following files from PR #5');
177
- // Should still work with no files listed
178
- });
179
- it('should use process.cwd() as default project root', () => {
180
- vi.mocked(existsSync).mockReturnValue(false);
181
- const originalCwd = process.cwd();
182
- buildReviewPrompt('security', 'Base prompt', 'PR #1', ['file.ts']);
183
- expect(existsSync).toHaveBeenCalledWith(`${originalCwd}/.drs/context.md`);
184
- expect(existsSync).toHaveBeenCalledWith(`${originalCwd}/.drs/agents/security/agent.md`);
185
- });
186
- it('should handle whitespace-only global context', () => {
187
- vi.mocked(existsSync).mockImplementation((path) => {
188
- return path.toString().includes('.drs/context.md');
189
- });
190
- vi.mocked(readFileSync).mockReturnValue(' \n\n ');
191
- const result = buildReviewPrompt('security', 'Base prompt', 'PR #1', ['file.ts'], '/test/project');
192
- // Whitespace is preserved and wrapped with header
193
- expect(result).toContain('# Project Context');
194
- expect(result).toContain('Base prompt');
195
- });
196
- it('should handle context with multiple empty lines before content', () => {
197
- vi.mocked(existsSync).mockImplementation((path) => {
198
- return path.toString().includes('.drs/context.md');
199
- });
200
- vi.mocked(readFileSync).mockReturnValue('\n\n\n# Project Context\n\nContent here');
201
- const result = buildReviewPrompt('security', 'Base prompt', 'PR #1', ['file.ts'], '/test/project');
202
- expect(result).toContain('# Project Context\n\nContent here');
203
- expect(result).not.toMatch(/^\n+/); // Should not start with newlines
204
- });
205
- });
206
- });
207
- //# sourceMappingURL=context-loader.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-loader.test.js","sourceRoot":"","sources":["../../src/lib/context-loader.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=cursor-fix-link.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-fix-link.test.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-fix-link.test.ts"],"names":[],"mappings":""}
@@ -1,70 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { buildCursorFixLink, inferCursorWorkspaceName, resolveCursorFixLinkOptions, } from './cursor-fix-link.js';
3
- const issue = {
4
- category: 'QUALITY',
5
- severity: 'HIGH',
6
- title: 'Missing null check',
7
- file: 'src/service.ts',
8
- line: 42,
9
- problem: 'The handler dereferences a nullable value.',
10
- solution: 'Add a guard before reading the value.',
11
- agent: 'quality',
12
- };
13
- describe('cursor-fix-link', () => {
14
- it('builds a Cursor prompt deeplink for a review issue', () => {
15
- const link = buildCursorFixLink(issue, { enabled: true, workspace: 'drs' });
16
- expect(link).toBeDefined();
17
- const url = new URL(link);
18
- expect(url.protocol).toBe('https:');
19
- expect(url.host).toBe('cursor.com');
20
- expect(url.pathname).toBe('/link/prompt');
21
- expect(url.searchParams.get('mode')).toBe('agent');
22
- expect(url.searchParams.get('workspace')).toBe('drs');
23
- expect(url.searchParams.get('text')).toContain('Fix this DRS review issue');
24
- expect(url.searchParams.get('text')).toContain('src/service.ts:42');
25
- expect(url.searchParams.get('text')).toContain('Missing null check');
26
- });
27
- it('does not build a link when disabled', () => {
28
- expect(buildCursorFixLink(issue, { enabled: false })).toBeUndefined();
29
- expect(buildCursorFixLink(issue)).toBeUndefined();
30
- });
31
- it('sanitizes hidden control characters from prompt text', () => {
32
- const link = buildCursorFixLink({
33
- ...issue,
34
- title: 'Hidden\u2028separator',
35
- problem: 'Zero\u200bwidth',
36
- solution: 'Paragraph\u2029separator',
37
- }, { enabled: true });
38
- const prompt = new URL(link).searchParams.get('text');
39
- expect(prompt).toContain('Hidden separator');
40
- expect(prompt).toContain('Zero width');
41
- expect(prompt).toContain('Paragraph separator');
42
- expect(prompt).not.toContain('\u2028');
43
- expect(prompt).not.toContain('\u2029');
44
- expect(prompt).not.toContain('\u200b');
45
- });
46
- it('infers workspace name from repository-like project IDs', () => {
47
- expect(inferCursorWorkspaceName('owner/repo', '/tmp/fallback')).toBe('repo');
48
- expect(inferCursorWorkspaceName('123', '/tmp/drs')).toBe('drs');
49
- });
50
- it('resolves config and CLI overrides', () => {
51
- const config = {
52
- review: {
53
- cursorFixLinks: {
54
- enabled: true,
55
- workspace: 'configured-workspace',
56
- },
57
- },
58
- };
59
- expect(resolveCursorFixLinkOptions(config, 'owner/repo', '/tmp/repo')).toEqual({
60
- enabled: true,
61
- workspace: 'configured-workspace',
62
- });
63
- expect(resolveCursorFixLinkOptions(config, 'owner/repo', '/tmp/repo', undefined, true)).toBe(undefined);
64
- expect(resolveCursorFixLinkOptions(config, 'owner/repo', '/tmp/repo', true, true)).toEqual({
65
- enabled: true,
66
- workspace: 'configured-workspace',
67
- });
68
- });
69
- });
70
- //# sourceMappingURL=cursor-fix-link.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-fix-link.test.js","sourceRoot":"","sources":["../../src/lib/cursor-fix-link.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=describe-core.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"describe-core.test.d.ts","sourceRoot":"","sources":["../../src/lib/describe-core.test.ts"],"names":[],"mappings":""}
@@ -1,208 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { buildDescribeInstructions } from './describe-core.js';
3
- describe('describe-core', () => {
4
- describe('buildDescribeInstructions', () => {
5
- it('should build instructions with diff content', () => {
6
- const files = [
7
- {
8
- filename: 'src/app.ts',
9
- patch: '+ const foo = "bar";',
10
- },
11
- {
12
- filename: 'src/utils.ts',
13
- patch: '- old code\n+ new code',
14
- },
15
- ];
16
- const instructions = buildDescribeInstructions('PR #123', files);
17
- expect(instructions).toContain('PR #123');
18
- expect(instructions).toContain('src/app.ts');
19
- expect(instructions).toContain('src/utils.ts');
20
- expect(instructions).toContain('Diff Content');
21
- expect(instructions).toContain('+ const foo = "bar";');
22
- expect(instructions).toContain('- old code\n+ new code');
23
- expect(instructions).toContain('write_json_output');
24
- expect(instructions).toContain('describe_output');
25
- });
26
- it('should build instructions without diff content', () => {
27
- const files = [{ filename: 'src/app.ts' }, { filename: 'src/utils.ts' }];
28
- const instructions = buildDescribeInstructions('MR !456', files);
29
- expect(instructions).toContain('MR !456');
30
- expect(instructions).toContain('src/app.ts');
31
- expect(instructions).toContain('src/utils.ts');
32
- expect(instructions).not.toContain('Diff Content');
33
- expect(instructions).toContain('Changed files:');
34
- });
35
- it('should include compression summary when provided', () => {
36
- const files = [
37
- {
38
- filename: 'src/app.ts',
39
- patch: '+ new code',
40
- },
41
- ];
42
- const compressionSummary = '⚠️ Context was compressed due to size';
43
- const instructions = buildDescribeInstructions('PR #123', files, compressionSummary);
44
- expect(instructions).toContain(compressionSummary);
45
- });
46
- it('should include project context when provided', () => {
47
- const files = [
48
- {
49
- filename: 'src/app.ts',
50
- patch: '+ new code',
51
- },
52
- ];
53
- const projectContext = 'This is a TypeScript project using Express.';
54
- const instructions = buildDescribeInstructions('PR #123', files, undefined, projectContext);
55
- expect(instructions).toContain('Project Context');
56
- expect(instructions).toContain('This is a TypeScript project using Express.');
57
- });
58
- it('should not add duplicate "Project Context" header if already present', () => {
59
- const files = [
60
- {
61
- filename: 'src/app.ts',
62
- patch: '+ new code',
63
- },
64
- ];
65
- const projectContext = '# Project Context\n\nExisting header content';
66
- const instructions = buildDescribeInstructions('PR #123', files, undefined, projectContext);
67
- // Should only appear once
68
- const matches = instructions.match(/# Project Context/gi);
69
- expect(matches).toHaveLength(1);
70
- });
71
- it('should handle case-insensitive "project context" header', () => {
72
- const files = [
73
- {
74
- filename: 'src/app.ts',
75
- patch: '+ new code',
76
- },
77
- ];
78
- const projectContext = '# project context\n\nLowercase header';
79
- const instructions = buildDescribeInstructions('PR #123', files, undefined, projectContext);
80
- // Should not add duplicate header
81
- const matches = instructions.match(/# project context/gi);
82
- expect(matches).toHaveLength(1);
83
- });
84
- it('should trim project context whitespace', () => {
85
- const files = [
86
- {
87
- filename: 'src/app.ts',
88
- patch: '+ new code',
89
- },
90
- ];
91
- const projectContext = '\n\n Context with whitespace \n\n';
92
- const instructions = buildDescribeInstructions('PR #123', files, undefined, projectContext);
93
- expect(instructions).toContain('Context with whitespace');
94
- expect(instructions).not.toContain('\n\n Context with whitespace \n\n');
95
- });
96
- it('should handle empty project context', () => {
97
- const files = [
98
- {
99
- filename: 'src/app.ts',
100
- patch: '+ new code',
101
- },
102
- ];
103
- const instructions = buildDescribeInstructions('PR #123', files, undefined, '');
104
- expect(instructions).not.toContain('Project Context');
105
- });
106
- it('should handle files with and without patches mixed', () => {
107
- const files = [
108
- {
109
- filename: 'src/app.ts',
110
- patch: '+ has patch',
111
- },
112
- {
113
- filename: 'src/utils.ts',
114
- // no patch
115
- },
116
- {
117
- filename: 'src/db.ts',
118
- patch: '+ another patch',
119
- },
120
- ];
121
- const instructions = buildDescribeInstructions('PR #123', files);
122
- // All files should be listed
123
- expect(instructions).toContain('src/app.ts');
124
- expect(instructions).toContain('src/utils.ts');
125
- expect(instructions).toContain('src/db.ts');
126
- // Only files with patches should be in diff content
127
- expect(instructions).toContain('### src/app.ts');
128
- expect(instructions).toContain('### src/db.ts');
129
- expect(instructions).not.toContain('### src/utils.ts');
130
- });
131
- it('should include all required output schema fields', () => {
132
- const files = [
133
- {
134
- filename: 'src/app.ts',
135
- patch: '+ code',
136
- },
137
- ];
138
- const instructions = buildDescribeInstructions('PR #123', files);
139
- // Check for required schema fields
140
- expect(instructions).toContain('type');
141
- expect(instructions).toContain('title');
142
- expect(instructions).toContain('summary');
143
- expect(instructions).toContain('walkthrough');
144
- expect(instructions).toContain('labels');
145
- expect(instructions).toContain('recommendations');
146
- expect(instructions).toContain('changeType');
147
- expect(instructions).toContain('semanticLabel');
148
- expect(instructions).toContain('significance');
149
- });
150
- it('should include instructions about focusing on new/modified code', () => {
151
- const files = [
152
- {
153
- filename: 'src/app.ts',
154
- patch: '+ code',
155
- },
156
- ];
157
- const instructions = buildDescribeInstructions('PR #123', files);
158
- expect(instructions).toContain('Focus on new or modified code');
159
- expect(instructions).toContain('lines starting with +');
160
- });
161
- it('should handle empty files array', () => {
162
- const files = [];
163
- const instructions = buildDescribeInstructions('PR #123', files);
164
- expect(instructions).toContain('PR #123');
165
- expect(instructions).toContain('Changed files:');
166
- expect(instructions).not.toContain('Diff Content');
167
- });
168
- it('should include compression summary and project context together', () => {
169
- const files = [
170
- {
171
- filename: 'src/app.ts',
172
- patch: '+ code',
173
- },
174
- ];
175
- const compressionSummary = '⚠️ Compressed';
176
- const projectContext = 'Express project';
177
- const instructions = buildDescribeInstructions('PR #123', files, compressionSummary, projectContext);
178
- expect(instructions).toContain('Project Context');
179
- expect(instructions).toContain('Express project');
180
- expect(instructions).toContain('⚠️ Compressed');
181
- });
182
- it('should format diffs with code fences', () => {
183
- const files = [
184
- {
185
- filename: 'src/app.ts',
186
- patch: '+ const x = 1;',
187
- },
188
- ];
189
- const instructions = buildDescribeInstructions('PR #123', files);
190
- expect(instructions).toContain('```diff');
191
- expect(instructions).toContain('+ const x = 1;');
192
- expect(instructions).toContain('```');
193
- });
194
- it('should include specific label for PR/MR', () => {
195
- const files = [
196
- {
197
- filename: 'src/app.ts',
198
- patch: '+ code',
199
- },
200
- ];
201
- const instructionsPR = buildDescribeInstructions('PR #123', files);
202
- expect(instructionsPR).toContain('PR #123');
203
- const instructionsMR = buildDescribeInstructions('MR !456', files);
204
- expect(instructionsMR).toContain('MR !456');
205
- });
206
- });
207
- });
208
- //# sourceMappingURL=describe-core.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"describe-core.test.js","sourceRoot":"","sources":["../../src/lib/describe-core.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=describe-output-path.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"describe-output-path.test.d.ts","sourceRoot":"","sources":["../../src/lib/describe-output-path.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
- import { mkdir, mkdtemp, readFile, rm, writeFile } from 'fs/promises';
3
- import { dirname, join } from 'path';
4
- import { tmpdir } from 'os';
5
- import { writeJsonOutput } from './write-json-output.js';
6
- import { parseDescribeOutput } from './describe-parser.js';
7
- import { OUTPUT_PATHS } from './output-paths.js';
8
- describe('describe output path integration', () => {
9
- let workingDir;
10
- beforeEach(async () => {
11
- workingDir = await mkdtemp(join(tmpdir(), 'drs-describe-'));
12
- });
13
- afterEach(async () => {
14
- await rm(workingDir, { recursive: true, force: true });
15
- });
16
- it('writes describe output to deterministic path and reads it', async () => {
17
- const payload = {
18
- type: 'feature',
19
- title: 'Add deterministic output path usage',
20
- summary: ['Ensures describe output writes to known location'],
21
- };
22
- const pointer = await writeJsonOutput({
23
- outputType: 'describe_output',
24
- payload,
25
- pretty: false,
26
- workingDir,
27
- });
28
- const expectedPath = join(workingDir, OUTPUT_PATHS.describe_output);
29
- const fileContents = JSON.parse(await readFile(expectedPath, 'utf-8'));
30
- expect(fileContents).toEqual(payload);
31
- expect(pointer).toEqual({
32
- outputType: 'describe_output',
33
- outputPath: OUTPUT_PATHS.describe_output,
34
- });
35
- const parsed = await parseDescribeOutput(workingDir, false, JSON.stringify(pointer));
36
- expect(parsed).toEqual(payload);
37
- });
38
- it('reads describe output from default path without pointer', async () => {
39
- const payload = {
40
- type: 'bugfix',
41
- title: 'Read describe output from default path',
42
- summary: ['Loads describe output without pointer metadata'],
43
- };
44
- const expectedPath = join(workingDir, OUTPUT_PATHS.describe_output);
45
- await mkdir(dirname(expectedPath), { recursive: true });
46
- await writeFile(expectedPath, JSON.stringify(payload), 'utf-8');
47
- const parsed = await parseDescribeOutput(workingDir);
48
- expect(parsed).toEqual(payload);
49
- });
50
- });
51
- //# sourceMappingURL=describe-output-path.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"describe-output-path.test.js","sourceRoot":"","sources":["../../src/lib/describe-output-path.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAI,UAAkB,CAAC;IAEvB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,qCAAqC;YAC5C,OAAO,EAAE,CAAC,kDAAkD,CAAC;SAC9D,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;YACpC,UAAU,EAAE,iBAAiB;YAC7B,OAAO;YACP,MAAM,EAAE,KAAK;YACb,UAAU;SACX,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEtC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YACtB,UAAU,EAAE,iBAAiB;YAC7B,UAAU,EAAE,YAAY,CAAC,eAAe;SACzC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,wCAAwC;YAC/C,OAAO,EAAE,CAAC,gDAAgD,CAAC;SAC5D,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;QACpE,MAAM,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=describe-parser.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"describe-parser.test.d.ts","sourceRoot":"","sources":["../../src/lib/describe-parser.test.ts"],"names":[],"mappings":""}