@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.
- package/.pi/agents/describe/pr-describer.md +14 -0
- package/.pi/agents/review/unified-reviewer.md +31 -1
- package/.pi/agents/task/agents-md-updater.md +26 -0
- package/.pi/agents/task/changelog-updater.md +29 -0
- package/.pi/agents/task/review-issue-fixer.md +42 -0
- package/.pi/agents/visual/pr-explainer.md +205 -0
- package/.pi/workflows/github-pr-describe.yaml +26 -0
- package/.pi/workflows/github-pr-fix-review-issues-stacked.yaml +148 -0
- package/.pi/workflows/github-pr-post-comment.yaml +19 -0
- package/.pi/workflows/github-pr-review-post.yaml +43 -0
- package/.pi/workflows/github-pr-review.yaml +364 -0
- package/.pi/workflows/github-pr-show-changes.yaml +25 -0
- package/.pi/workflows/github-pr-update-agents-md-stacked.yaml +103 -0
- package/.pi/workflows/github-pr-visual-explain.yaml +35 -0
- package/.pi/workflows/gitlab-mr-describe.yaml +24 -0
- package/.pi/workflows/gitlab-mr-fix-review-issues-stacked.yaml +144 -0
- package/.pi/workflows/gitlab-mr-post-comment.yaml +17 -0
- package/.pi/workflows/gitlab-mr-review.yaml +364 -0
- package/.pi/workflows/gitlab-mr-show-changes.yaml +23 -0
- package/.pi/workflows/gitlab-mr-update-agents-md-stacked.yaml +100 -0
- package/.pi/workflows/gitlab-mr-visual-explain.yaml +33 -0
- package/.pi/workflows/local-changelog-update.yaml +23 -0
- package/.pi/workflows/local-fix-review-issues.yaml +111 -0
- package/.pi/workflows/local-review.yaml +24 -0
- package/.pi/workflows/local-update-agents-md.yaml +24 -0
- package/.pi/workflows/local-visual-explain.yaml +31 -0
- package/.pi/workflows/release-changelog-finalize.yaml +47 -0
- package/.pi/workflows/tag-changelog-update.yaml +26 -0
- package/README.md +281 -104
- package/dist/ci/runner.d.ts.map +1 -1
- package/dist/ci/runner.js +9 -8
- package/dist/ci/runner.js.map +1 -1
- package/dist/cli/index.js +95 -325
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +25 -23
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/run-agent.d.ts +26 -0
- package/dist/cli/run-agent.d.ts.map +1 -0
- package/dist/cli/run-agent.js +143 -0
- package/dist/cli/run-agent.js.map +1 -0
- package/dist/cli/workflow.d.ts +105 -0
- package/dist/cli/workflow.d.ts.map +1 -0
- package/dist/cli/workflow.js +3309 -0
- package/dist/cli/workflow.js.map +1 -0
- package/dist/github/client.d.ts +12 -0
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +27 -0
- package/dist/github/client.js.map +1 -1
- package/dist/github/platform-adapter.d.ts +6 -1
- package/dist/github/platform-adapter.d.ts.map +1 -1
- package/dist/github/platform-adapter.js +84 -8
- package/dist/github/platform-adapter.js.map +1 -1
- package/dist/gitlab/client.d.ts +11 -0
- package/dist/gitlab/client.d.ts.map +1 -1
- package/dist/gitlab/client.js +11 -0
- package/dist/gitlab/client.js.map +1 -1
- package/dist/gitlab/platform-adapter.d.ts +3 -1
- package/dist/gitlab/platform-adapter.d.ts.map +1 -1
- package/dist/gitlab/platform-adapter.js +32 -1
- package/dist/gitlab/platform-adapter.js.map +1 -1
- package/dist/lib/agent-id.d.ts +9 -0
- package/dist/lib/agent-id.d.ts.map +1 -0
- package/dist/lib/agent-id.js +32 -0
- package/dist/lib/agent-id.js.map +1 -0
- package/dist/lib/comment-formatter.d.ts +15 -1
- package/dist/lib/comment-formatter.d.ts.map +1 -1
- package/dist/lib/comment-formatter.js +53 -4
- package/dist/lib/comment-formatter.js.map +1 -1
- package/dist/lib/comment-manager.d.ts +4 -0
- package/dist/lib/comment-manager.d.ts.map +1 -1
- package/dist/lib/comment-manager.js +7 -1
- package/dist/lib/comment-manager.js.map +1 -1
- package/dist/lib/comment-poster.d.ts +2 -2
- package/dist/lib/comment-poster.d.ts.map +1 -1
- package/dist/lib/comment-poster.js +31 -4
- package/dist/lib/comment-poster.js.map +1 -1
- package/dist/lib/config.d.ts +160 -44
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +475 -101
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/context-compression.d.ts +10 -0
- package/dist/lib/context-compression.d.ts.map +1 -1
- package/dist/lib/context-compression.js +101 -13
- package/dist/lib/context-compression.js.map +1 -1
- package/dist/lib/context-loader.d.ts +5 -4
- package/dist/lib/context-loader.d.ts.map +1 -1
- package/dist/lib/context-loader.js +79 -7
- package/dist/lib/context-loader.js.map +1 -1
- package/dist/lib/describe-core.d.ts.map +1 -1
- package/dist/lib/describe-core.js +3 -2
- package/dist/lib/describe-core.js.map +1 -1
- package/dist/lib/description-executor.js +1 -1
- package/dist/lib/description-executor.js.map +1 -1
- package/dist/lib/diff-lines.d.ts +18 -0
- package/dist/lib/diff-lines.d.ts.map +1 -0
- package/dist/lib/diff-lines.js +40 -0
- package/dist/lib/diff-lines.js.map +1 -0
- package/dist/lib/exit.js +4 -4
- package/dist/lib/exit.js.map +1 -1
- package/dist/lib/html-artifact.d.ts +14 -0
- package/dist/lib/html-artifact.d.ts.map +1 -0
- package/dist/lib/html-artifact.js +59 -0
- package/dist/lib/html-artifact.js.map +1 -0
- package/dist/lib/issue-parser.js +3 -3
- package/dist/lib/issue-parser.js.map +1 -1
- package/dist/lib/json-output-schema.d.ts +70 -0
- package/dist/lib/json-output-schema.d.ts.map +1 -1
- package/dist/lib/json-output-schema.js +40 -0
- package/dist/lib/json-output-schema.js.map +1 -1
- package/dist/lib/logger.d.ts +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/platform-client.d.ts +26 -0
- package/dist/lib/platform-client.d.ts.map +1 -1
- package/dist/lib/review-artifact.d.ts +69 -0
- package/dist/lib/review-artifact.d.ts.map +1 -0
- package/dist/lib/review-artifact.js +171 -0
- package/dist/lib/review-artifact.js.map +1 -0
- package/dist/lib/review-core.d.ts +6 -4
- package/dist/lib/review-core.d.ts.map +1 -1
- package/dist/lib/review-core.js +88 -173
- package/dist/lib/review-core.js.map +1 -1
- package/dist/lib/review-orchestrator.d.ts +23 -0
- package/dist/lib/review-orchestrator.d.ts.map +1 -1
- package/dist/lib/review-orchestrator.js +31 -21
- package/dist/lib/review-orchestrator.js.map +1 -1
- package/dist/lib/review-usage.d.ts +4 -0
- package/dist/lib/review-usage.d.ts.map +1 -1
- package/dist/lib/review-usage.js +25 -0
- package/dist/lib/review-usage.js.map +1 -1
- package/dist/lib/trace-collector.d.ts +105 -0
- package/dist/lib/trace-collector.d.ts.map +1 -0
- package/dist/lib/trace-collector.js +255 -0
- package/dist/lib/trace-collector.js.map +1 -0
- package/dist/lib/trace-html.d.ts +3 -0
- package/dist/lib/trace-html.d.ts.map +1 -0
- package/dist/lib/trace-html.js +349 -0
- package/dist/lib/trace-html.js.map +1 -0
- package/dist/lib/workflow-artifacts.d.ts +54 -0
- package/dist/lib/workflow-artifacts.d.ts.map +1 -0
- package/dist/lib/workflow-artifacts.js +150 -0
- package/dist/lib/workflow-artifacts.js.map +1 -0
- package/dist/pi/sdk.d.ts.map +1 -1
- package/dist/pi/sdk.js +605 -16
- package/dist/pi/sdk.js.map +1 -1
- package/dist/runtime/agent-loader.d.ts +10 -6
- package/dist/runtime/agent-loader.d.ts.map +1 -1
- package/dist/runtime/agent-loader.js +55 -29
- package/dist/runtime/agent-loader.js.map +1 -1
- package/dist/runtime/built-in-paths.d.ts +1 -0
- package/dist/runtime/built-in-paths.d.ts.map +1 -1
- package/dist/runtime/built-in-paths.js +7 -0
- package/dist/runtime/built-in-paths.js.map +1 -1
- package/dist/runtime/client.d.ts +14 -0
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +87 -56
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/path-config.d.ts +2 -2
- package/dist/runtime/path-config.d.ts.map +1 -1
- package/dist/runtime/path-config.js +8 -8
- package/dist/runtime/path-config.js.map +1 -1
- package/package.json +22 -16
- package/.pi/agents/review/documentation.md +0 -56
- package/.pi/agents/review/performance.md +0 -53
- package/.pi/agents/review/quality.md +0 -59
- package/.pi/agents/review/security.md +0 -53
- package/.pi/agents/review/style.md +0 -132
- package/dist/cli/describe-mr.d.ts +0 -11
- package/dist/cli/describe-mr.d.ts.map +0 -1
- package/dist/cli/describe-mr.js +0 -134
- package/dist/cli/describe-mr.js.map +0 -1
- package/dist/cli/describe-pr.d.ts +0 -12
- package/dist/cli/describe-pr.d.ts.map +0 -1
- package/dist/cli/describe-pr.js +0 -135
- package/dist/cli/describe-pr.js.map +0 -1
- package/dist/cli/post-comments.d.ts +0 -20
- package/dist/cli/post-comments.d.ts.map +0 -1
- package/dist/cli/post-comments.js +0 -225
- package/dist/cli/post-comments.js.map +0 -1
- package/dist/cli/review-local.d.ts +0 -13
- package/dist/cli/review-local.d.ts.map +0 -1
- package/dist/cli/review-local.integration.test.d.ts +0 -2
- package/dist/cli/review-local.integration.test.d.ts.map +0 -1
- package/dist/cli/review-local.integration.test.js +0 -343
- package/dist/cli/review-local.integration.test.js.map +0 -1
- package/dist/cli/review-local.js +0 -90
- package/dist/cli/review-local.js.map +0 -1
- package/dist/cli/review-local.live.e2e.test.d.ts +0 -2
- package/dist/cli/review-local.live.e2e.test.d.ts.map +0 -1
- package/dist/cli/review-local.live.e2e.test.js +0 -153
- package/dist/cli/review-local.live.e2e.test.js.map +0 -1
- package/dist/cli/review-local.test.d.ts +0 -2
- package/dist/cli/review-local.test.d.ts.map +0 -1
- package/dist/cli/review-local.test.js +0 -164
- package/dist/cli/review-local.test.js.map +0 -1
- package/dist/cli/review-mr.d.ts +0 -22
- package/dist/cli/review-mr.d.ts.map +0 -1
- package/dist/cli/review-mr.js +0 -181
- package/dist/cli/review-mr.js.map +0 -1
- package/dist/cli/review-mr.test.d.ts +0 -2
- package/dist/cli/review-mr.test.d.ts.map +0 -1
- package/dist/cli/review-mr.test.js +0 -142
- package/dist/cli/review-mr.test.js.map +0 -1
- package/dist/cli/review-pr.d.ts +0 -22
- package/dist/cli/review-pr.d.ts.map +0 -1
- package/dist/cli/review-pr.js +0 -181
- package/dist/cli/review-pr.js.map +0 -1
- package/dist/cli/review-pr.test.d.ts +0 -2
- package/dist/cli/review-pr.test.d.ts.map +0 -1
- package/dist/cli/review-pr.test.js +0 -137
- package/dist/cli/review-pr.test.js.map +0 -1
- package/dist/cli/review-url.d.ts +0 -35
- package/dist/cli/review-url.d.ts.map +0 -1
- package/dist/cli/review-url.js +0 -110
- package/dist/cli/review-url.js.map +0 -1
- package/dist/cli/review-url.test.d.ts +0 -2
- package/dist/cli/review-url.test.d.ts.map +0 -1
- package/dist/cli/review-url.test.js +0 -132
- package/dist/cli/review-url.test.js.map +0 -1
- package/dist/cli/show-changes.d.ts +0 -15
- package/dist/cli/show-changes.d.ts.map +0 -1
- package/dist/cli/show-changes.js +0 -184
- package/dist/cli/show-changes.js.map +0 -1
- package/dist/github/client.test.d.ts +0 -2
- package/dist/github/client.test.d.ts.map +0 -1
- package/dist/github/client.test.js +0 -206
- package/dist/github/client.test.js.map +0 -1
- package/dist/github/platform-adapter.test.d.ts +0 -2
- package/dist/github/platform-adapter.test.d.ts.map +0 -1
- package/dist/github/platform-adapter.test.js +0 -40
- package/dist/github/platform-adapter.test.js.map +0 -1
- package/dist/gitlab/diff-parser.test.d.ts +0 -2
- package/dist/gitlab/diff-parser.test.d.ts.map +0 -1
- package/dist/gitlab/diff-parser.test.js +0 -315
- package/dist/gitlab/diff-parser.test.js.map +0 -1
- package/dist/gitlab/platform-adapter.test.d.ts +0 -2
- package/dist/gitlab/platform-adapter.test.d.ts.map +0 -1
- package/dist/gitlab/platform-adapter.test.js +0 -21
- package/dist/gitlab/platform-adapter.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -7
- package/dist/index.test.js.map +0 -1
- package/dist/lib/code-quality-report.test.d.ts +0 -2
- package/dist/lib/code-quality-report.test.d.ts.map +0 -1
- package/dist/lib/code-quality-report.test.js +0 -327
- package/dist/lib/code-quality-report.test.js.map +0 -1
- package/dist/lib/comment-formatter.test.d.ts +0 -2
- package/dist/lib/comment-formatter.test.d.ts.map +0 -1
- package/dist/lib/comment-formatter.test.js +0 -694
- package/dist/lib/comment-formatter.test.js.map +0 -1
- package/dist/lib/comment-manager.test.d.ts +0 -2
- package/dist/lib/comment-manager.test.d.ts.map +0 -1
- package/dist/lib/comment-manager.test.js +0 -680
- package/dist/lib/comment-manager.test.js.map +0 -1
- package/dist/lib/comment-poster.test.d.ts +0 -5
- package/dist/lib/comment-poster.test.d.ts.map +0 -1
- package/dist/lib/comment-poster.test.js +0 -245
- package/dist/lib/comment-poster.test.js.map +0 -1
- package/dist/lib/config-model-overrides.test.d.ts +0 -12
- package/dist/lib/config-model-overrides.test.d.ts.map +0 -1
- package/dist/lib/config-model-overrides.test.js +0 -254
- package/dist/lib/config-model-overrides.test.js.map +0 -1
- package/dist/lib/config.test.d.ts +0 -2
- package/dist/lib/config.test.d.ts.map +0 -1
- package/dist/lib/config.test.js +0 -73
- package/dist/lib/config.test.js.map +0 -1
- package/dist/lib/context-compression.test.d.ts +0 -2
- package/dist/lib/context-compression.test.d.ts.map +0 -1
- package/dist/lib/context-compression.test.js +0 -337
- package/dist/lib/context-compression.test.js.map +0 -1
- package/dist/lib/context-loader.test.d.ts +0 -2
- package/dist/lib/context-loader.test.d.ts.map +0 -1
- package/dist/lib/context-loader.test.js +0 -207
- package/dist/lib/context-loader.test.js.map +0 -1
- package/dist/lib/cursor-fix-link.test.d.ts +0 -2
- package/dist/lib/cursor-fix-link.test.d.ts.map +0 -1
- package/dist/lib/cursor-fix-link.test.js +0 -70
- package/dist/lib/cursor-fix-link.test.js.map +0 -1
- package/dist/lib/describe-core.test.d.ts +0 -2
- package/dist/lib/describe-core.test.d.ts.map +0 -1
- package/dist/lib/describe-core.test.js +0 -208
- package/dist/lib/describe-core.test.js.map +0 -1
- package/dist/lib/describe-output-path.test.d.ts +0 -2
- package/dist/lib/describe-output-path.test.d.ts.map +0 -1
- package/dist/lib/describe-output-path.test.js +0 -51
- package/dist/lib/describe-output-path.test.js.map +0 -1
- package/dist/lib/describe-parser.test.d.ts +0 -2
- package/dist/lib/describe-parser.test.d.ts.map +0 -1
- package/dist/lib/describe-parser.test.js +0 -282
- package/dist/lib/describe-parser.test.js.map +0 -1
- package/dist/lib/description-executor.test.d.ts +0 -2
- package/dist/lib/description-executor.test.d.ts.map +0 -1
- package/dist/lib/description-executor.test.js +0 -128
- package/dist/lib/description-executor.test.js.map +0 -1
- package/dist/lib/description-formatter.test.d.ts +0 -2
- package/dist/lib/description-formatter.test.d.ts.map +0 -1
- package/dist/lib/description-formatter.test.js +0 -57
- package/dist/lib/description-formatter.test.js.map +0 -1
- package/dist/lib/diff-parser.test.d.ts +0 -2
- package/dist/lib/diff-parser.test.d.ts.map +0 -1
- package/dist/lib/diff-parser.test.js +0 -335
- package/dist/lib/diff-parser.test.js.map +0 -1
- package/dist/lib/error-comment-poster.test.d.ts +0 -2
- package/dist/lib/error-comment-poster.test.d.ts.map +0 -1
- package/dist/lib/error-comment-poster.test.js +0 -128
- package/dist/lib/error-comment-poster.test.js.map +0 -1
- package/dist/lib/exit.test.d.ts +0 -2
- package/dist/lib/exit.test.d.ts.map +0 -1
- package/dist/lib/exit.test.js +0 -120
- package/dist/lib/exit.test.js.map +0 -1
- package/dist/lib/issue-parser.test.d.ts +0 -2
- package/dist/lib/issue-parser.test.d.ts.map +0 -1
- package/dist/lib/issue-parser.test.js +0 -281
- package/dist/lib/issue-parser.test.js.map +0 -1
- package/dist/lib/json-output-schema.test.d.ts +0 -2
- package/dist/lib/json-output-schema.test.d.ts.map +0 -1
- package/dist/lib/json-output-schema.test.js +0 -92
- package/dist/lib/json-output-schema.test.js.map +0 -1
- package/dist/lib/json-output.test.d.ts +0 -2
- package/dist/lib/json-output.test.d.ts.map +0 -1
- package/dist/lib/json-output.test.js +0 -141
- package/dist/lib/json-output.test.js.map +0 -1
- package/dist/lib/logger.test.d.ts +0 -2
- package/dist/lib/logger.test.d.ts.map +0 -1
- package/dist/lib/logger.test.js +0 -324
- package/dist/lib/logger.test.js.map +0 -1
- package/dist/lib/position-validator.test.d.ts +0 -2
- package/dist/lib/position-validator.test.d.ts.map +0 -1
- package/dist/lib/position-validator.test.js +0 -128
- package/dist/lib/position-validator.test.js.map +0 -1
- package/dist/lib/prompt-budget.test.d.ts +0 -2
- package/dist/lib/prompt-budget.test.d.ts.map +0 -1
- package/dist/lib/prompt-budget.test.js +0 -55
- package/dist/lib/prompt-budget.test.js.map +0 -1
- package/dist/lib/repository-validator.test.d.ts +0 -5
- package/dist/lib/repository-validator.test.d.ts.map +0 -1
- package/dist/lib/repository-validator.test.js +0 -341
- package/dist/lib/repository-validator.test.js.map +0 -1
- package/dist/lib/review-core.test.d.ts +0 -2
- package/dist/lib/review-core.test.d.ts.map +0 -1
- package/dist/lib/review-core.test.js +0 -600
- package/dist/lib/review-core.test.js.map +0 -1
- package/dist/lib/review-orchestrator.test.d.ts +0 -2
- package/dist/lib/review-orchestrator.test.d.ts.map +0 -1
- package/dist/lib/review-orchestrator.test.js +0 -531
- package/dist/lib/review-orchestrator.test.js.map +0 -1
- package/dist/lib/review-output-path.test.d.ts +0 -2
- package/dist/lib/review-output-path.test.d.ts.map +0 -1
- package/dist/lib/review-output-path.test.js +0 -83
- package/dist/lib/review-output-path.test.js.map +0 -1
- package/dist/lib/review-parser.test.d.ts +0 -2
- package/dist/lib/review-parser.test.d.ts.map +0 -1
- package/dist/lib/review-parser.test.js +0 -130
- package/dist/lib/review-parser.test.js.map +0 -1
- package/dist/lib/review-usage.test.d.ts +0 -2
- package/dist/lib/review-usage.test.d.ts.map +0 -1
- package/dist/lib/review-usage.test.js +0 -83
- package/dist/lib/review-usage.test.js.map +0 -1
- package/dist/lib/unified-review-executor.d.ts +0 -60
- package/dist/lib/unified-review-executor.d.ts.map +0 -1
- package/dist/lib/unified-review-executor.js +0 -207
- package/dist/lib/unified-review-executor.js.map +0 -1
- package/dist/lib/unified-review-executor.test.d.ts +0 -5
- package/dist/lib/unified-review-executor.test.d.ts.map +0 -1
- package/dist/lib/unified-review-executor.test.js +0 -472
- package/dist/lib/unified-review-executor.test.js.map +0 -1
- package/dist/lib/write-json-output.test.d.ts +0 -2
- package/dist/lib/write-json-output.test.d.ts.map +0 -1
- package/dist/lib/write-json-output.test.js +0 -259
- package/dist/lib/write-json-output.test.js.map +0 -1
- package/dist/pi/sdk.test.d.ts +0 -2
- package/dist/pi/sdk.test.d.ts.map +0 -1
- package/dist/pi/sdk.test.js +0 -449
- package/dist/pi/sdk.test.js.map +0 -1
- package/dist/runtime/agent-loader.test.d.ts +0 -2
- package/dist/runtime/agent-loader.test.d.ts.map +0 -1
- package/dist/runtime/agent-loader.test.js +0 -280
- package/dist/runtime/agent-loader.test.js.map +0 -1
- package/dist/runtime/client.test.d.ts +0 -2
- package/dist/runtime/client.test.d.ts.map +0 -1
- package/dist/runtime/client.test.js +0 -523
- package/dist/runtime/client.test.js.map +0 -1
- package/dist/runtime/path-config.test.d.ts +0 -2
- package/dist/runtime/path-config.test.d.ts.map +0 -1
- package/dist/runtime/path-config.test.js +0 -112
- package/dist/runtime/path-config.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-parser.test.d.ts","sourceRoot":"","sources":["../../src/lib/review-parser.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { writeFile, mkdir, rm } from 'fs/promises';
|
|
3
|
-
import { join } from 'path';
|
|
4
|
-
import { tmpdir } from 'os';
|
|
5
|
-
import { parseReviewOutput } from './review-parser.js';
|
|
6
|
-
// ── Helpers ──────────────────────────────────────────────────────
|
|
7
|
-
let testDir;
|
|
8
|
-
beforeEach(async () => {
|
|
9
|
-
testDir = join(tmpdir(), `drs-review-parser-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
10
|
-
await mkdir(join(testDir, '.drs'), { recursive: true });
|
|
11
|
-
});
|
|
12
|
-
afterEach(async () => {
|
|
13
|
-
await rm(testDir, { recursive: true, force: true });
|
|
14
|
-
});
|
|
15
|
-
const REVIEW_JSON = {
|
|
16
|
-
issues: [
|
|
17
|
-
{
|
|
18
|
-
category: 'SECURITY',
|
|
19
|
-
severity: 'HIGH',
|
|
20
|
-
title: 'SQL Injection',
|
|
21
|
-
file: 'src/db.ts',
|
|
22
|
-
line: 10,
|
|
23
|
-
problem: 'Unsanitized input',
|
|
24
|
-
solution: 'Use parameterized queries',
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
};
|
|
28
|
-
// ── parseReviewOutput ────────────────────────────────────────────
|
|
29
|
-
describe('parseReviewOutput', () => {
|
|
30
|
-
describe('rawOutput inline JSON', () => {
|
|
31
|
-
it('parses raw output with JSON in a fenced code block', async () => {
|
|
32
|
-
const raw = `Here are my findings:
|
|
33
|
-
|
|
34
|
-
\`\`\`json
|
|
35
|
-
${JSON.stringify(REVIEW_JSON, null, 2)}
|
|
36
|
-
\`\`\`
|
|
37
|
-
|
|
38
|
-
That's it.`;
|
|
39
|
-
const result = await parseReviewOutput(testDir, false, raw);
|
|
40
|
-
expect(result).toEqual(REVIEW_JSON);
|
|
41
|
-
});
|
|
42
|
-
it('parses simple non-nested JSON from raw output', async () => {
|
|
43
|
-
// Simple JSON without nested objects parses correctly
|
|
44
|
-
const simpleReview = { summary: 'No issues found', issueCount: 0 };
|
|
45
|
-
const raw = JSON.stringify(simpleReview);
|
|
46
|
-
const result = await parseReviewOutput(testDir, false, raw);
|
|
47
|
-
expect(result).toEqual(simpleReview);
|
|
48
|
-
});
|
|
49
|
-
it('prefers inline JSON over file when raw output has fenced JSON', async () => {
|
|
50
|
-
const fileJson = { issues: [{ title: 'from file' }] };
|
|
51
|
-
await writeFile(join(testDir, '.drs/review-output.json'), JSON.stringify(fileJson));
|
|
52
|
-
const raw = `\`\`\`json\n${JSON.stringify(REVIEW_JSON, null, 2)}\n\`\`\``;
|
|
53
|
-
const result = await parseReviewOutput(testDir, false, raw);
|
|
54
|
-
expect(result).toEqual(REVIEW_JSON);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe('output pointer', () => {
|
|
58
|
-
it('follows outputType pointer to default review path', async () => {
|
|
59
|
-
await writeFile(join(testDir, '.drs/review-output.json'), JSON.stringify(REVIEW_JSON));
|
|
60
|
-
const raw = JSON.stringify({ outputType: 'review_output' });
|
|
61
|
-
const result = await parseReviewOutput(testDir, false, raw);
|
|
62
|
-
expect(result).toEqual(REVIEW_JSON);
|
|
63
|
-
});
|
|
64
|
-
it('follows outputPath pointer to custom file', async () => {
|
|
65
|
-
const customPath = '.drs/custom-review.json';
|
|
66
|
-
await writeFile(join(testDir, customPath), JSON.stringify(REVIEW_JSON));
|
|
67
|
-
const raw = JSON.stringify({ outputPath: customPath });
|
|
68
|
-
const result = await parseReviewOutput(testDir, false, raw);
|
|
69
|
-
expect(result).toEqual(REVIEW_JSON);
|
|
70
|
-
});
|
|
71
|
-
it('falls back to default path when pointer file does not exist', async () => {
|
|
72
|
-
await writeFile(join(testDir, '.drs/review-output.json'), JSON.stringify(REVIEW_JSON));
|
|
73
|
-
const raw = JSON.stringify({ outputPath: '.drs/missing.json' });
|
|
74
|
-
const result = await parseReviewOutput(testDir, false, raw);
|
|
75
|
-
expect(result).toEqual(REVIEW_JSON);
|
|
76
|
-
});
|
|
77
|
-
it('throws for unexpected outputType', async () => {
|
|
78
|
-
const raw = JSON.stringify({ outputType: 'describe_output' });
|
|
79
|
-
await expect(parseReviewOutput(testDir, false, raw)).rejects.toThrow('Unexpected output type for review output');
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe('default file path fallback', () => {
|
|
83
|
-
it('reads from .drs/review-output.json when no rawOutput', async () => {
|
|
84
|
-
await writeFile(join(testDir, '.drs/review-output.json'), JSON.stringify(REVIEW_JSON));
|
|
85
|
-
const result = await parseReviewOutput(testDir, false);
|
|
86
|
-
expect(result).toEqual(REVIEW_JSON);
|
|
87
|
-
});
|
|
88
|
-
it('throws when no rawOutput and default file is missing', async () => {
|
|
89
|
-
await expect(parseReviewOutput(testDir, false)).rejects.toThrow('Review output file not found');
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
describe('debug logging', () => {
|
|
93
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
-
let consoleSpy;
|
|
95
|
-
beforeEach(() => {
|
|
96
|
-
consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
97
|
-
});
|
|
98
|
-
afterEach(() => {
|
|
99
|
-
consoleSpy.mockRestore();
|
|
100
|
-
});
|
|
101
|
-
it('logs when loading from pointer path', async () => {
|
|
102
|
-
await writeFile(join(testDir, '.drs/review-output.json'), JSON.stringify(REVIEW_JSON));
|
|
103
|
-
const raw = JSON.stringify({ outputType: 'review_output' });
|
|
104
|
-
await parseReviewOutput(testDir, true, raw);
|
|
105
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Review output loaded from'));
|
|
106
|
-
});
|
|
107
|
-
it('logs parse failure for invalid JSON in raw output', async () => {
|
|
108
|
-
await writeFile(join(testDir, '.drs/review-output.json'), JSON.stringify(REVIEW_JSON));
|
|
109
|
-
await parseReviewOutput(testDir, true, 'not valid json at all');
|
|
110
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Review output pointer parse failed'));
|
|
111
|
-
});
|
|
112
|
-
it('logs fallback when pointer file is missing', async () => {
|
|
113
|
-
await writeFile(join(testDir, '.drs/review-output.json'), JSON.stringify(REVIEW_JSON));
|
|
114
|
-
const raw = JSON.stringify({ outputPath: '.drs/nonexistent.json' });
|
|
115
|
-
await parseReviewOutput(testDir, true, raw);
|
|
116
|
-
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('not found at .drs/nonexistent.json'));
|
|
117
|
-
});
|
|
118
|
-
});
|
|
119
|
-
describe('security', () => {
|
|
120
|
-
it('rejects path traversal in outputPath', async () => {
|
|
121
|
-
const raw = JSON.stringify({ outputPath: '../../../etc/passwd' });
|
|
122
|
-
await expect(parseReviewOutput(testDir, false, raw)).rejects.toThrow('Refusing to read outside working directory');
|
|
123
|
-
});
|
|
124
|
-
it('rejects absolute path in outputPath', async () => {
|
|
125
|
-
const raw = JSON.stringify({ outputPath: '/etc/passwd' });
|
|
126
|
-
await expect(parseReviewOutput(testDir, false, raw)).rejects.toThrow('Refusing to read outside working directory');
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
//# sourceMappingURL=review-parser.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-parser.test.js","sourceRoot":"","sources":["../../src/lib/review-parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-usage.test.d.ts","sourceRoot":"","sources":["../../src/lib/review-usage.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { addUsageSummary, aggregateAgentUsage, applyUsageMessage, createAgentUsageSummary, createEmptyUsageSummary, formatModelIdentifier, } from './review-usage.js';
|
|
3
|
-
describe('review-usage', () => {
|
|
4
|
-
it('adds usage values with sensible defaults', () => {
|
|
5
|
-
const base = createEmptyUsageSummary();
|
|
6
|
-
const total = addUsageSummary(base, {
|
|
7
|
-
input: 10,
|
|
8
|
-
output: 2,
|
|
9
|
-
cacheRead: 3,
|
|
10
|
-
cost: 0.5,
|
|
11
|
-
});
|
|
12
|
-
expect(total).toEqual({
|
|
13
|
-
input: 10,
|
|
14
|
-
output: 2,
|
|
15
|
-
cacheRead: 3,
|
|
16
|
-
cacheWrite: 0,
|
|
17
|
-
totalTokens: 15,
|
|
18
|
-
cost: 0.5,
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
it('aggregates per-agent usage into run totals', () => {
|
|
22
|
-
const result = aggregateAgentUsage([
|
|
23
|
-
{
|
|
24
|
-
agentType: 'security',
|
|
25
|
-
turns: 1,
|
|
26
|
-
usage: {
|
|
27
|
-
input: 100,
|
|
28
|
-
output: 10,
|
|
29
|
-
cacheRead: 0,
|
|
30
|
-
cacheWrite: 0,
|
|
31
|
-
totalTokens: 110,
|
|
32
|
-
cost: 0.01,
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
agentType: 'quality',
|
|
37
|
-
turns: 1,
|
|
38
|
-
usage: {
|
|
39
|
-
input: 200,
|
|
40
|
-
output: 20,
|
|
41
|
-
cacheRead: 5,
|
|
42
|
-
cacheWrite: 0,
|
|
43
|
-
totalTokens: 225,
|
|
44
|
-
cost: 0.02,
|
|
45
|
-
},
|
|
46
|
-
},
|
|
47
|
-
]);
|
|
48
|
-
expect(result.total).toEqual({
|
|
49
|
-
input: 300,
|
|
50
|
-
output: 30,
|
|
51
|
-
cacheRead: 5,
|
|
52
|
-
cacheWrite: 0,
|
|
53
|
-
totalTokens: 335,
|
|
54
|
-
cost: 0.03,
|
|
55
|
-
});
|
|
56
|
-
expect(result.agents).toHaveLength(2);
|
|
57
|
-
});
|
|
58
|
-
it('applies usage messages and tracks turns/model', () => {
|
|
59
|
-
const base = createAgentUsageSummary('describe/pr-describer');
|
|
60
|
-
const next = applyUsageMessage(base, {
|
|
61
|
-
provider: 'opencode',
|
|
62
|
-
model: 'glm-5-free',
|
|
63
|
-
usage: {
|
|
64
|
-
input: 50,
|
|
65
|
-
output: 10,
|
|
66
|
-
cacheRead: 0,
|
|
67
|
-
cacheWrite: 0,
|
|
68
|
-
totalTokens: 60,
|
|
69
|
-
cost: 0.002,
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
expect(next.turns).toBe(1);
|
|
73
|
-
expect(next.model).toBe('opencode/glm-5-free');
|
|
74
|
-
expect(next.usage.totalTokens).toBe(60);
|
|
75
|
-
expect(next.usage.cost).toBe(0.002);
|
|
76
|
-
});
|
|
77
|
-
it('formats provider/model identifiers', () => {
|
|
78
|
-
expect(formatModelIdentifier('opencode', 'glm-5-free')).toBe('opencode/glm-5-free');
|
|
79
|
-
expect(formatModelIdentifier(undefined, 'gpt-4o')).toBe('gpt-4o');
|
|
80
|
-
expect(formatModelIdentifier(undefined, undefined)).toBeUndefined();
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
//# sourceMappingURL=review-usage.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-usage.test.js","sourceRoot":"","sources":["../../src/lib/review-usage.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified review executor for GitHub and GitLab
|
|
3
|
-
*
|
|
4
|
-
* This module provides a platform-agnostic way to execute code reviews
|
|
5
|
-
* by using the PlatformClient interface. It handles platform-specific
|
|
6
|
-
* features like posting comments and generating reports.
|
|
7
|
-
*
|
|
8
|
-
* Uses shared core logic from review-core.ts.
|
|
9
|
-
*/
|
|
10
|
-
import { type DRSConfig } from './config.js';
|
|
11
|
-
import type { ReviewIssue } from './comment-formatter.js';
|
|
12
|
-
import type { CursorFixLinkOptions } from './cursor-fix-link.js';
|
|
13
|
-
import type { PlatformClient, PullRequest, FileChange, LineValidator, InlineCommentPosition } from './platform-client.js';
|
|
14
|
-
export { enforceRepoBranchMatch } from './repository-validator.js';
|
|
15
|
-
export { postReviewComments } from './comment-poster.js';
|
|
16
|
-
export interface UnifiedReviewOptions {
|
|
17
|
-
/** Platform client (GitHub or GitLab adapter) */
|
|
18
|
-
platformClient: PlatformClient;
|
|
19
|
-
/** Project ID (e.g., "owner/repo" for GitHub, project ID for GitLab) */
|
|
20
|
-
projectId: string;
|
|
21
|
-
/** PR/MR number */
|
|
22
|
-
prNumber: number;
|
|
23
|
-
/** Optional pre-fetched PR/MR details (used to avoid duplicate platform calls) */
|
|
24
|
-
pullRequest?: PullRequest;
|
|
25
|
-
/** Optional pre-fetched changed files (used to avoid duplicate platform calls) */
|
|
26
|
-
changedFiles?: FileChange[];
|
|
27
|
-
/** Whether to post comments to the platform */
|
|
28
|
-
postComments: boolean;
|
|
29
|
-
/** Whether to post an error comment if the review fails */
|
|
30
|
-
postErrorComment?: boolean;
|
|
31
|
-
/** Optional path to output GitLab code quality report JSON */
|
|
32
|
-
codeQualityReport?: string;
|
|
33
|
-
/** Optional path to write JSON results file */
|
|
34
|
-
outputPath?: string;
|
|
35
|
-
/** Output results as JSON to console */
|
|
36
|
-
jsonOutput?: boolean;
|
|
37
|
-
/** Override base branch used for diff command hints */
|
|
38
|
-
baseBranch?: string;
|
|
39
|
-
/** Optional line validator for checking which lines can be commented */
|
|
40
|
-
lineValidator?: LineValidator;
|
|
41
|
-
/** Optional function to create inline comment position data */
|
|
42
|
-
createInlinePosition?: (issue: ReviewIssue, platformData: unknown) => InlineCommentPosition;
|
|
43
|
-
/** Optional Cursor deeplink settings for posted issue comments */
|
|
44
|
-
cursorFixLinks?: CursorFixLinkOptions;
|
|
45
|
-
/** Working directory for file access */
|
|
46
|
-
workingDir?: string;
|
|
47
|
-
/** Generate PR/MR description during review */
|
|
48
|
-
describe?: boolean;
|
|
49
|
-
/** Post generated description during review */
|
|
50
|
-
postDescription?: boolean;
|
|
51
|
-
/** Debug mode - print runtime configuration */
|
|
52
|
-
debug?: boolean;
|
|
53
|
-
/** Reasoning effort level for the model */
|
|
54
|
-
thinkingLevel?: string;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Execute a unified code review for any platform
|
|
58
|
-
*/
|
|
59
|
-
export declare function executeUnifiedReview(config: DRSConfig, options: UnifiedReviewOptions): Promise<void>;
|
|
60
|
-
//# sourceMappingURL=unified-review-executor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unified-review-executor.d.ts","sourceRoot":"","sources":["../../src/lib/unified-review-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAOjE,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAoB9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,cAAc,EAAE,cAAc,CAAC;IAC/B,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kFAAkF;IAClF,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,+CAA+C;IAC/C,YAAY,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,KAAK,qBAAqB,CAAC;IAC5F,kEAAkE;IAClE,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAkPf"}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified review executor for GitHub and GitLab
|
|
3
|
-
*
|
|
4
|
-
* This module provides a platform-agnostic way to execute code reviews
|
|
5
|
-
* by using the PlatformClient interface. It handles platform-specific
|
|
6
|
-
* features like posting comments and generating reports.
|
|
7
|
-
*
|
|
8
|
-
* Uses shared core logic from review-core.ts.
|
|
9
|
-
*/
|
|
10
|
-
import chalk from 'chalk';
|
|
11
|
-
import { writeFile } from 'fs/promises';
|
|
12
|
-
import { exitProcess } from './exit.js';
|
|
13
|
-
import { getDescriberModelOverride, getModelOverrides, getUnifiedModelOverride, } from './config.js';
|
|
14
|
-
import { connectToRuntime, filterIgnoredFiles, getReviewBudgetModelIds, } from './review-orchestrator.js';
|
|
15
|
-
import { buildBaseInstructions, runReviewPipeline, displayReviewSummary } from './review-core.js';
|
|
16
|
-
import { generateCodeQualityReport, formatCodeQualityReport } from './code-quality-report.js';
|
|
17
|
-
import { formatReviewJson, writeReviewJson, printReviewJson } from './json-output.js';
|
|
18
|
-
import { resolveWithinWorkingDir } from './path-utils.js';
|
|
19
|
-
import { enforceRepoBranchMatch, resolveBaseBranch, getCanonicalDiffCommand, } from './repository-validator.js';
|
|
20
|
-
import { postReviewComments } from './comment-poster.js';
|
|
21
|
-
import { prepareDiffsForAgent, formatCompressionSummary, resolveCompressionBudget, } from './context-compression.js';
|
|
22
|
-
import { runDescribeIfEnabled } from './description-executor.js';
|
|
23
|
-
import { formatDescribeSummary } from './description-formatter.js';
|
|
24
|
-
import { postErrorComment, removeErrorComment } from './error-comment-poster.js';
|
|
25
|
-
// Re-export functions for backward compatibility
|
|
26
|
-
export { enforceRepoBranchMatch } from './repository-validator.js';
|
|
27
|
-
export { postReviewComments } from './comment-poster.js';
|
|
28
|
-
/**
|
|
29
|
-
* Execute a unified code review for any platform
|
|
30
|
-
*/
|
|
31
|
-
export async function executeUnifiedReview(config, options) {
|
|
32
|
-
const { platformClient, projectId, prNumber, postComments } = options;
|
|
33
|
-
// Track runtime client for cleanup
|
|
34
|
-
let runtimeClient = null;
|
|
35
|
-
try {
|
|
36
|
-
console.log(chalk.bold.cyan('\n📋 DRS | Code Review Analysis\n'));
|
|
37
|
-
// Fetch PR/MR details
|
|
38
|
-
console.log(chalk.gray(`Fetching PR/MR #${prNumber}...\n`));
|
|
39
|
-
const pr = options.pullRequest ?? (await platformClient.getPullRequest(projectId, prNumber));
|
|
40
|
-
await enforceRepoBranchMatch(options.workingDir ?? process.cwd(), projectId, pr, {
|
|
41
|
-
skipRepoCheck: config.review.skipRepoCheck,
|
|
42
|
-
skipBranchCheck: config.review.skipBranchCheck,
|
|
43
|
-
});
|
|
44
|
-
const allFiles = options.changedFiles ?? (await platformClient.getChangedFiles(projectId, prNumber));
|
|
45
|
-
console.log(chalk.bold(`PR/MR: ${pr.title}`));
|
|
46
|
-
console.log(chalk.gray(`Author: ${pr.author}`));
|
|
47
|
-
console.log(chalk.gray(`Branch: ${pr.sourceBranch} → ${pr.targetBranch}`));
|
|
48
|
-
console.log(chalk.gray(`Files changed: ${allFiles.length}\n`));
|
|
49
|
-
if (allFiles.length === 0) {
|
|
50
|
-
console.log(chalk.yellow('✓ No changes to review\n'));
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
// Get list of changed files (excluding deleted files)
|
|
54
|
-
const changedFileNames = allFiles
|
|
55
|
-
.filter((file) => file.status !== 'removed')
|
|
56
|
-
.map((file) => file.filename);
|
|
57
|
-
if (changedFileNames.length === 0) {
|
|
58
|
-
console.log(chalk.yellow('✓ No files to review after filtering\n'));
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
// Filter files by ignore patterns
|
|
62
|
-
const filteredFileNames = filterIgnoredFiles(changedFileNames, config);
|
|
63
|
-
const filteredFiles = filteredFileNames;
|
|
64
|
-
const ignoredCount = changedFileNames.length - filteredFiles.length;
|
|
65
|
-
if (ignoredCount > 0) {
|
|
66
|
-
console.log(chalk.gray(`Ignoring ${ignoredCount} file(s) based on patterns\n`));
|
|
67
|
-
}
|
|
68
|
-
if (filteredFiles.length === 0) {
|
|
69
|
-
console.log(chalk.yellow('✓ No files to review after filtering\n'));
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const agentModelOverrides = getModelOverrides(config);
|
|
73
|
-
const unifiedModelOverrides = getUnifiedModelOverride(config);
|
|
74
|
-
const reviewOverrides = {
|
|
75
|
-
...agentModelOverrides,
|
|
76
|
-
...unifiedModelOverrides,
|
|
77
|
-
};
|
|
78
|
-
const describeEnabled = options.describe ?? config.review.describe?.enabled ?? false;
|
|
79
|
-
const postDescriptionEnabled = options.postDescription ?? config.review.describe?.postDescription ?? false;
|
|
80
|
-
const describeOverrides = describeEnabled ? getDescriberModelOverride(config) : {};
|
|
81
|
-
const modelOverrides = { ...reviewOverrides, ...describeOverrides };
|
|
82
|
-
// Connect to runtime
|
|
83
|
-
runtimeClient = await connectToRuntime(config, options.workingDir ?? process.cwd(), {
|
|
84
|
-
debug: options.debug,
|
|
85
|
-
modelOverrides,
|
|
86
|
-
thinkingLevel: options.thinkingLevel,
|
|
87
|
-
});
|
|
88
|
-
const describeFileNames = allFiles
|
|
89
|
-
.filter((file) => file.status !== 'removed')
|
|
90
|
-
.map((file) => file.filename);
|
|
91
|
-
const filteredDescribeFileNames = new Set(filterIgnoredFiles(describeFileNames, config));
|
|
92
|
-
const filesForDescribe = allFiles
|
|
93
|
-
.filter((file) => filteredDescribeFileNames.has(file.filename))
|
|
94
|
-
.map((file) => ({
|
|
95
|
-
filename: file.filename,
|
|
96
|
-
patch: file.patch,
|
|
97
|
-
}));
|
|
98
|
-
let describeResult = null;
|
|
99
|
-
if (describeEnabled) {
|
|
100
|
-
describeResult = await runDescribeIfEnabled(runtimeClient, config, platformClient, projectId, pr, filesForDescribe, postDescriptionEnabled, options.workingDir ?? process.cwd(), options.debug);
|
|
101
|
-
}
|
|
102
|
-
// Build change context from describe output for review agents
|
|
103
|
-
const describeSummary = describeResult ? formatDescribeSummary(describeResult) : undefined;
|
|
104
|
-
// Build instructions for platform review - pass actual diff content from platform
|
|
105
|
-
const reviewLabel = `PR/MR #${prNumber}`;
|
|
106
|
-
const baseBranchResolution = resolveBaseBranch(options.baseBranch, pr.targetBranch);
|
|
107
|
-
const fallbackDiffCommand = getCanonicalDiffCommand(pr, baseBranchResolution);
|
|
108
|
-
const patchByFilename = new Map(allFiles.map((file) => [file.filename, file.patch]));
|
|
109
|
-
const filesForInstructions = filteredFiles.map((filename) => ({
|
|
110
|
-
filename,
|
|
111
|
-
patch: patchByFilename.get(filename),
|
|
112
|
-
}));
|
|
113
|
-
const reviewModelIds = getReviewBudgetModelIds(config, agentModelOverrides, unifiedModelOverrides);
|
|
114
|
-
const contextWindow = runtimeClient.getMinContextWindow(reviewModelIds);
|
|
115
|
-
const compressionOptions = resolveCompressionBudget(contextWindow, config.contextCompression);
|
|
116
|
-
const compression = prepareDiffsForAgent(filesForInstructions, compressionOptions);
|
|
117
|
-
const compressionSummary = formatCompressionSummary(compression);
|
|
118
|
-
if (compressionSummary) {
|
|
119
|
-
console.log(chalk.yellow('⚠ Diff content trimmed to fit token budget.\n'));
|
|
120
|
-
}
|
|
121
|
-
let baseInstructions = buildBaseInstructions(reviewLabel, compression.files, fallbackDiffCommand, compressionSummary);
|
|
122
|
-
if (baseBranchResolution.resolvedBaseBranch) {
|
|
123
|
-
baseInstructions = `${baseInstructions}\n\nBase branch resolved to: ${baseBranchResolution.resolvedBaseBranch} (${baseBranchResolution.source})`;
|
|
124
|
-
}
|
|
125
|
-
// Run agents using shared core logic
|
|
126
|
-
const result = await runReviewPipeline(runtimeClient, config, baseInstructions, reviewLabel, filteredFiles, { prNumber, describeSummary }, options.workingDir ?? process.cwd(), options.debug ?? false);
|
|
127
|
-
// Display summary
|
|
128
|
-
displayReviewSummary(result);
|
|
129
|
-
// Post comments to platform if requested
|
|
130
|
-
if (postComments) {
|
|
131
|
-
// Remove any previous error comment on successful review
|
|
132
|
-
await removeErrorComment(platformClient, projectId, prNumber);
|
|
133
|
-
await postReviewComments(platformClient, projectId, prNumber, result.summary, result.issues, result.changeSummary, result.usage, pr.platformData, options.lineValidator, options.createInlinePosition, options.cursorFixLinks);
|
|
134
|
-
}
|
|
135
|
-
// Generate code quality report if requested
|
|
136
|
-
if (options.codeQualityReport) {
|
|
137
|
-
await generateAndWriteCodeQualityReport(result.issues, options.codeQualityReport, options.workingDir ?? process.cwd());
|
|
138
|
-
}
|
|
139
|
-
// Handle JSON output
|
|
140
|
-
const wantsJsonOutput = options.jsonOutput ?? options.outputPath;
|
|
141
|
-
if (wantsJsonOutput) {
|
|
142
|
-
const jsonOutput = formatReviewJson(result.summary, result.issues, {
|
|
143
|
-
source: `${options.prNumber}`,
|
|
144
|
-
project: options.projectId,
|
|
145
|
-
branch: {
|
|
146
|
-
source: pr.sourceBranch,
|
|
147
|
-
target: pr.targetBranch,
|
|
148
|
-
},
|
|
149
|
-
}, result.usage);
|
|
150
|
-
if (options.outputPath) {
|
|
151
|
-
await writeReviewJson(jsonOutput, options.outputPath, options.workingDir ?? process.cwd());
|
|
152
|
-
console.log(chalk.green(`\n✓ Review results written to ${options.outputPath}\n`));
|
|
153
|
-
}
|
|
154
|
-
if (options.jsonOutput) {
|
|
155
|
-
printReviewJson(jsonOutput);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
// Exit with error code if critical issues found
|
|
159
|
-
if (result.summary.bySeverity.CRITICAL > 0) {
|
|
160
|
-
console.log(chalk.red.bold('⚠️ Critical issues found!\n'));
|
|
161
|
-
await runtimeClient.shutdown();
|
|
162
|
-
exitProcess(1);
|
|
163
|
-
}
|
|
164
|
-
else if (result.summary.issuesFound === 0) {
|
|
165
|
-
console.log(chalk.green('✓ No issues found! Code looks good.\n'));
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
catch (error) {
|
|
169
|
-
// Post error comment if enabled (note: error details are logged to CI, not in comment)
|
|
170
|
-
if (options.postErrorComment) {
|
|
171
|
-
try {
|
|
172
|
-
await postErrorComment(platformClient, projectId, prNumber);
|
|
173
|
-
}
|
|
174
|
-
catch (postError) {
|
|
175
|
-
const postErrorMessage = postError instanceof Error ? postError.message : String(postError);
|
|
176
|
-
console.warn(chalk.yellow(`Could not post error comment: ${postErrorMessage}`));
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// Handle "all agents failed" error
|
|
180
|
-
if (error instanceof Error && error.message === 'All review agents failed') {
|
|
181
|
-
if (runtimeClient) {
|
|
182
|
-
await runtimeClient.shutdown();
|
|
183
|
-
}
|
|
184
|
-
exitProcess(1);
|
|
185
|
-
}
|
|
186
|
-
throw error;
|
|
187
|
-
}
|
|
188
|
-
finally {
|
|
189
|
-
// Shutdown runtime client if it was initialized
|
|
190
|
-
if (runtimeClient) {
|
|
191
|
-
await runtimeClient.shutdown();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Generate and write GitLab code quality report
|
|
197
|
-
*/
|
|
198
|
-
async function generateAndWriteCodeQualityReport(issues, reportPath, workingDir) {
|
|
199
|
-
console.log(chalk.gray('Generating code quality report...\n'));
|
|
200
|
-
const report = generateCodeQualityReport(issues);
|
|
201
|
-
const jsonContent = formatCodeQualityReport(report);
|
|
202
|
-
const fullPath = resolveWithinWorkingDir(workingDir, reportPath, 'write');
|
|
203
|
-
await writeFile(fullPath, jsonContent, 'utf-8');
|
|
204
|
-
console.log(chalk.green(`✓ Code quality report written to ${reportPath}`));
|
|
205
|
-
console.log(chalk.gray(` Total issues: ${report.length}\n`));
|
|
206
|
-
}
|
|
207
|
-
//# sourceMappingURL=unified-review-executor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unified-review-executor.js","sourceRoot":"","sources":["../../src/lib/unified-review-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unified-review-executor.test.d.ts","sourceRoot":"","sources":["../../src/lib/unified-review-executor.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|