@su-record/vibe 3.2.19 → 3.2.20
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/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +13 -1
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/tools/dispatch/deterministicSignals.d.ts.map +1 -1
- package/dist/tools/dispatch/deterministicSignals.js +15 -10
- package/dist/tools/dispatch/deterministicSignals.js.map +1 -1
- package/dist/tools/dispatch/vibePaths.d.ts +7 -0
- package/dist/tools/dispatch/vibePaths.d.ts.map +1 -0
- package/dist/tools/dispatch/vibePaths.js +35 -0
- package/dist/tools/dispatch/vibePaths.js.map +1 -0
- package/hooks/scripts/code-check.js +90 -16
- package/hooks/scripts/lib/anchor.js +15 -4
- package/hooks/scripts/lib/inbox.js +10 -2
- package/package.json +1 -1
- package/dist/infra/lib/DeepInit.d.ts +0 -60
- package/dist/infra/lib/DeepInit.d.ts.map +0 -1
- package/dist/infra/lib/DeepInit.js +0 -245
- package/dist/infra/lib/DeepInit.js.map +0 -1
- package/dist/infra/lib/FrameworkDetector.d.ts +0 -56
- package/dist/infra/lib/FrameworkDetector.d.ts.map +0 -1
- package/dist/infra/lib/FrameworkDetector.js +0 -287
- package/dist/infra/lib/FrameworkDetector.js.map +0 -1
- package/dist/infra/lib/ModelRouter.d.ts +0 -48
- package/dist/infra/lib/ModelRouter.d.ts.map +0 -1
- package/dist/infra/lib/ModelRouter.js +0 -216
- package/dist/infra/lib/ModelRouter.js.map +0 -1
- package/dist/infra/lib/ReviewRace.d.ts +0 -86
- package/dist/infra/lib/ReviewRace.d.ts.map +0 -1
- package/dist/infra/lib/ReviewRace.js +0 -454
- package/dist/infra/lib/ReviewRace.js.map +0 -1
- package/dist/infra/lib/RuleBuildSystem.d.ts +0 -157
- package/dist/infra/lib/RuleBuildSystem.d.ts.map +0 -1
- package/dist/infra/lib/RuleBuildSystem.js +0 -550
- package/dist/infra/lib/RuleBuildSystem.js.map +0 -1
- package/dist/infra/lib/SkillQualityGate.d.ts +0 -42
- package/dist/infra/lib/SkillQualityGate.d.ts.map +0 -1
- package/dist/infra/lib/SkillQualityGate.js +0 -220
- package/dist/infra/lib/SkillQualityGate.js.map +0 -1
- package/dist/infra/lib/SkillRepository.d.ts +0 -134
- package/dist/infra/lib/SkillRepository.d.ts.map +0 -1
- package/dist/infra/lib/SkillRepository.js +0 -500
- package/dist/infra/lib/SkillRepository.js.map +0 -1
- package/dist/infra/lib/UltraQA.d.ts +0 -89
- package/dist/infra/lib/UltraQA.d.ts.map +0 -1
- package/dist/infra/lib/UltraQA.js +0 -301
- package/dist/infra/lib/UltraQA.js.map +0 -1
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Intelligent Model Router
|
|
3
|
-
* 작업 복잡도를 자동 분석하여 최적의 모델을 선택
|
|
4
|
-
*/
|
|
5
|
-
export type ModelTier = 'haiku' | 'sonnet' | 'opus';
|
|
6
|
-
export interface ComplexitySignals {
|
|
7
|
-
fileCount: number;
|
|
8
|
-
lineCount: number;
|
|
9
|
-
hasArchitectureChange: boolean;
|
|
10
|
-
hasSecurityImplication: boolean;
|
|
11
|
-
hasMultipleServices: boolean;
|
|
12
|
-
isRefactoring: boolean;
|
|
13
|
-
isNewFeature: boolean;
|
|
14
|
-
isBugFix: boolean;
|
|
15
|
-
isDocumentation: boolean;
|
|
16
|
-
keywords: string[];
|
|
17
|
-
}
|
|
18
|
-
export interface RoutingResult {
|
|
19
|
-
model: ModelTier;
|
|
20
|
-
score: number;
|
|
21
|
-
reason: string;
|
|
22
|
-
signals: Partial<ComplexitySignals>;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 텍스트에서 복잡도 신호 추출
|
|
26
|
-
*/
|
|
27
|
-
export declare function extractComplexitySignals(text: string): ComplexitySignals;
|
|
28
|
-
/**
|
|
29
|
-
* 복잡도 점수 계산
|
|
30
|
-
*/
|
|
31
|
-
export declare function calculateComplexityScore(signals: ComplexitySignals): number;
|
|
32
|
-
/**
|
|
33
|
-
* 최적 모델 선택
|
|
34
|
-
*/
|
|
35
|
-
export declare function selectModel(score: number): ModelTier;
|
|
36
|
-
/**
|
|
37
|
-
* 메인 라우팅 함수
|
|
38
|
-
*/
|
|
39
|
-
export declare function routeToModel(taskDescription: string): RoutingResult;
|
|
40
|
-
/**
|
|
41
|
-
* SPEC 파일 기반 라우팅
|
|
42
|
-
*/
|
|
43
|
-
export declare function routeFromSpec(specContent: string): RoutingResult;
|
|
44
|
-
/**
|
|
45
|
-
* 에이전트 티어 선택 (agent-low, agent-medium, agent 패턴)
|
|
46
|
-
*/
|
|
47
|
-
export declare function selectAgentTier(baseAgentName: string, taskDescription: string): string;
|
|
48
|
-
//# sourceMappingURL=ModelRouter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRouter.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/ModelRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,sBAAsB,EAAE,OAAO,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACrC;AAiDD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA+BxE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA6B3E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAIpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,aAAa,CA4BnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAgChE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,MAAM,CAatF"}
|
|
@@ -1,216 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Intelligent Model Router
|
|
3
|
-
* 작업 복잡도를 자동 분석하여 최적의 모델을 선택
|
|
4
|
-
*/
|
|
5
|
-
// 복잡도 키워드 매핑
|
|
6
|
-
const COMPLEXITY_KEYWORDS = {
|
|
7
|
-
// High complexity (opus)
|
|
8
|
-
'architect': 15,
|
|
9
|
-
'refactor': 12,
|
|
10
|
-
'migrate': 12,
|
|
11
|
-
'security': 12,
|
|
12
|
-
'authentication': 10,
|
|
13
|
-
'authorization': 10,
|
|
14
|
-
'infrastructure': 10,
|
|
15
|
-
'database schema': 10,
|
|
16
|
-
'breaking change': 10,
|
|
17
|
-
'performance optimization': 8,
|
|
18
|
-
'distributed': 8,
|
|
19
|
-
'concurrent': 8,
|
|
20
|
-
'transaction': 8,
|
|
21
|
-
// Medium complexity (sonnet)
|
|
22
|
-
'implement': 5,
|
|
23
|
-
'feature': 5,
|
|
24
|
-
'integration': 5,
|
|
25
|
-
'api': 4,
|
|
26
|
-
'component': 4,
|
|
27
|
-
'service': 4,
|
|
28
|
-
'module': 4,
|
|
29
|
-
'test': 3,
|
|
30
|
-
'validation': 3,
|
|
31
|
-
// Low complexity (haiku)
|
|
32
|
-
'fix': 2,
|
|
33
|
-
'bug': 2,
|
|
34
|
-
'typo': 1,
|
|
35
|
-
'rename': 1,
|
|
36
|
-
'comment': 1,
|
|
37
|
-
'documentation': 1,
|
|
38
|
-
'style': 1,
|
|
39
|
-
'format': 1,
|
|
40
|
-
'lint': 1,
|
|
41
|
-
};
|
|
42
|
-
// 모델 티어 임계값
|
|
43
|
-
const TIER_THRESHOLDS = {
|
|
44
|
-
opus: 20, // score >= 20 → opus
|
|
45
|
-
sonnet: 8, // score >= 8 → sonnet
|
|
46
|
-
haiku: 0, // score < 8 → haiku
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* 텍스트에서 복잡도 신호 추출
|
|
50
|
-
*/
|
|
51
|
-
export function extractComplexitySignals(text) {
|
|
52
|
-
const lowerText = text.toLowerCase();
|
|
53
|
-
const keywords = [];
|
|
54
|
-
// 키워드 매칭
|
|
55
|
-
for (const keyword of Object.keys(COMPLEXITY_KEYWORDS)) {
|
|
56
|
-
if (lowerText.includes(keyword)) {
|
|
57
|
-
keywords.push(keyword);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
// 파일 수 추정 (패턴 매칭)
|
|
61
|
-
const filePatterns = text.match(/\.(ts|js|py|go|rs|java|tsx|jsx|vue|svelte|css|scss|html|md)\b/gi) || [];
|
|
62
|
-
const uniqueExtensions = new Set(filePatterns.map(p => p.toLowerCase()));
|
|
63
|
-
// 라인 수 추정 (코드 블록)
|
|
64
|
-
const codeBlocks = text.match(/```[\s\S]*?```/g) || [];
|
|
65
|
-
const estimatedLines = codeBlocks.reduce((sum, block) => sum + block.split('\n').length, 0);
|
|
66
|
-
return {
|
|
67
|
-
fileCount: Math.max(uniqueExtensions.size, 1),
|
|
68
|
-
lineCount: estimatedLines,
|
|
69
|
-
hasArchitectureChange: /architect|infrastructure|system design|database schema/i.test(text),
|
|
70
|
-
hasSecurityImplication: /security|auth|password|token|credential|encrypt|vulnerability/i.test(text),
|
|
71
|
-
hasMultipleServices: /micro.?service|distributed|multiple.*service|cross.*service/i.test(text),
|
|
72
|
-
isRefactoring: /refactor|restructure|reorganize|extract|split|merge/i.test(text),
|
|
73
|
-
isNewFeature: /new feature|implement|create|add.*feature/i.test(text),
|
|
74
|
-
isBugFix: /bug|fix|patch|hotfix|issue|error/i.test(text),
|
|
75
|
-
isDocumentation: /document|readme|comment|jsdoc|explain/i.test(text),
|
|
76
|
-
keywords,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 복잡도 점수 계산
|
|
81
|
-
*/
|
|
82
|
-
export function calculateComplexityScore(signals) {
|
|
83
|
-
let score = 0;
|
|
84
|
-
// 키워드 기반 점수
|
|
85
|
-
for (const keyword of signals.keywords) {
|
|
86
|
-
score += COMPLEXITY_KEYWORDS[keyword] || 0;
|
|
87
|
-
}
|
|
88
|
-
// 파일 수 기반 점수
|
|
89
|
-
if (signals.fileCount >= 10)
|
|
90
|
-
score += 15;
|
|
91
|
-
else if (signals.fileCount >= 5)
|
|
92
|
-
score += 8;
|
|
93
|
-
else if (signals.fileCount >= 3)
|
|
94
|
-
score += 4;
|
|
95
|
-
// 라인 수 기반 점수
|
|
96
|
-
if (signals.lineCount >= 500)
|
|
97
|
-
score += 10;
|
|
98
|
-
else if (signals.lineCount >= 200)
|
|
99
|
-
score += 5;
|
|
100
|
-
else if (signals.lineCount >= 50)
|
|
101
|
-
score += 2;
|
|
102
|
-
// 특수 상황 가중치
|
|
103
|
-
if (signals.hasArchitectureChange)
|
|
104
|
-
score += 10;
|
|
105
|
-
if (signals.hasSecurityImplication)
|
|
106
|
-
score += 8;
|
|
107
|
-
if (signals.hasMultipleServices)
|
|
108
|
-
score += 8;
|
|
109
|
-
if (signals.isRefactoring)
|
|
110
|
-
score += 5;
|
|
111
|
-
// 단순 작업 감점
|
|
112
|
-
if (signals.isBugFix && !signals.hasSecurityImplication)
|
|
113
|
-
score -= 3;
|
|
114
|
-
if (signals.isDocumentation)
|
|
115
|
-
score -= 5;
|
|
116
|
-
return Math.max(0, score);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* 최적 모델 선택
|
|
120
|
-
*/
|
|
121
|
-
export function selectModel(score) {
|
|
122
|
-
if (score >= TIER_THRESHOLDS.opus)
|
|
123
|
-
return 'opus';
|
|
124
|
-
if (score >= TIER_THRESHOLDS.sonnet)
|
|
125
|
-
return 'sonnet';
|
|
126
|
-
return 'haiku';
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* 메인 라우팅 함수
|
|
130
|
-
*/
|
|
131
|
-
export function routeToModel(taskDescription) {
|
|
132
|
-
const signals = extractComplexitySignals(taskDescription);
|
|
133
|
-
const score = calculateComplexityScore(signals);
|
|
134
|
-
const model = selectModel(score);
|
|
135
|
-
// 선택 이유 생성
|
|
136
|
-
let reason = '';
|
|
137
|
-
if (model === 'opus') {
|
|
138
|
-
reason = `High complexity task (score: ${score}). `;
|
|
139
|
-
if (signals.hasArchitectureChange)
|
|
140
|
-
reason += 'Architecture change detected. ';
|
|
141
|
-
if (signals.hasSecurityImplication)
|
|
142
|
-
reason += 'Security implications. ';
|
|
143
|
-
if (signals.hasMultipleServices)
|
|
144
|
-
reason += 'Multi-service coordination. ';
|
|
145
|
-
}
|
|
146
|
-
else if (model === 'sonnet') {
|
|
147
|
-
reason = `Medium complexity task (score: ${score}). `;
|
|
148
|
-
if (signals.isNewFeature)
|
|
149
|
-
reason += 'New feature implementation. ';
|
|
150
|
-
if (signals.fileCount >= 3)
|
|
151
|
-
reason += `Multiple files (${signals.fileCount}). `;
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
reason = `Simple task (score: ${score}). `;
|
|
155
|
-
if (signals.isBugFix)
|
|
156
|
-
reason += 'Bug fix. ';
|
|
157
|
-
if (signals.isDocumentation)
|
|
158
|
-
reason += 'Documentation. ';
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
model,
|
|
162
|
-
score,
|
|
163
|
-
reason: reason.trim(),
|
|
164
|
-
signals,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* SPEC 파일 기반 라우팅
|
|
169
|
-
*/
|
|
170
|
-
export function routeFromSpec(specContent) {
|
|
171
|
-
// SPEC에서 Phase 수 추출
|
|
172
|
-
const phaseMatches = specContent.match(/###\s*Phase\s*\d+/gi) || [];
|
|
173
|
-
const phaseCount = phaseMatches.length;
|
|
174
|
-
// SPEC에서 파일 목록 추출
|
|
175
|
-
const fileMatches = specContent.match(/`[^`]+\.(ts|js|py|go|rs|java|tsx|jsx|vue|svelte|css|scss|html|md)`/gi) || [];
|
|
176
|
-
const fileCount = new Set(fileMatches).size;
|
|
177
|
-
// 기본 신호 추출
|
|
178
|
-
const signals = extractComplexitySignals(specContent);
|
|
179
|
-
signals.fileCount = Math.max(signals.fileCount, fileCount);
|
|
180
|
-
// Phase 수에 따른 추가 점수
|
|
181
|
-
let score = calculateComplexityScore(signals);
|
|
182
|
-
if (phaseCount >= 5)
|
|
183
|
-
score += 15;
|
|
184
|
-
else if (phaseCount >= 3)
|
|
185
|
-
score += 8;
|
|
186
|
-
else if (phaseCount >= 2)
|
|
187
|
-
score += 4;
|
|
188
|
-
const model = selectModel(score);
|
|
189
|
-
let reason = `SPEC analysis: ${phaseCount} phases, ~${fileCount} files. `;
|
|
190
|
-
reason += model === 'opus' ? 'Large scope → Opus recommended.' :
|
|
191
|
-
model === 'sonnet' ? 'Medium scope → Sonnet.' :
|
|
192
|
-
'Small scope → Haiku sufficient.';
|
|
193
|
-
return {
|
|
194
|
-
model,
|
|
195
|
-
score,
|
|
196
|
-
reason,
|
|
197
|
-
signals,
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* 에이전트 티어 선택 (agent-low, agent-medium, agent 패턴)
|
|
202
|
-
*/
|
|
203
|
-
export function selectAgentTier(baseAgentName, taskDescription) {
|
|
204
|
-
const { model } = routeToModel(taskDescription);
|
|
205
|
-
switch (model) {
|
|
206
|
-
case 'haiku':
|
|
207
|
-
return `${baseAgentName}-low`;
|
|
208
|
-
case 'sonnet':
|
|
209
|
-
return `${baseAgentName}-medium`;
|
|
210
|
-
case 'opus':
|
|
211
|
-
return baseAgentName; // 기본 = 최고 티어
|
|
212
|
-
default:
|
|
213
|
-
return baseAgentName;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
//# sourceMappingURL=ModelRouter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelRouter.js","sourceRoot":"","sources":["../../../src/infra/lib/ModelRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Multi-LLM Race Review
|
|
3
|
-
*
|
|
4
|
-
* 같은 리뷰 작업을 Claude + GPT + Antigravity가 병렬로 수행하고
|
|
5
|
-
* 교차 검증하여 신뢰도 기반 우선순위를 부여합니다.
|
|
6
|
-
*
|
|
7
|
-
* @deprecated Not wired into the vibe runtime (no hook/skill/CLI consumer).
|
|
8
|
-
* No consumer in the shipped pipeline.
|
|
9
|
-
* Retained for API compatibility; may be removed in a future major.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```typescript
|
|
13
|
-
* import { raceReview, formatRaceResult } from '@su-record/vibe/lib/ReviewRace';
|
|
14
|
-
*
|
|
15
|
-
* const result = await raceReview({
|
|
16
|
-
* reviewType: 'security',
|
|
17
|
-
* code: diffContent,
|
|
18
|
-
* context: 'Authentication module changes',
|
|
19
|
-
* });
|
|
20
|
-
*
|
|
21
|
-
* console.log(formatRaceResult(result));
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export type LLMProvider = 'claude' | 'gpt' | 'antigravity';
|
|
25
|
-
export type Priority = 'P1' | 'P2' | 'P3';
|
|
26
|
-
export type ReviewType = 'security' | 'performance' | 'architecture' | 'complexity' | 'data-integrity' | 'test-coverage' | 'general';
|
|
27
|
-
export interface ReviewIssue {
|
|
28
|
-
id: string;
|
|
29
|
-
title: string;
|
|
30
|
-
description: string;
|
|
31
|
-
location?: string;
|
|
32
|
-
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
33
|
-
suggestion?: string;
|
|
34
|
-
}
|
|
35
|
-
export interface LLMReviewResult {
|
|
36
|
-
provider: LLMProvider;
|
|
37
|
-
issues: ReviewIssue[];
|
|
38
|
-
duration: number;
|
|
39
|
-
error?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface CrossValidatedIssue {
|
|
42
|
-
issue: ReviewIssue;
|
|
43
|
-
foundBy: LLMProvider[];
|
|
44
|
-
confidence: number;
|
|
45
|
-
priority: Priority;
|
|
46
|
-
consensusTitle: string;
|
|
47
|
-
}
|
|
48
|
-
export interface RaceReviewResult {
|
|
49
|
-
reviewType: ReviewType;
|
|
50
|
-
llmResults: LLMReviewResult[];
|
|
51
|
-
crossValidated: CrossValidatedIssue[];
|
|
52
|
-
summary: {
|
|
53
|
-
totalIssues: number;
|
|
54
|
-
p1Count: number;
|
|
55
|
-
p2Count: number;
|
|
56
|
-
p3Count: number;
|
|
57
|
-
consensusRate: number;
|
|
58
|
-
};
|
|
59
|
-
duration: number;
|
|
60
|
-
}
|
|
61
|
-
export interface RaceReviewOptions {
|
|
62
|
-
reviewType: ReviewType;
|
|
63
|
-
code: string;
|
|
64
|
-
context?: string;
|
|
65
|
-
includeClaudeSubagent?: boolean;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Multi-LLM Race Review 수행
|
|
69
|
-
*
|
|
70
|
-
* GPT + Antigravity를 병렬로 실행하고 결과를 교차 검증합니다.
|
|
71
|
-
* Claude는 현재 세션에서 실행 중이므로 별도의 서브에이전트로 호출됩니다.
|
|
72
|
-
*/
|
|
73
|
-
export declare function raceReview(options: RaceReviewOptions): Promise<RaceReviewResult>;
|
|
74
|
-
/**
|
|
75
|
-
* Race Review 결과를 마크다운으로 포맷
|
|
76
|
-
*/
|
|
77
|
-
export declare function formatRaceResult(result: RaceReviewResult): string;
|
|
78
|
-
/**
|
|
79
|
-
* LLM 가용성 확인
|
|
80
|
-
*/
|
|
81
|
-
export declare function checkLLMAvailability(): Promise<{
|
|
82
|
-
gpt: boolean;
|
|
83
|
-
antigravity: boolean;
|
|
84
|
-
}>;
|
|
85
|
-
export type { ReviewIssue as RaceReviewIssue, LLMReviewResult as RaceLLMResult, CrossValidatedIssue as RaceCrossValidatedIssue, };
|
|
86
|
-
//# sourceMappingURL=ReviewRace.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReviewRace.d.ts","sourceRoot":"","sources":["../../../src/infra/lib/ReviewRace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,aAAa,CAAC;AAC3D,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,CAsCtF;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,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC,CAUD;AAGD,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,aAAa,EAChC,mBAAmB,IAAI,uBAAuB,GAC/C,CAAC"}
|