@diff-review-system/drs 4.0.0-rc.4 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi/agents/describe/pr-describer.md +14 -0
- package/.pi/agents/review/unified-reviewer.md +33 -7
- package/.pi/agents/task/agents-md-updater.md +3 -1
- package/.pi/agents/task/review-assistant.md +22 -0
- package/.pi/agents/task/review-issue-fixer.md +18 -1
- package/.pi/agents/visual/pr-explainer.md +205 -0
- package/.pi/workflows/github-pr-describe.yaml +10 -7
- package/.pi/workflows/github-pr-fix-review-issues-stacked.yaml +154 -0
- package/.pi/workflows/github-pr-post-comment.yaml +10 -10
- package/.pi/workflows/github-pr-review-post.yaml +18 -8
- package/.pi/workflows/github-pr-review.yaml +354 -7
- package/.pi/workflows/github-pr-show-changes.yaml +8 -8
- package/.pi/workflows/github-pr-update-agents-md-stacked.yaml +103 -0
- package/.pi/workflows/github-pr-visual-explain.yaml +80 -0
- package/.pi/workflows/gitlab-mr-describe.yaml +8 -5
- package/.pi/workflows/gitlab-mr-fix-review-issues-stacked.yaml +150 -0
- package/.pi/workflows/gitlab-mr-post-comment.yaml +8 -8
- package/.pi/workflows/gitlab-mr-review.yaml +354 -5
- package/.pi/workflows/gitlab-mr-show-changes.yaml +6 -6
- package/.pi/workflows/gitlab-mr-update-agents-md-stacked.yaml +100 -0
- package/.pi/workflows/gitlab-mr-visual-explain.yaml +78 -0
- package/.pi/workflows/local-fix-review-issues.yaml +89 -13
- package/.pi/workflows/local-review.yaml +15 -2
- package/.pi/workflows/local-update-agents-md.yaml +1 -1
- package/.pi/workflows/local-visual-explain.yaml +76 -0
- package/.pi/workflows/release-changelog-finalize.yaml +47 -0
- package/.pi/workflows/tag-changelog-update.yaml +4 -4
- package/.pi/workflows/temporal-control-smoke.yaml +63 -0
- package/README.md +130 -27
- package/dist/ci/runner.d.ts.map +1 -1
- package/dist/ci/runner.js +3 -1
- package/dist/ci/runner.js.map +1 -1
- package/dist/cli/index.js +258 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +6 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +29 -10
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/run-agent.d.ts +4 -7
- package/dist/cli/run-agent.d.ts.map +1 -1
- package/dist/cli/run-agent.js +4 -0
- package/dist/cli/run-agent.js.map +1 -1
- package/dist/cli/workflow-executor-selection.d.ts +3 -0
- package/dist/cli/workflow-executor-selection.d.ts.map +1 -0
- package/dist/cli/workflow-executor-selection.js +15 -0
- package/dist/cli/workflow-executor-selection.js.map +1 -0
- package/dist/cli/workflow.d.ts +76 -26
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +1624 -192
- package/dist/cli/workflow.js.map +1 -1
- 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-result.d.ts +8 -0
- package/dist/lib/agent-result.d.ts.map +1 -0
- package/dist/lib/agent-result.js +2 -0
- package/dist/lib/agent-result.js.map +1 -0
- package/dist/lib/comment-formatter.d.ts +8 -0
- package/dist/lib/comment-formatter.d.ts.map +1 -1
- package/dist/lib/comment-formatter.js +12 -4
- package/dist/lib/comment-formatter.js.map +1 -1
- package/dist/lib/comment-poster.d.ts.map +1 -1
- package/dist/lib/comment-poster.js +28 -1
- package/dist/lib/comment-poster.js.map +1 -1
- package/dist/lib/config.d.ts +71 -11
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +163 -28
- 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 +2 -1
- package/dist/lib/context-loader.d.ts.map +1 -1
- package/dist/lib/context-loader.js +70 -1
- 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/diff-lines.d.ts +9 -0
- package/dist/lib/diff-lines.d.ts.map +1 -1
- package/dist/lib/diff-lines.js +17 -9
- package/dist/lib/diff-lines.js.map +1 -1
- 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/output-paths.d.ts +0 -1
- package/dist/lib/output-paths.d.ts.map +1 -1
- package/dist/lib/output-paths.js +0 -1
- package/dist/lib/output-paths.js.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/project-setup.d.ts +10 -0
- package/dist/lib/project-setup.d.ts.map +1 -0
- package/dist/lib/project-setup.js +25 -0
- package/dist/lib/project-setup.js.map +1 -0
- package/dist/lib/review-artifact-store.d.ts +16 -0
- package/dist/lib/review-artifact-store.d.ts.map +1 -0
- package/dist/lib/review-artifact-store.js +84 -0
- package/dist/lib/review-artifact-store.js.map +1 -0
- 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 +172 -0
- package/dist/lib/review-artifact.js.map +1 -0
- package/dist/lib/review-core.d.ts +7 -4
- package/dist/lib/review-core.d.ts.map +1 -1
- package/dist/lib/review-core.js +82 -165
- 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 +20 -13
- package/dist/lib/review-orchestrator.js.map +1 -1
- package/dist/lib/review-parser.d.ts.map +1 -1
- package/dist/lib/review-parser.js +15 -12
- package/dist/lib/review-parser.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/skills.d.ts +16 -0
- package/dist/lib/skills.d.ts.map +1 -0
- package/dist/lib/skills.js +140 -0
- package/dist/lib/skills.js.map +1 -0
- 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/artifact-store.d.ts +71 -0
- package/dist/lib/workflow/artifact-store.d.ts.map +1 -0
- package/dist/lib/workflow/artifact-store.js +121 -0
- package/dist/lib/workflow/artifact-store.js.map +1 -0
- package/dist/lib/workflow/compiled-plan.d.ts +87 -0
- package/dist/lib/workflow/compiled-plan.d.ts.map +1 -0
- package/dist/lib/workflow/compiled-plan.js +62 -0
- package/dist/lib/workflow/compiled-plan.js.map +1 -0
- package/dist/lib/workflow/executor.d.ts +18 -0
- package/dist/lib/workflow/executor.d.ts.map +1 -0
- package/dist/lib/workflow/executor.js +2 -0
- package/dist/lib/workflow/executor.js.map +1 -0
- package/dist/lib/workflow/graph.d.ts +30 -0
- package/dist/lib/workflow/graph.d.ts.map +1 -0
- package/dist/lib/workflow/graph.js +139 -0
- package/dist/lib/workflow/graph.js.map +1 -0
- package/dist/lib/workflow/input.d.ts +4 -0
- package/dist/lib/workflow/input.d.ts.map +1 -0
- package/dist/lib/workflow/input.js +4 -0
- package/dist/lib/workflow/input.js.map +1 -0
- package/dist/lib/workflow/node-executor.d.ts +19 -0
- package/dist/lib/workflow/node-executor.d.ts.map +1 -0
- package/dist/lib/workflow/node-executor.js +2 -0
- package/dist/lib/workflow/node-executor.js.map +1 -0
- package/dist/lib/workflow/planning.d.ts +51 -0
- package/dist/lib/workflow/planning.d.ts.map +1 -0
- package/dist/lib/workflow/planning.js +814 -0
- package/dist/lib/workflow/planning.js.map +1 -0
- package/dist/lib/workflow/types.d.ts +66 -0
- package/dist/lib/workflow/types.d.ts.map +1 -0
- package/dist/lib/workflow/types.js +2 -0
- package/dist/lib/workflow/types.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/lib/write-json-output.d.ts.map +1 -1
- package/dist/lib/write-json-output.js +3 -8
- package/dist/lib/write-json-output.js.map +1 -1
- package/dist/pi/sdk.d.ts.map +1 -1
- package/dist/pi/sdk.js +576 -8
- package/dist/pi/sdk.js.map +1 -1
- package/dist/runtime/agent-loader.js +2 -2
- 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 +2 -0
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +11 -5
- package/dist/runtime/client.js.map +1 -1
- package/dist/temporal/activities.d.ts +26 -0
- package/dist/temporal/activities.d.ts.map +1 -0
- package/dist/temporal/activities.js +219 -0
- package/dist/temporal/activities.js.map +1 -0
- package/dist/temporal/config.d.ts +4 -0
- package/dist/temporal/config.d.ts.map +1 -0
- package/dist/temporal/config.js +36 -0
- package/dist/temporal/config.js.map +1 -0
- package/dist/temporal/executor.d.ts +7 -0
- package/dist/temporal/executor.d.ts.map +1 -0
- package/dist/temporal/executor.js +233 -0
- package/dist/temporal/executor.js.map +1 -0
- package/dist/temporal/retry-policy.d.ts +28 -0
- package/dist/temporal/retry-policy.d.ts.map +1 -0
- package/dist/temporal/retry-policy.js +56 -0
- package/dist/temporal/retry-policy.js.map +1 -0
- package/dist/temporal/types.d.ts +86 -0
- package/dist/temporal/types.d.ts.map +1 -0
- package/dist/temporal/types.js +2 -0
- package/dist/temporal/types.js.map +1 -0
- package/dist/temporal/worker.d.ts +3 -0
- package/dist/temporal/worker.d.ts.map +1 -0
- package/dist/temporal/worker.js +18 -0
- package/dist/temporal/worker.js.map +1 -0
- package/dist/temporal/workflow-id.d.ts +27 -0
- package/dist/temporal/workflow-id.d.ts.map +1 -0
- package/dist/temporal/workflow-id.js +53 -0
- package/dist/temporal/workflow-id.js.map +1 -0
- package/dist/temporal/workflows.d.ts +6 -0
- package/dist/temporal/workflows.d.ts.map +1 -0
- package/dist/temporal/workflows.js +342 -0
- package/dist/temporal/workflows.js.map +1 -0
- package/package.json +26 -15
- package/.pi/workflows/github-pr-describe-post.yaml +0 -24
- package/.pi/workflows/gitlab-mr-describe-post.yaml +0 -22
- package/.pi/workflows/gitlab-mr-review-code-quality.yaml +0 -31
- package/.pi/workflows/gitlab-mr-review-post-code-quality.yaml +0 -40
- package/.pi/workflows/gitlab-mr-review-post.yaml +0 -30
- package/.pi/workflows/local-staged-review.yaml +0 -17
- package/dist/cli/run-agent.test.d.ts +0 -2
- package/dist/cli/run-agent.test.d.ts.map +0 -1
- package/dist/cli/run-agent.test.js +0 -204
- package/dist/cli/run-agent.test.js.map +0 -1
- package/dist/cli/workflow.test.d.ts +0 -2
- package/dist/cli/workflow.test.d.ts.map +0 -1
- package/dist/cli/workflow.test.js +0 -1410
- package/dist/cli/workflow.test.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 -727
- 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 -255
- package/dist/lib/comment-poster.test.js.map +0 -1
- package/dist/lib/config-model-overrides.test.d.ts +0 -2
- package/dist/lib/config-model-overrides.test.d.ts.map +0 -1
- package/dist/lib/config-model-overrides.test.js +0 -218
- 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 -353
- 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 -212
- 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 -135
- 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-lines.test.d.ts +0 -2
- package/dist/lib/diff-lines.test.d.ts.map +0 -1
- package/dist/lib/diff-lines.test.js +0 -13
- package/dist/lib/diff-lines.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 -614
- 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 -552
- 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 -58
- package/dist/lib/unified-review-executor.d.ts.map +0 -1
- package/dist/lib/unified-review-executor.js +0 -201
- 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 -488
- 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 -277
- 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 -772
- 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,83 +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 { parseReviewOutput } from './review-parser.js';
|
|
7
|
-
import { OUTPUT_PATHS } from './output-paths.js';
|
|
8
|
-
describe('review output path integration', () => {
|
|
9
|
-
let workingDir;
|
|
10
|
-
beforeEach(async () => {
|
|
11
|
-
workingDir = await mkdtemp(join(tmpdir(), 'drs-review-'));
|
|
12
|
-
});
|
|
13
|
-
afterEach(async () => {
|
|
14
|
-
await rm(workingDir, { recursive: true, force: true });
|
|
15
|
-
});
|
|
16
|
-
it('writes review output to deterministic path and reads it', async () => {
|
|
17
|
-
const payload = {
|
|
18
|
-
timestamp: '2024-01-01T00:00:00.000Z',
|
|
19
|
-
summary: {
|
|
20
|
-
filesReviewed: 2,
|
|
21
|
-
issuesFound: 0,
|
|
22
|
-
bySeverity: {
|
|
23
|
-
CRITICAL: 0,
|
|
24
|
-
HIGH: 0,
|
|
25
|
-
MEDIUM: 0,
|
|
26
|
-
LOW: 0,
|
|
27
|
-
},
|
|
28
|
-
byCategory: {
|
|
29
|
-
SECURITY: 0,
|
|
30
|
-
QUALITY: 0,
|
|
31
|
-
STYLE: 0,
|
|
32
|
-
PERFORMANCE: 0,
|
|
33
|
-
DOCUMENTATION: 0,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
issues: [],
|
|
37
|
-
};
|
|
38
|
-
const pointer = await writeJsonOutput({
|
|
39
|
-
outputType: 'review_output',
|
|
40
|
-
payload,
|
|
41
|
-
pretty: false,
|
|
42
|
-
workingDir,
|
|
43
|
-
});
|
|
44
|
-
const expectedPath = join(workingDir, OUTPUT_PATHS.review_output);
|
|
45
|
-
const fileContents = JSON.parse(await readFile(expectedPath, 'utf-8'));
|
|
46
|
-
expect(fileContents).toEqual(payload);
|
|
47
|
-
expect(pointer).toEqual({
|
|
48
|
-
outputType: 'review_output',
|
|
49
|
-
outputPath: OUTPUT_PATHS.review_output,
|
|
50
|
-
});
|
|
51
|
-
const parsed = await parseReviewOutput(workingDir, false, JSON.stringify(pointer));
|
|
52
|
-
expect(parsed).toEqual(payload);
|
|
53
|
-
});
|
|
54
|
-
it('reads review output from default path without pointer', async () => {
|
|
55
|
-
const payload = {
|
|
56
|
-
timestamp: '2024-01-01T00:00:00.000Z',
|
|
57
|
-
summary: {
|
|
58
|
-
filesReviewed: 1,
|
|
59
|
-
issuesFound: 0,
|
|
60
|
-
bySeverity: {
|
|
61
|
-
CRITICAL: 0,
|
|
62
|
-
HIGH: 0,
|
|
63
|
-
MEDIUM: 0,
|
|
64
|
-
LOW: 0,
|
|
65
|
-
},
|
|
66
|
-
byCategory: {
|
|
67
|
-
SECURITY: 0,
|
|
68
|
-
QUALITY: 0,
|
|
69
|
-
STYLE: 0,
|
|
70
|
-
PERFORMANCE: 0,
|
|
71
|
-
DOCUMENTATION: 0,
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
issues: [],
|
|
75
|
-
};
|
|
76
|
-
const expectedPath = join(workingDir, OUTPUT_PATHS.review_output);
|
|
77
|
-
await mkdir(dirname(expectedPath), { recursive: true });
|
|
78
|
-
await writeFile(expectedPath, JSON.stringify(payload), 'utf-8');
|
|
79
|
-
const parsed = await parseReviewOutput(workingDir);
|
|
80
|
-
expect(parsed).toEqual(payload);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
//# sourceMappingURL=review-output-path.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-output-path.test.js","sourceRoot":"","sources":["../../src/lib/review-output-path.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,58 +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
|
-
/** Optional path to output GitLab code quality report JSON */
|
|
30
|
-
codeQualityReport?: string;
|
|
31
|
-
/** Optional path to write JSON results file */
|
|
32
|
-
outputPath?: string;
|
|
33
|
-
/** Output results as JSON to console */
|
|
34
|
-
jsonOutput?: boolean;
|
|
35
|
-
/** Override base branch used for diff command hints */
|
|
36
|
-
baseBranch?: string;
|
|
37
|
-
/** Optional line validator for checking which lines can be commented */
|
|
38
|
-
lineValidator?: LineValidator;
|
|
39
|
-
/** Optional function to create inline comment position data */
|
|
40
|
-
createInlinePosition?: (issue: ReviewIssue, platformData: unknown) => InlineCommentPosition;
|
|
41
|
-
/** Optional Cursor deeplink settings for posted issue comments */
|
|
42
|
-
cursorFixLinks?: CursorFixLinkOptions;
|
|
43
|
-
/** Working directory for file access */
|
|
44
|
-
workingDir?: string;
|
|
45
|
-
/** Generate PR/MR description during review */
|
|
46
|
-
describe?: boolean;
|
|
47
|
-
/** Post generated description during review */
|
|
48
|
-
postDescription?: boolean;
|
|
49
|
-
/** Debug mode - print runtime configuration */
|
|
50
|
-
debug?: boolean;
|
|
51
|
-
/** Reasoning effort level for the model */
|
|
52
|
-
thinkingLevel?: string;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Execute a unified code review for any platform
|
|
56
|
-
*/
|
|
57
|
-
export declare function executeUnifiedReview(config: DRSConfig, options: UnifiedReviewOptions): Promise<void>;
|
|
58
|
-
//# 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,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,CA4Of"}
|
|
@@ -1,201 +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 { 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 ?? 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
|
-
headSha: pr.headSha,
|
|
135
|
-
sourceBranch: pr.sourceBranch,
|
|
136
|
-
targetBranch: pr.targetBranch,
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
// Generate code quality report if requested
|
|
140
|
-
if (options.codeQualityReport) {
|
|
141
|
-
await generateAndWriteCodeQualityReport(result.issues, options.codeQualityReport, options.workingDir ?? process.cwd());
|
|
142
|
-
}
|
|
143
|
-
// Handle JSON output
|
|
144
|
-
const wantsJsonOutput = options.jsonOutput ?? options.outputPath;
|
|
145
|
-
if (wantsJsonOutput) {
|
|
146
|
-
const jsonOutput = formatReviewJson(result.summary, result.issues, {
|
|
147
|
-
source: `${options.prNumber}`,
|
|
148
|
-
project: options.projectId,
|
|
149
|
-
branch: {
|
|
150
|
-
source: pr.sourceBranch,
|
|
151
|
-
target: pr.targetBranch,
|
|
152
|
-
},
|
|
153
|
-
}, result.usage);
|
|
154
|
-
if (options.outputPath) {
|
|
155
|
-
await writeReviewJson(jsonOutput, options.outputPath, options.workingDir ?? process.cwd());
|
|
156
|
-
console.log(chalk.green(`\n✓ Review results written to ${options.outputPath}\n`));
|
|
157
|
-
}
|
|
158
|
-
if (options.jsonOutput) {
|
|
159
|
-
printReviewJson(jsonOutput);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// Exit with error code if critical issues found
|
|
163
|
-
if (result.summary.bySeverity.CRITICAL > 0) {
|
|
164
|
-
console.log(chalk.red.bold('⚠️ Critical issues found!\n'));
|
|
165
|
-
await runtimeClient.shutdown();
|
|
166
|
-
exitProcess(1);
|
|
167
|
-
}
|
|
168
|
-
else if (result.summary.issuesFound === 0) {
|
|
169
|
-
console.log(chalk.green('✓ No issues found! Code looks good.\n'));
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
// Handle "all agents failed" error
|
|
174
|
-
if (error instanceof Error && error.message === 'All review agents failed') {
|
|
175
|
-
if (runtimeClient) {
|
|
176
|
-
await runtimeClient.shutdown();
|
|
177
|
-
}
|
|
178
|
-
exitProcess(1);
|
|
179
|
-
}
|
|
180
|
-
throw error;
|
|
181
|
-
}
|
|
182
|
-
finally {
|
|
183
|
-
// Shutdown runtime client if it was initialized
|
|
184
|
-
if (runtimeClient) {
|
|
185
|
-
await runtimeClient.shutdown();
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Generate and write GitLab code quality report
|
|
191
|
-
*/
|
|
192
|
-
async function generateAndWriteCodeQualityReport(issues, reportPath, workingDir) {
|
|
193
|
-
console.log(chalk.gray('Generating code quality report...\n'));
|
|
194
|
-
const report = generateCodeQualityReport(issues);
|
|
195
|
-
const jsonContent = formatCodeQualityReport(report);
|
|
196
|
-
const fullPath = resolveWithinWorkingDir(workingDir, reportPath, 'write');
|
|
197
|
-
await writeFile(fullPath, jsonContent, 'utf-8');
|
|
198
|
-
console.log(chalk.green(`✓ Code quality report written to ${reportPath}`));
|
|
199
|
-
console.log(chalk.gray(` Total issues: ${report.length}\n`));
|
|
200
|
-
}
|
|
201
|
-
//# 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"}
|