@in-the-loop-labs/pair-review 1.4.3 → 1.5.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/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/skills/review-requests/SKILL.md +54 -0
- package/plugin-code-critic/.claude-plugin/plugin.json +1 -1
- package/public/css/pr.css +1081 -54
- package/public/css/repo-settings.css +452 -140
- package/public/js/components/AdvancedConfigTab.js +1364 -0
- package/public/js/components/AnalysisConfigModal.js +488 -112
- package/public/js/components/CouncilProgressModal.js +1416 -0
- package/public/js/components/TextInputDialog.js +231 -0
- package/public/js/components/TimeoutSelect.js +367 -0
- package/public/js/components/VoiceCentricConfigTab.js +1334 -0
- package/public/js/local.js +162 -83
- package/public/js/modules/analysis-history.js +185 -11
- package/public/js/modules/comment-manager.js +13 -0
- package/public/js/modules/file-comment-manager.js +28 -0
- package/public/js/pr.js +233 -115
- package/public/js/repo-settings.js +575 -106
- package/public/local.html +11 -1
- package/public/pr.html +6 -1
- package/public/repo-settings.html +28 -21
- package/public/setup.html +8 -2
- package/src/ai/analyzer.js +1262 -111
- package/src/ai/claude-cli.js +2 -2
- package/src/ai/claude-provider.js +6 -6
- package/src/ai/codex-provider.js +6 -6
- package/src/ai/copilot-provider.js +3 -3
- package/src/ai/cursor-agent-provider.js +6 -6
- package/src/ai/gemini-provider.js +6 -6
- package/src/ai/opencode-provider.js +6 -6
- package/src/ai/pi-provider.js +6 -6
- package/src/ai/prompts/baseline/consolidation/balanced.js +208 -0
- package/src/ai/prompts/baseline/consolidation/fast.js +175 -0
- package/src/ai/prompts/baseline/consolidation/thorough.js +283 -0
- package/src/ai/prompts/config.js +1 -1
- package/src/ai/prompts/index.js +26 -2
- package/src/ai/provider.js +4 -2
- package/src/database.js +417 -14
- package/src/main.js +1 -1
- package/src/routes/analysis.js +495 -10
- package/src/routes/config.js +36 -15
- package/src/routes/councils.js +351 -0
- package/src/routes/local.js +33 -11
- package/src/routes/mcp.js +9 -2
- package/src/routes/setup.js +12 -2
- package/src/routes/shared.js +126 -13
- package/src/server.js +34 -4
- package/src/utils/stats-calculator.js +2 -0
package/public/local.html
CHANGED
|
@@ -193,6 +193,11 @@
|
|
|
193
193
|
font-style: italic;
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
+
.local-review-name:has(.local-review-name-input) {
|
|
197
|
+
border-color: transparent;
|
|
198
|
+
padding: 0;
|
|
199
|
+
}
|
|
200
|
+
|
|
196
201
|
.local-review-name-input {
|
|
197
202
|
font-family: 'DM Sans', -apple-system, sans-serif;
|
|
198
203
|
font-size: 15px;
|
|
@@ -351,7 +356,7 @@
|
|
|
351
356
|
<span class="progress-dot" data-phase="level1" title="Level 1: Diff"></span>
|
|
352
357
|
<span class="progress-dot" data-phase="level2" title="Level 2: File"></span>
|
|
353
358
|
<span class="progress-dot" data-phase="level3" title="Level 3: Codebase"></span>
|
|
354
|
-
<span class="progress-dot" data-phase="orchestration" title="
|
|
359
|
+
<span class="progress-dot" data-phase="orchestration" title="Consolidation"></span>
|
|
355
360
|
</div>
|
|
356
361
|
<button class="btn btn-sm btn-secondary" id="analyze-btn" title="Analyze with AI">
|
|
357
362
|
<svg class="analyze-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14">
|
|
@@ -480,8 +485,13 @@
|
|
|
480
485
|
<!-- Components -->
|
|
481
486
|
<script src="/js/components/Toast.js"></script>
|
|
482
487
|
<script src="/js/components/ConfirmDialog.js"></script>
|
|
488
|
+
<script src="/js/components/TextInputDialog.js"></script>
|
|
483
489
|
<script src="/js/components/ProgressModal.js"></script>
|
|
484
490
|
<script src="/js/components/AnalysisConfigModal.js"></script>
|
|
491
|
+
<script src="/js/components/TimeoutSelect.js"></script>
|
|
492
|
+
<script src="/js/components/VoiceCentricConfigTab.js"></script>
|
|
493
|
+
<script src="/js/components/AdvancedConfigTab.js"></script>
|
|
494
|
+
<script src="/js/components/CouncilProgressModal.js"></script>
|
|
485
495
|
<script src="/js/components/StatusIndicator.js"></script>
|
|
486
496
|
<script src="/js/components/SuggestionNavigator.js"></script>
|
|
487
497
|
<script src="/js/components/ReviewModal.js"></script>
|
package/public/pr.html
CHANGED
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
<span class="progress-dot" data-phase="level1" title="Level 1: Diff"></span>
|
|
180
180
|
<span class="progress-dot" data-phase="level2" title="Level 2: File"></span>
|
|
181
181
|
<span class="progress-dot" data-phase="level3" title="Level 3: Codebase"></span>
|
|
182
|
-
<span class="progress-dot" data-phase="orchestration" title="
|
|
182
|
+
<span class="progress-dot" data-phase="orchestration" title="Consolidation"></span>
|
|
183
183
|
</div>
|
|
184
184
|
<button class="btn btn-sm btn-secondary" id="analyze-btn" title="Analyze with AI">
|
|
185
185
|
<svg class="analyze-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14">
|
|
@@ -308,8 +308,13 @@
|
|
|
308
308
|
<!-- Components -->
|
|
309
309
|
<script src="/js/components/Toast.js"></script>
|
|
310
310
|
<script src="/js/components/ConfirmDialog.js"></script>
|
|
311
|
+
<script src="/js/components/TextInputDialog.js"></script>
|
|
311
312
|
<script src="/js/components/ProgressModal.js"></script>
|
|
312
313
|
<script src="/js/components/AnalysisConfigModal.js"></script>
|
|
314
|
+
<script src="/js/components/TimeoutSelect.js"></script>
|
|
315
|
+
<script src="/js/components/VoiceCentricConfigTab.js"></script>
|
|
316
|
+
<script src="/js/components/AdvancedConfigTab.js"></script>
|
|
317
|
+
<script src="/js/components/CouncilProgressModal.js"></script>
|
|
313
318
|
<script src="/js/components/StatusIndicator.js"></script>
|
|
314
319
|
<script src="/js/components/SuggestionNavigator.js"></script>
|
|
315
320
|
<script src="/js/components/ReviewModal.js"></script>
|
|
@@ -90,33 +90,40 @@
|
|
|
90
90
|
|
|
91
91
|
<!-- Settings Form -->
|
|
92
92
|
<form class="settings-form" id="settings-form">
|
|
93
|
-
<!-- Default
|
|
94
|
-
<section class="settings-section">
|
|
93
|
+
<!-- Default Analysis Configuration -->
|
|
94
|
+
<section class="settings-section settings-section--has-card">
|
|
95
95
|
<div class="section-header">
|
|
96
|
-
<h2>
|
|
97
|
-
Default AI Provider
|
|
98
|
-
</h2>
|
|
96
|
+
<h2>Default Analysis Configuration</h2>
|
|
99
97
|
<p class="section-description">
|
|
100
|
-
|
|
98
|
+
Choose how AI analysis runs by default for this repository.
|
|
101
99
|
</p>
|
|
102
100
|
</div>
|
|
103
|
-
<div class="
|
|
104
|
-
<!--
|
|
101
|
+
<div class="settings-model-card-preview" id="model-card-preview">
|
|
102
|
+
<!-- Rendered dynamically by JS -->
|
|
105
103
|
</div>
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
<section class="settings-section">
|
|
110
|
-
<div class="section-header">
|
|
111
|
-
<h2>
|
|
112
|
-
Default Model
|
|
113
|
-
</h2>
|
|
114
|
-
<p class="section-description">
|
|
115
|
-
This model will be pre-selected when starting analysis on any PR in this repository.
|
|
116
|
-
</p>
|
|
104
|
+
<div class="analysis-mode-toggle" id="analysis-mode-toggle">
|
|
105
|
+
<button type="button" class="mode-btn selected" data-mode="single">Single Model</button>
|
|
106
|
+
<button type="button" class="mode-btn" data-mode="council">Review Council</button>
|
|
117
107
|
</div>
|
|
118
|
-
<div class="
|
|
119
|
-
<!--
|
|
108
|
+
<div class="analysis-mode-content" id="analysis-mode-content">
|
|
109
|
+
<!-- Single model content -->
|
|
110
|
+
<div class="mode-panel" id="mode-panel-single">
|
|
111
|
+
<div class="settings-model-row">
|
|
112
|
+
<div class="settings-select-group">
|
|
113
|
+
<label class="subsection-label">Provider</label>
|
|
114
|
+
<select class="settings-select" id="provider-select"></select>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="settings-select-group settings-select-group-grow">
|
|
117
|
+
<label class="subsection-label">Model</label>
|
|
118
|
+
<select class="settings-select" id="model-select"></select>
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
<!-- Council content -->
|
|
123
|
+
<div class="mode-panel" id="mode-panel-council" style="display: none;">
|
|
124
|
+
<label class="subsection-label">Council Preset</label>
|
|
125
|
+
<div id="default-council-dropdown" class="custom-dropdown"></div>
|
|
126
|
+
</div>
|
|
120
127
|
</div>
|
|
121
128
|
<p class="model-hint">
|
|
122
129
|
<svg width="14" height="14" viewBox="0 0 16 16" fill="currentColor">
|
package/public/setup.html
CHANGED
|
@@ -754,7 +754,10 @@
|
|
|
754
754
|
|
|
755
755
|
// If the review already exists, redirect immediately
|
|
756
756
|
if (data.existing && data.reviewUrl) {
|
|
757
|
-
|
|
757
|
+
var targetUrl = new URL(data.reviewUrl, window.location.origin);
|
|
758
|
+
var qs = new URLSearchParams(window.location.search);
|
|
759
|
+
if (qs.get('analyze') === 'true') targetUrl.searchParams.set('analyze', qs.get('analyze'));
|
|
760
|
+
window.location.href = targetUrl.toString();
|
|
758
761
|
return;
|
|
759
762
|
}
|
|
760
763
|
|
|
@@ -819,7 +822,10 @@
|
|
|
819
822
|
// Small delay so the user sees the completed state
|
|
820
823
|
setTimeout(function() {
|
|
821
824
|
if (payload.reviewUrl) {
|
|
822
|
-
|
|
825
|
+
var targetUrl = new URL(payload.reviewUrl, window.location.origin);
|
|
826
|
+
var qs = new URLSearchParams(window.location.search);
|
|
827
|
+
if (qs.get('analyze') === 'true') targetUrl.searchParams.set('analyze', qs.get('analyze'));
|
|
828
|
+
window.location.href = targetUrl.toString();
|
|
823
829
|
}
|
|
824
830
|
}, 400);
|
|
825
831
|
} catch (err) {
|