@su-record/vibe 2.6.8 → 2.6.9

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/README.md CHANGED
@@ -40,7 +40,7 @@ vibe init
40
40
  | `/vibe.run "feature" ultrawork` | Maximum performance mode |
41
41
  | `/vibe.verify "feature"` | BDD verification |
42
42
  | `/vibe.trace "feature"` | Requirements traceability matrix (v2.6) |
43
- | `/vibe.review` | 13+ agent parallel review |
43
+ | `/vibe.review` | 13+ agent parallel review (`--race` for GPT+Gemini) |
44
44
  | `/vibe.analyze` | Code analysis |
45
45
  | `/vibe.reason "problem"` | Systematic reasoning |
46
46
  | `/vibe.utils --ui` | UI preview (Gemini image / ASCII fallback) |
@@ -58,6 +58,7 @@ vibe init
58
58
 
59
59
  | Feature | Description |
60
60
  |---------|-------------|
61
+ | **Race Review (v2.6.9)** | GPT + Gemini parallel review with cross-validation |
61
62
  | **Fire-and-Forget Agents (v2.6)** | Non-blocking background execution with instant handle return |
62
63
  | **Phase Pipelining (v2.6)** | Prepare next phase during current execution |
63
64
  | **PRD-to-SPEC Automation (v2.6)** | Auto-generate SPEC from PRD documents |
@@ -274,6 +275,46 @@ During `/vibe.spec`, research agents use **3 LLM perspectives** for quality assu
274
275
 
275
276
  > vibe = Quality Assurance Framework
276
277
 
278
+ ## Race Review (v2.6.9)
279
+
280
+ **Multi-LLM competitive review** - Same task runs on GPT + Gemini in parallel, results cross-validated:
281
+
282
+ ```bash
283
+ /vibe.review --race # All review types
284
+ /vibe.review --race security # Security only
285
+ ```
286
+
287
+ **Cross-validation confidence:**
288
+
289
+ | Agreement | Priority | Action |
290
+ |-------------------|----------|-------------------------|
291
+ | Both agree (100%) | P1 | High confidence finding |
292
+ | One model (50%) | P2 | Needs verification |
293
+
294
+ **Output:**
295
+
296
+ ```text
297
+ 🏁 RACE REVIEW
298
+ ├─ GPT: [SQL injection, XSS]
299
+ └─ Gemini: [SQL injection, CSRF]
300
+ ↓
301
+ Cross-validation:
302
+ - SQL injection (2/2) → 🔴 P1 (100%)
303
+ - XSS (1/2) → 🟡 P2 (50%)
304
+ - CSRF (1/2) → 🟡 P2 (50%)
305
+ ```
306
+
307
+ **ULTRAWORK default:** Race review is automatically enabled in ULTRAWORK mode.
308
+
309
+ **API usage:**
310
+
311
+ ```javascript
312
+ import('@su-record/vibe/tools').then(t =>
313
+ t.raceReview({ reviewType: 'security', code: 'CODE' })
314
+ .then(r => console.log(t.formatRaceResult(r)))
315
+ )
316
+ ```
317
+
277
318
  ## Parallel Review Agents
278
319
 
279
320
  `/vibe.review` runs 13+ agents concurrently:
@@ -14,6 +14,92 @@ argument-hint: "PR number, branch name, or file path"
14
14
  /vibe.review PR#123 # Review specific PR
15
15
  /vibe.review feature/login # Review specific branch
16
16
  /vibe.review src/api/ # Review specific path
17
+ /vibe.review --race # Multi-LLM race mode (GPT + Gemini)
18
+ /vibe.review --race security # Race mode for specific review type
19
+ ```
20
+
21
+ ## Race Mode (v2.6.9)
22
+
23
+ **Multi-LLM competitive review** - Same review task runs on GPT + Gemini in parallel, results are cross-validated.
24
+
25
+ ### How It Works
26
+
27
+ ```
28
+ /vibe.review --race
29
+
30
+ security-review:
31
+ ├─ GPT-5.2-Codex → [SQL injection, XSS]
32
+ └─ Gemini-3-Flash → [SQL injection, CSRF]
33
+ ↓
34
+ Cross-validation:
35
+ - SQL injection (2/2) → 🔴 P1 (100% confidence)
36
+ - XSS (1/2) → 🟡 P2 (50% confidence)
37
+ - CSRF (1/2) → 🟡 P2 (50% confidence)
38
+ ```
39
+
40
+ ### Confidence-Based Priority
41
+
42
+ | Confidence | Priority | Meaning |
43
+ |------------|----------|---------|
44
+ | 100% (2/2) | P1 | Both models agree - high confidence |
45
+ | 50% (1/2) | P2 | One model found - needs verification |
46
+
47
+ ### Race Mode Options
48
+
49
+ ```
50
+ /vibe.review --race # All review types
51
+ /vibe.review --race security # Security only
52
+ /vibe.review --race performance # Performance only
53
+ /vibe.review --race architecture # Architecture only
54
+ ```
55
+
56
+ ### Race Mode Output
57
+
58
+ ```
59
+ ## SECURITY Review (Race Mode)
60
+
61
+ **Duration**: 3420ms
62
+ **Models**: GPT-5.2-Codex, Gemini-3-Flash
63
+
64
+ ### Model Results
65
+
66
+ | Model | Issues Found | Duration | Status |
67
+ |-------|--------------|----------|--------|
68
+ | gpt | 3 | 1823ms | OK |
69
+ | gemini | 2 | 2156ms | OK |
70
+
71
+ ### Cross-Validated Issues
72
+
73
+ **Summary**: 4 issues (P1: 1, P2: 2, P3: 1)
74
+ **Consensus Rate**: 75%
75
+
76
+ #### 🔴 P1 - SQL Injection in user query
77
+
78
+ - **Confidence**: 100% (gpt, gemini)
79
+ - **Severity**: critical
80
+ - **Location**: `src/api/users.ts:42`
81
+ - **Suggestion**: Use parameterized queries
82
+
83
+ #### 🟡 P2 - XSS vulnerability in render
84
+
85
+ - **Confidence**: 50% (gpt)
86
+ - **Severity**: high
87
+ - **Location**: `src/components/Comment.tsx:15`
88
+ ```
89
+
90
+ ### When to Use Race Mode
91
+
92
+ | Scenario | Recommended |
93
+ |----------|-------------|
94
+ | Critical security review | ✅ `--race security` |
95
+ | Pre-production audit | ✅ `--race` |
96
+ | Quick iteration | ❌ Standard review |
97
+ | API cost concerns | ❌ Standard review |
98
+
99
+ ### Tool Invocation (Race Mode)
100
+
101
+ ```bash
102
+ node -e "import('@su-record/vibe/lib/ReviewRace').then(r => r.raceReview({reviewType: 'security', code: 'CODE_HERE'}).then(res => console.log(r.formatRaceResult(res))))"
17
103
  ```
18
104
 
19
105
  ## Priority System
@@ -122,6 +122,7 @@ When you include `ultrawork` (or `ulw`), ALL of these activate automatically:
122
122
  | **No Pause** | Doesn't wait for confirmation between phases |
123
123
  | **External LLMs** | Auto-consults GPT/Gemini if enabled |
124
124
  | **Error Recovery** | Auto-retries on failure (up to 3 times) |
125
+ | **Race Review (v2.6.9)** | Multi-LLM review (GPT+Gemini) with cross-validation |
125
126
 
126
127
  ### Boulder Loop (Inspired by Sisyphus)
127
128
 
@@ -864,83 +865,76 @@ node hooks/scripts/generate-brand-assets.js \
864
865
 
865
866
  ---
866
867
 
867
- ### 5. Gemini Code Review + Auto-Fix
868
+ ### 5. Race Code Review (GPT + Gemini) + Auto-Fix (v2.6.9)
868
869
 
869
- After all scenarios are implemented, **Gemini reviews the code and auto-fixes based on feedback**:
870
+ After all scenarios are implemented, **GPT and Gemini review in parallel with cross-validation**:
871
+
872
+ > **ULTRAWORK Default**: In ULTRAWORK mode, race review is automatically enabled.
870
873
 
871
874
  ```
872
875
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
873
- 🔍 GEMINI CODE REVIEW
876
+ 🏁 RACE CODE REVIEW (GPT + Gemini)
874
877
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
875
878
 
876
- [Step 1] Sending implementation code to Gemini...
877
- - Changed files: auth.service.ts, auth.controller.ts, ...
878
-
879
- [Step 2] Gemini review results:
880
- ┌─────────────────────────────────────────────────────┐
881
- │ 📝 Gemini Feedback │
882
- │ │
883
- │ 1. [Improvement] auth.service.ts:24 │
884
- │ Need timing attack prevention for password compare│
885
- │ → Recommend using crypto.timingSafeEqual() │
886
- │ │
887
- │ 2. [Improvement] auth.controller.ts:15 │
888
- │ Rate limiting not applied │
889
- │ → Recommend adding login attempt limit │
890
- │ │
891
- │ 3. [Style] auth.service.ts:42 │
892
- │ Magic number usage │
893
- │ → Recommend extracting to constant │
894
- └─────────────────────────────────────────────────────┘
895
-
896
- [Step 3] Auto-fixing based on feedback...
897
- ✅ auth.service.ts:24 - Applied timingSafeEqual
898
- ✅ auth.controller.ts:15 - Added rate limiter
899
- ✅ auth.service.ts:42 - Extracted constant
879
+ [Step 1] Parallel review execution...
880
+ ├─ GPT-5.2-Codex: Reviewing...
881
+ └─ Gemini-3-Flash: Reviewing...
882
+
883
+ [Step 2] Cross-validation results:
884
+ ┌───────────────────────────────────────────────────────────┐
885
+ │ Issue │ GPT │ Gemini │ Confidence│
886
+ │────────────────────────────────│─────│────────│───────────│
887
+ │ Timing attack in password │ ✅ │ ✅ │ 100% → P1 │
888
+ │ Rate limiting missing │ ✅ │ ✅ │ 100% → P1 │
889
+ │ Magic number usage │ ✅ │ ❌ │ 50% → P2 │
890
+ └───────────────────────────────────────────────────────────┘
891
+
892
+ Summary: 3 issues (P1: 2, P2: 1)
893
+
894
+ [Step 3] Auto-fixing P1/P2 issues...
895
+ ✅ auth.service.ts:24 - Applied timingSafeEqual (P1)
896
+ ✅ auth.controller.ts:15 - Added rate limiter (P1)
897
+ ✅ auth.service.ts:42 - Extracted constant (P2)
900
898
 
901
899
  [Step 4] Re-verifying...
902
900
  ✅ Build succeeded
903
901
  ✅ Tests passed
904
902
 
905
903
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
906
- ✅ Gemini review complete! 3 improvements applied
904
+ ✅ Race review complete! 3 improvements (2 P1, 1 P2)
907
905
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
908
906
  ```
909
907
 
910
- **MUST: Gemini Code Review (Required)**
911
-
912
- When Gemini is enabled, **must** use global hook script for code review:
908
+ **Race Review Invocation:**
913
909
 
914
910
  ```bash
915
- # Cross-platform path (works on Windows/macOS/Linux)
916
- VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
917
-
918
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "Review this code for security, performance, best-practices: [code summary]. SPEC: [summary]. Scenarios: [list]"
911
+ # Via vibe tools
912
+ node -e "import('@su-record/vibe/tools').then(t => t.raceReview({reviewType: 'security', code: '[code]'}).then(r => console.log(t.formatRaceResult(r))))"
919
913
  ```
920
914
 
921
- **Call sequence:**
922
- 1. Summarize key content of changed files
923
- 2. Add SPEC requirements summary
924
- 3. Execute global script call
925
- 4. Fix code for each feedback item in response
926
- 5. Re-run build/tests
915
+ **Confidence-based Priority:**
916
+
917
+ | Confidence | Priority | Action |
918
+ |------------|----------|--------|
919
+ | 100% (2/2) | P1 | Auto-fix immediately |
920
+ | 50% (1/2) | P2 | Auto-fix with review |
927
921
 
928
922
  **Fallback handling:**
929
- - On `"status": "fallback"` response → Skip and proceed to next step
930
- - On network error → Retry once, then skip
923
+ - If one LLM fails → Use single LLM result (reduced confidence)
924
+ - If both fail → Skip and proceed (log warning)
931
925
 
932
926
  **Review application rules:**
933
927
 
934
928
  | Feedback Type | Action |
935
929
  |---------------|--------|
936
- | Security vulnerability | Auto-fix immediately |
937
- | Performance improvement | Auto-fix immediately |
938
- | Best practices | Auto-fix |
939
- | Style/preference | Apply selectively (project convention takes priority) |
930
+ | Security vulnerability (P1) | Auto-fix immediately |
931
+ | Performance improvement (P1/P2) | Auto-fix immediately |
932
+ | Best practices (P2) | Auto-fix |
933
+ | Style/preference (P3) | Apply selectively |
940
934
 
941
935
  **Conditions:**
942
- - Only runs when Gemini MCP is enabled (`vibe gemini auth`)
943
- - Skip and proceed on fallback response
936
+ - **ULTRAWORK**: Race review enabled by default
937
+ - **Normal mode**: Use `--race` flag to enable
944
938
  - Must re-verify build/tests after fixes
945
939
 
946
940
  ### 6. Quality Report (Auto-generated)
@@ -150,82 +150,101 @@ Score: 96/100 ✅ PASSED
150
150
 
151
151
  ---
152
152
 
153
- ## Step 3: GPT/Gemini Review (3-Round Mandatory)
153
+ ## Step 3: Race Review (GPT + Gemini Cross-Validation) - 3 Rounds (v2.6.9)
154
154
 
155
- **🚨 CRITICAL: Execute ALL 3 rounds. DO NOT skip.**
155
+ **🚨 CRITICAL: Execute ALL 3 rounds with cross-validation. DO NOT skip.**
156
156
 
157
- ### 3.1 Path Configuration
157
+ > Race Mode reviews SPEC with both GPT and Gemini in parallel, then cross-validates findings for higher confidence.
158
158
 
159
- **🚨 MANDATORY: Copy the EXACT path below. DO NOT modify or use alternative paths.**
159
+ ### 3.1 Race Review Invocation
160
160
 
161
161
  ```bash
162
- # Cross-platform path (works on Windows/macOS/Linux)
163
- # âš ī¸ COPY THIS EXACTLY - DO NOT USE ~/.claude/ or any other path!
164
- VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
162
+ # Via vibe tools (recommended)
163
+ node -e "import('@su-record/vibe/tools').then(t => t.raceReview({reviewType: 'general', code: '[SPEC content]', context: 'SPEC review round N/3'}).then(r => console.log(t.formatRaceResult(r))))"
165
164
  ```
166
165
 
167
- ### 3.2 Review Loop (3 Rounds)
166
+ ### 3.2 Review Loop (3 Rounds with Cross-Validation)
168
167
 
169
168
  For each round (1 to 3):
170
169
 
171
- **Run GPT and Gemini in PARALLEL (2 Bash calls simultaneously):**
170
+ **Run GPT and Gemini in PARALLEL with cross-validation:**
171
+
172
+ ```javascript
173
+ // Race review - both models run simultaneously
174
+ import('@su-record/vibe/tools').then(async t => {
175
+ const result = await t.raceReview({
176
+ reviewType: 'general',
177
+ code: specContent,
178
+ context: `SPEC review for ${featureName}. Stack: ${stack}. Round ${N}/3.`
179
+ });
180
+ console.log(t.formatRaceResult(result));
181
+ });
182
+ ```
172
183
 
173
- ```bash
174
- # GPT review
175
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gpt orchestrate-json "Review SPEC for {feature-name}. Stack: {stack}. Summary: {spec-summary}. Round {N}/3. Check: completeness, error handling, security, edge cases, performance."
184
+ **Cross-validation rules:**
176
185
 
177
- # Gemini review
178
- node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "Review SPEC for {feature-name}. Stack: {stack}. Summary: {spec-summary}. Round {N}/3. Check: completeness, error handling, security, edge cases, performance."
179
- ```
186
+ | Agreement | Priority | Action |
187
+ |-----------|----------|--------|
188
+ | Both agree (100%) | P1 | Auto-apply immediately |
189
+ | One model (50%) | P2 | Auto-apply with note |
180
190
 
181
191
  **After each round:**
182
- 1. Parse JSON responses from both GPT and Gemini
183
- 2. Merge feedback (deduplicate, prioritize)
184
- 3. Auto-apply improvements to SPEC and Feature files
192
+
193
+ 1. Cross-validate findings (issues found by both → P1, single model → P2)
194
+ 2. Merge feedback with confidence scores
195
+ 3. Auto-apply P1/P2 improvements to SPEC and Feature files
185
196
  4. Continue to next round
186
197
 
187
198
  **Output format:**
188
199
  ```
189
200
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
190
- 🔍 SPEC REVIEW - Round 1/3
201
+ 🏁 SPEC RACE REVIEW - Round 1/3
191
202
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
192
- [GPT] 2 issues found:
193
- 1. Missing retry logic for API calls
194
- 2. Token refresh flow not specified
195
203
 
196
- [Gemini] 1 issue found:
197
- 1. Missing rate limiting specification
204
+ Model Results:
205
+ | Model | Issues | Duration |
206
+ |--------|--------|----------|
207
+ | GPT | 2 | 1823ms |
208
+ | Gemini | 2 | 2156ms |
209
+
210
+ Cross-Validated Issues:
211
+ | Issue | GPT | Gemini | Confidence |
212
+ |--------------------------|-----|--------|------------|
213
+ | Missing retry logic | ✅ | ✅ | 100% → P1 |
214
+ | Missing rate limiting | ✅ | ✅ | 100% → P1 |
215
+ | Token refresh unclear | ✅ | ❌ | 50% → P2 |
198
216
 
199
- Merged: 3 unique issues
200
217
  Auto-applying...
201
- ✅ Added retry logic (3 attempts, exponential backoff)
202
- ✅ Added token refresh flow to auth section
203
- ✅ Added rate limiting (100 req/min)
218
+ ✅ [P1] Added retry logic (3 attempts, exponential backoff)
219
+ ✅ [P1] Added rate limiting (100 req/min)
220
+ ✅ [P2] Added token refresh flow
204
221
 
205
- ✅ Round 1 complete - 3 improvements applied
222
+ ✅ Round 1 complete - 3 improvements (2 P1, 1 P2)
206
223
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
207
224
 
208
225
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
209
- 🔍 SPEC REVIEW - Round 2/3
226
+ 🏁 SPEC RACE REVIEW - Round 2/3
210
227
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
211
- [GPT] 1 issue found:
212
- 1. Concurrent session handling unclear
213
228
 
214
- [Gemini] 0 issues found
229
+ Cross-Validated Issues:
230
+ | Issue | GPT | Gemini | Confidence |
231
+ |-----------------------------|-----|--------|------------|
232
+ | Concurrent session unclear | ✅ | ❌ | 50% → P2 |
215
233
 
216
234
  Auto-applying...
217
- ✅ Added concurrent session policy
235
+ ✅ [P2] Added concurrent session policy
218
236
 
219
- ✅ Round 2 complete - 1 improvement applied
237
+ ✅ Round 2 complete - 1 improvement
220
238
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
221
239
 
222
240
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
223
- 🔍 SPEC REVIEW - Round 3/3
241
+ 🏁 SPEC RACE REVIEW - Round 3/3
224
242
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
225
- [GPT] 0 issues found
226
- [Gemini] 0 issues found
243
+
244
+ Cross-Validated Issues: None
227
245
 
228
246
  ✅ No changes needed - SPEC is complete
247
+ ✅ Consensus Rate: 100%
229
248
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
230
249
  ```
231
250
 
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Multi-LLM Race Review
3
+ *
4
+ * ę°™ė€ ëĻŦ롰 ėž‘ė—…ė„ Claude + GPT + Gemini가 ëŗ‘ë Ŧ로 ėˆ˜í–‰í•˜ęŗ 
5
+ * ęĩė°¨ 검ėĻí•˜ė—Ŧ ė‹ ëĸ°ë„ 기반 ėš°ė„ ėˆœėœ„ëĨŧ ëļ€ė—Ŧ합니다.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { raceReview, formatRaceResult } from '@su-record/vibe/lib/ReviewRace';
10
+ *
11
+ * const result = await raceReview({
12
+ * reviewType: 'security',
13
+ * code: diffContent,
14
+ * context: 'Authentication module changes',
15
+ * });
16
+ *
17
+ * console.log(formatRaceResult(result));
18
+ * ```
19
+ */
20
+ export type LLMProvider = 'claude' | 'gpt' | 'gemini';
21
+ export type Priority = 'P1' | 'P2' | 'P3';
22
+ export type ReviewType = 'security' | 'performance' | 'architecture' | 'complexity' | 'data-integrity' | 'test-coverage' | 'general';
23
+ export interface ReviewIssue {
24
+ id: string;
25
+ title: string;
26
+ description: string;
27
+ location?: string;
28
+ severity: 'critical' | 'high' | 'medium' | 'low';
29
+ suggestion?: string;
30
+ }
31
+ export interface LLMReviewResult {
32
+ provider: LLMProvider;
33
+ issues: ReviewIssue[];
34
+ duration: number;
35
+ error?: string;
36
+ }
37
+ export interface CrossValidatedIssue {
38
+ issue: ReviewIssue;
39
+ foundBy: LLMProvider[];
40
+ confidence: number;
41
+ priority: Priority;
42
+ consensusTitle: string;
43
+ }
44
+ export interface RaceReviewResult {
45
+ reviewType: ReviewType;
46
+ llmResults: LLMReviewResult[];
47
+ crossValidated: CrossValidatedIssue[];
48
+ summary: {
49
+ totalIssues: number;
50
+ p1Count: number;
51
+ p2Count: number;
52
+ p3Count: number;
53
+ consensusRate: number;
54
+ };
55
+ duration: number;
56
+ }
57
+ export interface RaceReviewOptions {
58
+ reviewType: ReviewType;
59
+ code: string;
60
+ context?: string;
61
+ includeClaudeSubagent?: boolean;
62
+ }
63
+ /**
64
+ * Multi-LLM Race Review ėˆ˜í–‰
65
+ *
66
+ * GPT + GeminiëĨŧ ëŗ‘ë Ŧ로 ė‹¤í–‰í•˜ęŗ  결ęŗŧëĨŧ ęĩė°¨ 검ėĻí•Šë‹ˆë‹¤.
67
+ * Claude는 현ėžŦ ė„¸ė…˜ė—ė„œ ė‹¤í–‰ ė¤‘ė´ë¯€ëĄœ ëŗ„ë„ė˜ ė„œë¸Œė—ė´ė „íŠ¸ëĄœ 호ėļœëŠë‹ˆë‹¤.
68
+ */
69
+ export declare function raceReview(options: RaceReviewOptions): Promise<RaceReviewResult>;
70
+ /**
71
+ * Race Review 결ęŗŧëĨŧ 마íŦë‹¤ėš´ėœŧ로 íŦ맡
72
+ */
73
+ export declare function formatRaceResult(result: RaceReviewResult): string;
74
+ /**
75
+ * LLM ę°€ėšŠė„ą í™•ė¸
76
+ */
77
+ export declare function checkLLMAvailability(): Promise<{
78
+ gpt: boolean;
79
+ gemini: boolean;
80
+ }>;
81
+ export type { ReviewIssue as RaceReviewIssue, LLMReviewResult as RaceLLMResult, CrossValidatedIssue as RaceCrossValidatedIssue, };
82
+ //# sourceMappingURL=ReviewRace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewRace.d.ts","sourceRoot":"","sources":["../../src/lib/ReviewRace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AASH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,MAAM,UAAU,GAClB,UAAU,GACV,aAAa,GACb,cAAc,GACd,YAAY,GACZ,gBAAgB,GAChB,eAAe,GACf,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AA6XD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmCtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAkDjE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IACpD,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC,CAUD;AAGD,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,aAAa,EAChC,mBAAmB,IAAI,uBAAuB,GAC/C,CAAC"}
@@ -0,0 +1,446 @@
1
+ /**
2
+ * Multi-LLM Race Review
3
+ *
4
+ * ę°™ė€ ëĻŦ롰 ėž‘ė—…ė„ Claude + GPT + Gemini가 ëŗ‘ë Ŧ로 ėˆ˜í–‰í•˜ęŗ 
5
+ * ęĩė°¨ 검ėĻí•˜ė—Ŧ ė‹ ëĸ°ë„ 기반 ėš°ė„ ėˆœėœ„ëĨŧ ëļ€ė—Ŧ합니다.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { raceReview, formatRaceResult } from '@su-record/vibe/lib/ReviewRace';
10
+ *
11
+ * const result = await raceReview({
12
+ * reviewType: 'security',
13
+ * code: diffContent,
14
+ * context: 'Authentication module changes',
15
+ * });
16
+ *
17
+ * console.log(formatRaceResult(result));
18
+ * ```
19
+ */
20
+ import * as gptApi from './gpt-api.js';
21
+ import * as geminiApi from './gemini-api.js';
22
+ // ============================================================================
23
+ // Constants
24
+ // ============================================================================
25
+ const REVIEW_PROMPTS = {
26
+ security: `You are a security expert reviewing code changes.
27
+ Identify security vulnerabilities including:
28
+ - SQL injection, XSS, CSRF
29
+ - Authentication/authorization flaws
30
+ - Sensitive data exposure
31
+ - Insecure dependencies
32
+ - OWASP Top 10 issues
33
+
34
+ For each issue found, respond in this exact JSON format:
35
+ {
36
+ "issues": [
37
+ {
38
+ "id": "SEC-001",
39
+ "title": "Brief title",
40
+ "description": "Detailed description",
41
+ "location": "file.ts:42",
42
+ "severity": "critical|high|medium|low",
43
+ "suggestion": "How to fix"
44
+ }
45
+ ]
46
+ }
47
+
48
+ If no issues found, respond: {"issues": []}`,
49
+ performance: `You are a performance expert reviewing code changes.
50
+ Identify performance issues including:
51
+ - N+1 queries
52
+ - Memory leaks
53
+ - Unnecessary re-renders
54
+ - Blocking operations
55
+ - Large bundle size impacts
56
+ - Missing caching opportunities
57
+
58
+ Respond in JSON format:
59
+ {
60
+ "issues": [
61
+ {
62
+ "id": "PERF-001",
63
+ "title": "Brief title",
64
+ "description": "Detailed description",
65
+ "location": "file.ts:42",
66
+ "severity": "critical|high|medium|low",
67
+ "suggestion": "How to fix"
68
+ }
69
+ ]
70
+ }`,
71
+ architecture: `You are an architecture expert reviewing code changes.
72
+ Identify architecture issues including:
73
+ - Circular dependencies
74
+ - Layer violations (e.g., UI calling DB directly)
75
+ - Missing abstractions
76
+ - Tight coupling
77
+ - Single Responsibility violations
78
+ - DRY violations
79
+
80
+ Respond in JSON format with issues array.`,
81
+ complexity: `You are a code quality expert reviewing complexity.
82
+ Identify complexity issues including:
83
+ - Functions > 30 lines
84
+ - Nesting depth > 3 levels
85
+ - Cyclomatic complexity > 10
86
+ - Too many parameters (> 5)
87
+ - Long files (> 300 lines)
88
+
89
+ Respond in JSON format with issues array.`,
90
+ 'data-integrity': `You are a data integrity expert reviewing code changes.
91
+ Identify data integrity issues including:
92
+ - Missing validations
93
+ - Race conditions
94
+ - Inconsistent state handling
95
+ - Missing error handling
96
+ - Data loss scenarios
97
+
98
+ Respond in JSON format with issues array.`,
99
+ 'test-coverage': `You are a testing expert reviewing code changes.
100
+ Identify missing test coverage including:
101
+ - Untested edge cases
102
+ - Missing error case tests
103
+ - Missing integration tests
104
+ - Untested business logic
105
+
106
+ Respond in JSON format with issues array.`,
107
+ general: `You are a senior code reviewer.
108
+ Review this code for any issues including security, performance, maintainability, and best practices.
109
+
110
+ Respond in JSON format with issues array.`,
111
+ };
112
+ // ============================================================================
113
+ // Helper Functions
114
+ // ============================================================================
115
+ /**
116
+ * ė´ėŠˆ IDė—ė„œ ėˆĢėž ėļ”ėļœ
117
+ */
118
+ function extractIssueNumber(id) {
119
+ const match = id.match(/\d+/);
120
+ return match ? parseInt(match[0], 10) : 0;
121
+ }
122
+ /**
123
+ * 두 ė´ėŠˆę°€ 뜠ė‚Ŧí•œė§€ 판단 (렜ëĒŠ/네ëĒ… 기반)
124
+ */
125
+ function areIssuesSimilar(a, b) {
126
+ // 1. ėœ„ėš˜ę°€ 같ėœŧ늴 뜠ė‚Ŧ
127
+ if (a.location && b.location && a.location === b.location) {
128
+ return true;
129
+ }
130
+ // 2. 렜ëĒŠ 뜠ė‚Ŧ도 (Jaccard similarity)
131
+ const aWords = new Set(a.title.toLowerCase().split(/\s+/));
132
+ const bWords = new Set(b.title.toLowerCase().split(/\s+/));
133
+ const intersection = new Set([...aWords].filter(x => bWords.has(x)));
134
+ const union = new Set([...aWords, ...bWords]);
135
+ const similarity = intersection.size / union.size;
136
+ if (similarity > 0.5)
137
+ return true;
138
+ // 3. 네ëĒ…ė—ė„œ í‚¤ė›Œë“œ ë§¤ėš­
139
+ const aDesc = a.description.toLowerCase();
140
+ const bDesc = b.description.toLowerCase();
141
+ // ęŗĩí†ĩ ëŗ´ė•ˆ í‚¤ė›Œë“œ
142
+ const keywords = ['injection', 'xss', 'csrf', 'auth', 'leak', 'overflow', 'validation', 'null', 'undefined'];
143
+ const aKeywords = keywords.filter(k => aDesc.includes(k));
144
+ const bKeywords = keywords.filter(k => bDesc.includes(k));
145
+ if (aKeywords.length > 0 && bKeywords.length > 0) {
146
+ const commonKeywords = aKeywords.filter(k => bKeywords.includes(k));
147
+ if (commonKeywords.length > 0)
148
+ return true;
149
+ }
150
+ return false;
151
+ }
152
+ /**
153
+ * JSON íŒŒė‹ą (LLM ė‘ë‹ĩė—ė„œ)
154
+ */
155
+ function parseIssuesFromResponse(response) {
156
+ try {
157
+ // JSON 블록 ėļ”ėļœ
158
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
159
+ if (!jsonMatch)
160
+ return [];
161
+ const parsed = JSON.parse(jsonMatch[0]);
162
+ return parsed.issues || [];
163
+ }
164
+ catch {
165
+ // JSON íŒŒė‹ą ė‹¤íŒ¨ ė‹œ 뚈 ë°°ė—´
166
+ return [];
167
+ }
168
+ }
169
+ /**
170
+ * ė‹ ëĸ°ë„ė—ė„œ ėš°ė„ ėˆœėœ„ ęŗ„ė‚°
171
+ */
172
+ function calculatePriority(confidence, severity) {
173
+ // 3/3 ë™ė˜ (100%) + critical/high → P1
174
+ // 2/3 ë™ė˜ (67%) 또는 medium → P2
175
+ // 1/3 ë™ė˜ (33%) 또는 low → P3
176
+ if (confidence >= 0.9 && (severity === 'critical' || severity === 'high')) {
177
+ return 'P1';
178
+ }
179
+ if (confidence >= 0.6 || severity === 'medium') {
180
+ return 'P2';
181
+ }
182
+ return 'P3';
183
+ }
184
+ /**
185
+ * 가ėžĨ ėƒė„¸í•œ 렜ëĒŠ ė„ íƒ
186
+ */
187
+ function selectBestTitle(issues) {
188
+ return issues.reduce((best, issue) => issue.title.length > best.length ? issue.title : best, issues[0]?.title || 'Unknown Issue');
189
+ }
190
+ /**
191
+ * 가ėžĨ ėƒė„¸í•œ 네ëĒ… ė„ íƒ
192
+ */
193
+ function selectBestDescription(issues) {
194
+ return issues.reduce((best, issue) => issue.description.length > best.length ? issue.description : best, issues[0]?.description || '');
195
+ }
196
+ // ============================================================================
197
+ // Core Functions
198
+ // ============================================================================
199
+ /**
200
+ * GPT로 ëĻŦ롰 ėˆ˜í–‰
201
+ */
202
+ async function reviewWithGPT(reviewType, code, context) {
203
+ const startTime = Date.now();
204
+ try {
205
+ const prompt = `${REVIEW_PROMPTS[reviewType]}
206
+
207
+ Context: ${context || 'Code review'}
208
+
209
+ Code to review:
210
+ \`\`\`
211
+ ${code}
212
+ \`\`\`
213
+
214
+ Respond with JSON only.`;
215
+ const response = await gptApi.ask(prompt, {
216
+ model: 'gpt-5.2-codex',
217
+ temperature: 0.3,
218
+ });
219
+ const issues = parseIssuesFromResponse(response);
220
+ return {
221
+ provider: 'gpt',
222
+ issues,
223
+ duration: Date.now() - startTime,
224
+ };
225
+ }
226
+ catch (error) {
227
+ return {
228
+ provider: 'gpt',
229
+ issues: [],
230
+ duration: Date.now() - startTime,
231
+ error: error.message,
232
+ };
233
+ }
234
+ }
235
+ /**
236
+ * Gemini로 ëĻŦ롰 ėˆ˜í–‰
237
+ */
238
+ async function reviewWithGemini(reviewType, code, context) {
239
+ const startTime = Date.now();
240
+ try {
241
+ const prompt = `${REVIEW_PROMPTS[reviewType]}
242
+
243
+ Context: ${context || 'Code review'}
244
+
245
+ Code to review:
246
+ \`\`\`
247
+ ${code}
248
+ \`\`\`
249
+
250
+ Respond with JSON only.`;
251
+ const response = await geminiApi.ask(prompt, {
252
+ model: 'gemini-3-flash',
253
+ temperature: 0.3,
254
+ });
255
+ const issues = parseIssuesFromResponse(response);
256
+ return {
257
+ provider: 'gemini',
258
+ issues,
259
+ duration: Date.now() - startTime,
260
+ };
261
+ }
262
+ catch (error) {
263
+ return {
264
+ provider: 'gemini',
265
+ issues: [],
266
+ duration: Date.now() - startTime,
267
+ error: error.message,
268
+ };
269
+ }
270
+ }
271
+ /**
272
+ * ė´ėŠˆ ęĩė°¨ 검ėĻ (클ëŸŦėŠ¤í„°ë§)
273
+ */
274
+ function crossValidateIssues(llmResults) {
275
+ const validResults = llmResults.filter(r => !r.error);
276
+ const totalProviders = validResults.length;
277
+ if (totalProviders === 0)
278
+ return [];
279
+ // ëĒ¨ë“  ė´ėŠˆëĨŧ 플ëžĢ하게 íŽŧėš¨
280
+ const allIssues = [];
281
+ for (const result of validResults) {
282
+ for (const issue of result.issues) {
283
+ allIssues.push({ issue, provider: result.provider });
284
+ }
285
+ }
286
+ // 클ëŸŦėŠ¤í„°ë§ (뜠ė‚Ŧ한 ė´ėŠˆ ęˇ¸ëŖší™”)
287
+ const clusters = [];
288
+ const used = new Set();
289
+ for (let i = 0; i < allIssues.length; i++) {
290
+ if (used.has(i))
291
+ continue;
292
+ const cluster = [allIssues[i]];
293
+ used.add(i);
294
+ for (let j = i + 1; j < allIssues.length; j++) {
295
+ if (used.has(j))
296
+ continue;
297
+ // ę°™ė€ providerė˜ ė´ėŠˆëŠ” 클ëŸŦėŠ¤í„°ė— ėļ”ę°€í•˜ė§€ ė•ŠėŒ
298
+ if (allIssues[j].provider === allIssues[i].provider)
299
+ continue;
300
+ if (areIssuesSimilar(allIssues[i].issue, allIssues[j].issue)) {
301
+ cluster.push(allIssues[j]);
302
+ used.add(j);
303
+ }
304
+ }
305
+ clusters.push(cluster);
306
+ }
307
+ // 클ëŸŦėŠ¤í„°ëĨŧ CrossValidatedIssue로 ëŗ€í™˜
308
+ const crossValidated = clusters.map(cluster => {
309
+ const issues = cluster.map(c => c.issue);
310
+ const foundBy = [...new Set(cluster.map(c => c.provider))];
311
+ const confidence = foundBy.length / totalProviders;
312
+ // 가ėžĨ ë†’ė€ severity ė„ íƒ
313
+ const severityOrder = ['critical', 'high', 'medium', 'low'];
314
+ const highestSeverity = issues.reduce((highest, issue) => {
315
+ const currentIndex = severityOrder.indexOf(issue.severity);
316
+ const highestIndex = severityOrder.indexOf(highest);
317
+ return currentIndex < highestIndex ? issue.severity : highest;
318
+ }, 'low');
319
+ const priority = calculatePriority(confidence, highestSeverity);
320
+ return {
321
+ issue: {
322
+ id: issues[0].id,
323
+ title: selectBestTitle(issues),
324
+ description: selectBestDescription(issues),
325
+ location: issues.find(i => i.location)?.location,
326
+ severity: highestSeverity,
327
+ suggestion: issues.find(i => i.suggestion)?.suggestion,
328
+ },
329
+ foundBy,
330
+ confidence,
331
+ priority,
332
+ consensusTitle: selectBestTitle(issues),
333
+ };
334
+ });
335
+ // ėš°ė„ ėˆœėœ„ 눜ėœŧ로 ė •ë Ŧ (P1 > P2 > P3, ę°™ė€ ėš°ė„ ėˆœėœ„ ë‚´ė—ė„œëŠ” confidence ë†’ė€ 눜)
336
+ return crossValidated.sort((a, b) => {
337
+ const priorityOrder = { P1: 0, P2: 1, P3: 2 };
338
+ if (priorityOrder[a.priority] !== priorityOrder[b.priority]) {
339
+ return priorityOrder[a.priority] - priorityOrder[b.priority];
340
+ }
341
+ return b.confidence - a.confidence;
342
+ });
343
+ }
344
+ // ============================================================================
345
+ // Main Export
346
+ // ============================================================================
347
+ /**
348
+ * Multi-LLM Race Review ėˆ˜í–‰
349
+ *
350
+ * GPT + GeminiëĨŧ ëŗ‘ë Ŧ로 ė‹¤í–‰í•˜ęŗ  결ęŗŧëĨŧ ęĩė°¨ 검ėĻí•Šë‹ˆë‹¤.
351
+ * Claude는 현ėžŦ ė„¸ė…˜ė—ė„œ ė‹¤í–‰ ė¤‘ė´ë¯€ëĄœ ëŗ„ë„ė˜ ė„œë¸Œė—ė´ė „íŠ¸ëĄœ 호ėļœëŠë‹ˆë‹¤.
352
+ */
353
+ export async function raceReview(options) {
354
+ const { reviewType, code, context } = options;
355
+ const startTime = Date.now();
356
+ // GPT + Gemini ëŗ‘ë Ŧ ė‹¤í–‰
357
+ const [gptResult, geminiResult] = await Promise.all([
358
+ reviewWithGPT(reviewType, code, context),
359
+ reviewWithGemini(reviewType, code, context),
360
+ ]);
361
+ const llmResults = [gptResult, geminiResult];
362
+ // ęĩė°¨ 검ėĻ
363
+ const crossValidated = crossValidateIssues(llmResults);
364
+ // ėš”ė•Ŋ ėƒė„ą
365
+ const p1Count = crossValidated.filter(i => i.priority === 'P1').length;
366
+ const p2Count = crossValidated.filter(i => i.priority === 'P2').length;
367
+ const p3Count = crossValidated.filter(i => i.priority === 'P3').length;
368
+ return {
369
+ reviewType,
370
+ llmResults,
371
+ crossValidated,
372
+ summary: {
373
+ totalIssues: crossValidated.length,
374
+ p1Count,
375
+ p2Count,
376
+ p3Count,
377
+ consensusRate: crossValidated.length > 0
378
+ ? (p1Count + p2Count) / crossValidated.length
379
+ : 1,
380
+ },
381
+ duration: Date.now() - startTime,
382
+ };
383
+ }
384
+ /**
385
+ * Race Review 결ęŗŧëĨŧ 마íŦë‹¤ėš´ėœŧ로 íŦ맡
386
+ */
387
+ export function formatRaceResult(result) {
388
+ const lines = [];
389
+ lines.push(`## ${result.reviewType.toUpperCase()} Review (Race Mode)`);
390
+ lines.push('');
391
+ lines.push(`**Duration**: ${result.duration}ms`);
392
+ lines.push(`**Models**: GPT-5.2-Codex, Gemini-3-Flash`);
393
+ lines.push('');
394
+ // LLMëŗ„ 결ęŗŧ ėš”ė•Ŋ
395
+ lines.push('### Model Results');
396
+ lines.push('');
397
+ lines.push('| Model | Issues Found | Duration | Status |');
398
+ lines.push('|-------|--------------|----------|--------|');
399
+ for (const llm of result.llmResults) {
400
+ const status = llm.error ? `Error: ${llm.error}` : 'OK';
401
+ lines.push(`| ${llm.provider} | ${llm.issues.length} | ${llm.duration}ms | ${status} |`);
402
+ }
403
+ lines.push('');
404
+ // ęĩė°¨ 검ėĻ 결ęŗŧ
405
+ lines.push('### Cross-Validated Issues');
406
+ lines.push('');
407
+ lines.push(`**Summary**: ${result.summary.totalIssues} issues (P1: ${result.summary.p1Count}, P2: ${result.summary.p2Count}, P3: ${result.summary.p3Count})`);
408
+ lines.push(`**Consensus Rate**: ${(result.summary.consensusRate * 100).toFixed(0)}%`);
409
+ lines.push('');
410
+ if (result.crossValidated.length === 0) {
411
+ lines.push('No issues found.');
412
+ }
413
+ else {
414
+ for (const item of result.crossValidated) {
415
+ const priorityEmoji = item.priority === 'P1' ? '🔴' : item.priority === 'P2' ? '🟡' : 'đŸ”ĩ';
416
+ const confidencePct = (item.confidence * 100).toFixed(0);
417
+ lines.push(`#### ${priorityEmoji} ${item.priority} - ${item.consensusTitle}`);
418
+ lines.push('');
419
+ lines.push(`- **Confidence**: ${confidencePct}% (${item.foundBy.join(', ')})`);
420
+ lines.push(`- **Severity**: ${item.issue.severity}`);
421
+ if (item.issue.location) {
422
+ lines.push(`- **Location**: \`${item.issue.location}\``);
423
+ }
424
+ lines.push(`- **Description**: ${item.issue.description}`);
425
+ if (item.issue.suggestion) {
426
+ lines.push(`- **Suggestion**: ${item.issue.suggestion}`);
427
+ }
428
+ lines.push('');
429
+ }
430
+ }
431
+ return lines.join('\n');
432
+ }
433
+ /**
434
+ * LLM ę°€ėšŠė„ą í™•ė¸
435
+ */
436
+ export async function checkLLMAvailability() {
437
+ const results = await Promise.allSettled([
438
+ gptApi.ask('ping', { maxTokens: 10 }),
439
+ geminiApi.ask('ping', { maxTokens: 10 }),
440
+ ]);
441
+ return {
442
+ gpt: results[0].status === 'fulfilled',
443
+ gemini: results[1].status === 'fulfilled',
444
+ };
445
+ }
446
+ //# sourceMappingURL=ReviewRace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReviewRace.js","sourceRoot":"","sources":["../../src/lib/ReviewRace.ts"],"names":[],"mappings":"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"}
@@ -49,4 +49,6 @@ export { detectFramework, detectFrameworkFromContent, getFrameworkRecommendation
49
49
  export type { FrameworkInfo, PackageJson, DetectionResult, } from '../lib/FrameworkDetector.js';
50
50
  export { generateRequirementId, generateRequirementIds, validateRequirementId, checkDuplicateId, registerExistingId, registerExistingIds, extractFeatureFromId, extractNumberFromId, getIdsByFeature, getAllUsedIds, resetCounters, getCounterStatus, parsePRD, parsePRDFile, generateSpec, generateTraceabilityMatrix, formatMatrixAsMarkdown, formatMatrixAsHtml, bumpSpecVersion, extractVersion, incrementVersion, generateChangelog, createGitTag, detectSpecChanges, getLatestSpecCommit, loadVersionHistory, saveVersionHistory, createBaseline, } from './spec/index.js';
51
51
  export type { Requirement, ParsedPRD, PRDMetadata, SpecGeneratorOptions, GeneratedSpec, TraceItem, TraceabilityMatrix, TraceSummary, TraceMatrixOptions, SpecVersion, ChangeEntry, VersionHistory, BumpType, } from './spec/index.js';
52
+ export { raceReview, formatRaceResult, checkLLMAvailability, } from '../lib/ReviewRace.js';
53
+ export type { RaceReviewResult, RaceReviewOptions, LLMProvider, Priority, ReviewType, RaceReviewIssue, RaceLLMResult, RaceCrossValidatedIssue, } from '../lib/ReviewRace.js';
52
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -70,4 +70,6 @@ generateSpec,
70
70
  generateTraceabilityMatrix, formatMatrixAsMarkdown, formatMatrixAsHtml,
71
71
  // SPEC Versioning
72
72
  bumpSpecVersion, extractVersion, incrementVersion, generateChangelog, createGitTag, detectSpecChanges, getLatestSpecCommit, loadVersionHistory, saveVersionHistory, createBaseline, } from './spec/index.js';
73
+ // Review Race (v2.6.9) - Multi-LLM competitive review
74
+ export { raceReview, formatRaceResult, checkLLMAvailability, } from '../lib/ReviewRace.js';
73
75
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,6BAA6B;AAC7B,OAAO,EACL,OAAO,EACP,YAAY,EACZ,0BAA0B,EAC1B,yBAAyB,EACzB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAahC,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,mCAAmC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,8CAA8C;AAC9C,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAEpC,iCAAiC;AACjC,OAAO,EACL,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,2BAA2B,EAC3B,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AAEvC,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,qBAAqB;AACrB,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,8BAA8B;AAC9B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAEpC,6BAA6B;AAC7B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAInC,8BAA8B;AAC9B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,GACb,MAAM,2BAA2B,CAAC;AAYnC,+BAA+B;AAC/B,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,WAAW,EACX,sBAAsB,EACtB,UAAU,GACX,MAAM,6BAA6B,CAAC;AAQrC,6BAA6B;AAC7B,OAAO;AACL,iBAAiB;AACjB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB;AAChB,aAAa;AACb,QAAQ,EACR,YAAY;AACZ,iBAAiB;AACjB,YAAY;AACZ,sBAAsB;AACtB,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB;AAClB,kBAAkB;AAClB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAoBzB,sDAAsD;AACtD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "2.6.8",
3
+ "version": "2.6.9",
4
4
  "description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework with 35+ integrated tools",
5
5
  "type": "module",
6
6
  "main": "dist/cli/index.js",