@su-record/vibe 2.4.34 → 2.4.36
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/CLAUDE.md +345 -351
- package/LICENSE +21 -21
- package/README.md +210 -210
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer.md +48 -48
- package/agents/implementer.md +53 -53
- package/agents/research/best-practices-agent.md +139 -139
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +178 -178
- package/agents/research/security-advisory-agent.md +164 -164
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +119 -119
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +129 -129
- package/commands/vibe.analyze.md +260 -260
- package/commands/vibe.reason.md +223 -223
- package/commands/vibe.review.md +213 -213
- package/commands/vibe.run.md +931 -931
- package/commands/vibe.spec.md +442 -442
- package/commands/vibe.utils.md +101 -101
- package/commands/vibe.verify.md +282 -282
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/detect.js +32 -32
- package/dist/cli/index.js +137 -137
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm.js +147 -147
- package/dist/cli/llm.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +48 -54
- package/dist/cli/setup.js.map +1 -1
- package/dist/lib/MemoryManager.d.ts +4 -0
- package/dist/lib/MemoryManager.d.ts.map +1 -1
- package/dist/lib/MemoryManager.js +21 -2
- package/dist/lib/MemoryManager.js.map +1 -1
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-api.d.ts +47 -3
- package/dist/lib/gemini-api.d.ts.map +1 -1
- package/dist/lib/gemini-api.js +253 -7
- package/dist/lib/gemini-api.js.map +1 -1
- package/dist/lib/gpt-api.d.ts +37 -5
- package/dist/lib/gpt-api.d.ts.map +1 -1
- package/dist/lib/gpt-api.js +396 -37
- package/dist/lib/gpt-api.js.map +1 -1
- package/dist/tools/memory/saveMemory.js +1 -1
- package/dist/tools/memory/saveMemory.js.map +1 -1
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/hooks/hooks.json +215 -195
- package/languages/dart-flutter.md +509 -0
- package/languages/go.md +396 -0
- package/languages/java-spring.md +586 -0
- package/languages/kotlin-android.md +491 -0
- package/languages/python-django.md +371 -0
- package/languages/python-fastapi.md +386 -0
- package/languages/rust.md +425 -0
- package/languages/swift-ios.md +516 -0
- package/languages/typescript-nextjs.md +441 -0
- package/languages/typescript-node.md +375 -0
- package/languages/typescript-nuxt.md +521 -0
- package/languages/typescript-react-native.md +446 -0
- package/languages/typescript-react.md +525 -0
- package/languages/typescript-vue.md +353 -0
- package/package.json +88 -87
- package/skills/context7-usage.md +82 -82
- package/skills/git-worktree.md +181 -181
- package/skills/multi-llm-orchestration.md +92 -92
- package/skills/parallel-research.md +77 -77
- package/skills/priority-todos.md +239 -239
- package/skills/tool-fallback.md +126 -126
- package/skills/vibe-capabilities.md +129 -129
- package/{.claude/vibe → vibe}/config.json +3 -3
- package/{.claude/vibe → vibe}/constitution.md +184 -184
- package/{.claude/vibe → vibe}/rules/core/communication-guide.md +104 -104
- package/{.claude/vibe → vibe}/rules/core/development-philosophy.md +52 -52
- package/{.claude/vibe → vibe}/rules/core/quick-start.md +120 -120
- package/{.claude/vibe → vibe}/rules/quality/bdd-contract-testing.md +388 -388
- package/{.claude/vibe → vibe}/rules/quality/checklist.md +276 -276
- package/{.claude/vibe → vibe}/rules/quality/testing-strategy.md +437 -437
- package/{.claude/vibe → vibe}/rules/standards/anti-patterns.md +369 -369
- package/{.claude/vibe → vibe}/rules/standards/code-structure.md +291 -291
- package/{.claude/vibe → vibe}/rules/standards/complexity-metrics.md +312 -312
- package/{.claude/vibe → vibe}/rules/standards/naming-conventions.md +198 -198
- package/{.claude/vibe → vibe}/setup.sh +31 -31
- package/{.claude/vibe → vibe}/templates/constitution-template.md +184 -184
- package/{.claude/vibe → vibe}/templates/contract-backend-template.md +517 -517
- package/{.claude/vibe → vibe}/templates/contract-frontend-template.md +594 -594
- package/{.claude/vibe → vibe}/templates/feature-template.md +96 -96
- package/{.claude/vibe → vibe}/templates/spec-template.md +199 -199
package/dist/lib/gpt-api.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GPT API 호출 (ChatGPT Codex Backend)
|
|
3
|
-
* ChatGPT Plus/Pro 구독으로 GPT-5.2 Codex 모델 사용
|
|
2
|
+
* GPT API 호출 (ChatGPT Codex Backend + OpenAI API)
|
|
3
|
+
* - OAuth: ChatGPT Plus/Pro 구독으로 GPT-5.2 Codex 모델 사용
|
|
4
|
+
* - API Key: OpenAI API 직접 호출
|
|
4
5
|
*/
|
|
5
6
|
interface GptModelInfo {
|
|
6
7
|
id: string;
|
|
@@ -44,11 +45,12 @@ export declare const DEFAULT_MODEL = "gpt-5.2";
|
|
|
44
45
|
*/
|
|
45
46
|
export declare function getCodexInstructions(model?: string): Promise<string>;
|
|
46
47
|
/**
|
|
47
|
-
* GPT API 호출 (
|
|
48
|
+
* GPT API 호출 (OAuth 또는 API Key 자동 선택 + Fallback)
|
|
49
|
+
* - webSearch 옵션이 있으면 Tavily를 통해 검색 (API Key 방식 권장)
|
|
48
50
|
*/
|
|
49
51
|
export declare function chat(options: ChatOptions): Promise<ChatResponse>;
|
|
50
52
|
/**
|
|
51
|
-
* 스트리밍 Chat
|
|
53
|
+
* 스트리밍 Chat (OAuth 또는 API Key 자동 선택)
|
|
52
54
|
*/
|
|
53
55
|
export declare function chatStream(options: ChatOptions): AsyncGenerator<StreamChunk>;
|
|
54
56
|
/**
|
|
@@ -80,8 +82,38 @@ export declare function debugCode(prompt: string): Promise<string>;
|
|
|
80
82
|
*/
|
|
81
83
|
export declare function webSearch(prompt: string, country?: string): Promise<string>;
|
|
82
84
|
/**
|
|
83
|
-
* 빠른 웹서치 (GPT-5.
|
|
85
|
+
* 빠른 웹서치 (GPT-5.2 + Web Search)
|
|
84
86
|
*/
|
|
85
87
|
export declare function quickWebSearch(prompt: string): Promise<string>;
|
|
88
|
+
/**
|
|
89
|
+
* Vibe GPT 오케스트레이션 옵션
|
|
90
|
+
*/
|
|
91
|
+
interface VibeGptOptions {
|
|
92
|
+
maxTokens?: number;
|
|
93
|
+
jsonMode?: boolean;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Vibe GPT 오케스트레이션 (검색 없음, JSON 모드)
|
|
97
|
+
* - 검색 제외로 빠른 응답
|
|
98
|
+
* - temperature=0 으로 결정론적 결과
|
|
99
|
+
* - JSON 출력 강제 가능
|
|
100
|
+
*/
|
|
101
|
+
export declare function vibeGptOrchestrate(prompt: string, systemPrompt: string, options?: VibeGptOptions): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Vibe Spec 파싱 (Vibe Spec → 실행 계획)
|
|
104
|
+
*/
|
|
105
|
+
export declare function vibeGptParseSpec(spec: string): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Vibe 실행 계획 수립 (Task → Steps)
|
|
108
|
+
*/
|
|
109
|
+
export declare function vibeGptPlanExecution(task: string, context: string): Promise<string>;
|
|
110
|
+
/**
|
|
111
|
+
* Vibe 코드 분석 (빠른 구조 분석)
|
|
112
|
+
*/
|
|
113
|
+
export declare function vibeGptAnalyze(code: string, question: string): Promise<string>;
|
|
114
|
+
/**
|
|
115
|
+
* Vibe 다음 액션 결정 (상태 기반)
|
|
116
|
+
*/
|
|
117
|
+
export declare function vibeGptDecideNextAction(currentState: string, availableActions: string[], goal: string): Promise<string>;
|
|
86
118
|
export {};
|
|
87
119
|
//# sourceMappingURL=gpt-api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gpt-api.d.ts","sourceRoot":"","sources":["../../src/lib/gpt-api.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gpt-api.d.ts","sourceRoot":"","sources":["../../src/lib/gpt-api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/gpt-api.js
CHANGED
|
@@ -1,10 +1,138 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GPT API 호출 (ChatGPT Codex Backend)
|
|
3
|
-
* ChatGPT Plus/Pro 구독으로 GPT-5.2 Codex 모델 사용
|
|
2
|
+
* GPT API 호출 (ChatGPT Codex Backend + OpenAI API)
|
|
3
|
+
* - OAuth: ChatGPT Plus/Pro 구독으로 GPT-5.2 Codex 모델 사용
|
|
4
|
+
* - API Key: OpenAI API 직접 호출
|
|
4
5
|
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import fs from 'fs';
|
|
5
8
|
import { getValidAccessToken } from './gpt-oauth.js';
|
|
6
9
|
import { CHATGPT_BASE_URL } from './gpt-constants.js';
|
|
7
10
|
import { sleep } from './utils.js';
|
|
11
|
+
/**
|
|
12
|
+
* Tavily API로 웹 검색 수행
|
|
13
|
+
*/
|
|
14
|
+
async function searchWithTavily(query) {
|
|
15
|
+
const apiKey = getTavilyApiKey();
|
|
16
|
+
if (!apiKey) {
|
|
17
|
+
throw new Error('Tavily API 키가 설정되지 않았습니다. TAVILY_API_KEY 환경변수 또는 config.json에 설정하세요.');
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const response = await fetch('https://api.tavily.com/search', {
|
|
21
|
+
method: 'POST',
|
|
22
|
+
headers: { 'Content-Type': 'application/json' },
|
|
23
|
+
body: JSON.stringify({
|
|
24
|
+
api_key: apiKey,
|
|
25
|
+
query: query,
|
|
26
|
+
search_depth: 'advanced',
|
|
27
|
+
max_results: 5,
|
|
28
|
+
include_answer: true,
|
|
29
|
+
}),
|
|
30
|
+
});
|
|
31
|
+
if (!response.ok) {
|
|
32
|
+
const errorText = await response.text();
|
|
33
|
+
throw new Error(`Tavily API 오류 (${response.status}): ${errorText}`);
|
|
34
|
+
}
|
|
35
|
+
const data = await response.json();
|
|
36
|
+
// 검색 결과 포맷팅
|
|
37
|
+
let result = '';
|
|
38
|
+
if (data.answer) {
|
|
39
|
+
result += `**요약:** ${data.answer}\n\n`;
|
|
40
|
+
}
|
|
41
|
+
result += '**검색 결과:**\n';
|
|
42
|
+
for (const item of data.results.slice(0, 5)) {
|
|
43
|
+
result += `- [${item.title}](${item.url})\n ${item.content.slice(0, 200)}...\n\n`;
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Error(`웹 검색 실패: ${error.message}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Tavily API 키 가져오기
|
|
53
|
+
*/
|
|
54
|
+
function getTavilyApiKey() {
|
|
55
|
+
// 1. 환경변수에서 확인
|
|
56
|
+
if (process.env.TAVILY_API_KEY) {
|
|
57
|
+
return process.env.TAVILY_API_KEY;
|
|
58
|
+
}
|
|
59
|
+
// 2. config.json에서 확인
|
|
60
|
+
try {
|
|
61
|
+
const configPath = path.join(process.cwd(), '.claude', 'vibe', 'config.json');
|
|
62
|
+
if (fs.existsSync(configPath)) {
|
|
63
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
64
|
+
if (config.tavily?.apiKey) {
|
|
65
|
+
return config.tavily.apiKey;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch { /* ignore */ }
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
// OpenAI Function Calling 도구 정의
|
|
73
|
+
const WEB_SEARCH_TOOL = {
|
|
74
|
+
type: 'function',
|
|
75
|
+
function: {
|
|
76
|
+
name: 'web_search',
|
|
77
|
+
description: '실시간 정보, 최신 뉴스, 날씨, 주가 등 현재 데이터가 필요할 때 웹 검색을 수행합니다.',
|
|
78
|
+
parameters: {
|
|
79
|
+
type: 'object',
|
|
80
|
+
properties: {
|
|
81
|
+
query: {
|
|
82
|
+
type: 'string',
|
|
83
|
+
description: '검색할 쿼리 (구체적이고 명확하게)',
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
required: ['query'],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
// config에서 API Key 가져오기
|
|
91
|
+
function getApiKeyFromConfig() {
|
|
92
|
+
try {
|
|
93
|
+
const configPath = path.join(process.cwd(), '.claude', 'vibe', 'config.json');
|
|
94
|
+
if (fs.existsSync(configPath)) {
|
|
95
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
96
|
+
if (config.models?.gpt?.apiKey) {
|
|
97
|
+
return config.models.gpt.apiKey;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch { /* ignore */ }
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
// OAuth 토큰 없을 때 config에서 email 제거
|
|
105
|
+
function removeEmailFromConfigIfNoToken() {
|
|
106
|
+
try {
|
|
107
|
+
const configPath = path.join(process.cwd(), '.claude', 'vibe', 'config.json');
|
|
108
|
+
if (fs.existsSync(configPath)) {
|
|
109
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
110
|
+
if (config.models?.gpt?.email) {
|
|
111
|
+
delete config.models.gpt.email;
|
|
112
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch { /* ignore */ }
|
|
117
|
+
}
|
|
118
|
+
// 인증 방식 확인 (OAuth 우선, API Key 대체)
|
|
119
|
+
async function getAuthInfo() {
|
|
120
|
+
// 1. OAuth 토큰 확인 (우선)
|
|
121
|
+
try {
|
|
122
|
+
const { accessToken, email } = await getValidAccessToken();
|
|
123
|
+
return { type: 'oauth', accessToken, email };
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// OAuth 실패 시 config에서 email 제거 (보안)
|
|
127
|
+
removeEmailFromConfigIfNoToken();
|
|
128
|
+
}
|
|
129
|
+
// 2. API Key 확인
|
|
130
|
+
const apiKey = getApiKeyFromConfig();
|
|
131
|
+
if (apiKey) {
|
|
132
|
+
return { type: 'apikey', apiKey };
|
|
133
|
+
}
|
|
134
|
+
throw new Error('GPT 인증 정보가 없습니다. vibe auth gpt (OAuth) 또는 vibe auth gpt --key <key> (API Key)로 설정하세요.');
|
|
135
|
+
}
|
|
8
136
|
// Codex API 엔드포인트
|
|
9
137
|
const CODEX_RESPONSES_URL = `${CHATGPT_BASE_URL}/codex/responses`;
|
|
10
138
|
// GitHub에서 Codex instructions 가져오기 (캐시)
|
|
@@ -146,41 +274,176 @@ async function parseSSEStream(stream) {
|
|
|
146
274
|
return result;
|
|
147
275
|
}
|
|
148
276
|
/**
|
|
149
|
-
*
|
|
277
|
+
* OpenAI Chat Completions API 호출 (API Key 방식 + Function Calling 웹 검색)
|
|
150
278
|
*/
|
|
151
|
-
|
|
152
|
-
const { model = DEFAULT_MODEL, messages = [], systemPrompt = '', webSearch = false,
|
|
153
|
-
//
|
|
154
|
-
|
|
279
|
+
async function chatWithApiKey(apiKey, options) {
|
|
280
|
+
const { model = DEFAULT_MODEL, messages = [], maxTokens = 4096, temperature = 0.7, systemPrompt = '', webSearch = false, } = options;
|
|
281
|
+
// API Key 방식은 표준 OpenAI 모델 사용 (gpt-4o, gpt-4-turbo 등)
|
|
282
|
+
// Codex 모델은 OAuth 전용이므로 대체 모델 매핑
|
|
283
|
+
const apiKeyModelMap = {
|
|
284
|
+
'gpt-5.2': 'gpt-4o',
|
|
285
|
+
'gpt-5.2-codex': 'gpt-4o',
|
|
286
|
+
'gpt-5.1-codex': 'gpt-4-turbo',
|
|
287
|
+
'gpt-5.1-codex-mini': 'gpt-4o-mini',
|
|
288
|
+
'gpt-5.1-codex-max': 'gpt-4o',
|
|
289
|
+
};
|
|
290
|
+
const actualModel = apiKeyModelMap[model] || 'gpt-4o';
|
|
291
|
+
// 메시지 구성
|
|
292
|
+
const apiMessages = [];
|
|
293
|
+
if (systemPrompt) {
|
|
294
|
+
apiMessages.push({ role: 'system', content: systemPrompt });
|
|
295
|
+
}
|
|
296
|
+
for (const msg of messages) {
|
|
297
|
+
apiMessages.push({ role: msg.role, content: msg.content });
|
|
298
|
+
}
|
|
299
|
+
const retryCount = options._retryCount || 0;
|
|
300
|
+
const maxRetries = 3;
|
|
301
|
+
// 웹 검색이 활성화되면 도구 추가
|
|
302
|
+
const tools = webSearch && getTavilyApiKey() ? [WEB_SEARCH_TOOL] : undefined;
|
|
303
|
+
try {
|
|
304
|
+
// 1차 API 호출
|
|
305
|
+
const requestBody = {
|
|
306
|
+
model: actualModel,
|
|
307
|
+
messages: apiMessages,
|
|
308
|
+
max_tokens: maxTokens,
|
|
309
|
+
temperature,
|
|
310
|
+
};
|
|
311
|
+
if (tools) {
|
|
312
|
+
requestBody.tools = tools;
|
|
313
|
+
requestBody.tool_choice = 'auto';
|
|
314
|
+
}
|
|
315
|
+
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
316
|
+
method: 'POST',
|
|
317
|
+
headers: {
|
|
318
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
319
|
+
'Content-Type': 'application/json',
|
|
320
|
+
},
|
|
321
|
+
body: JSON.stringify(requestBody),
|
|
322
|
+
});
|
|
323
|
+
if (!response.ok) {
|
|
324
|
+
const errorText = await response.text();
|
|
325
|
+
// 429 Rate Limit - 재시도
|
|
326
|
+
if (response.status === 429 && retryCount < maxRetries) {
|
|
327
|
+
const delay = Math.pow(2, retryCount) * 1000;
|
|
328
|
+
await sleep(delay);
|
|
329
|
+
return chatWithApiKey(apiKey, { ...options, _retryCount: retryCount + 1 });
|
|
330
|
+
}
|
|
331
|
+
let errorMessage = `OpenAI API 오류 (${response.status})`;
|
|
332
|
+
try {
|
|
333
|
+
const errorJson = JSON.parse(errorText);
|
|
334
|
+
if (errorJson.error?.message) {
|
|
335
|
+
errorMessage = errorJson.error.message;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
catch { /* ignore */ }
|
|
339
|
+
throw new Error(errorMessage);
|
|
340
|
+
}
|
|
341
|
+
const result = await response.json();
|
|
342
|
+
const assistantMessage = result.choices[0]?.message;
|
|
343
|
+
// Function Calling 처리 (웹 검색)
|
|
344
|
+
if (assistantMessage?.tool_calls && assistantMessage.tool_calls.length > 0) {
|
|
345
|
+
// 메시지에 assistant 응답 추가
|
|
346
|
+
apiMessages.push({
|
|
347
|
+
role: 'assistant',
|
|
348
|
+
content: assistantMessage.content,
|
|
349
|
+
...{ tool_calls: assistantMessage.tool_calls },
|
|
350
|
+
});
|
|
351
|
+
// 각 도구 호출 처리
|
|
352
|
+
for (const toolCall of assistantMessage.tool_calls) {
|
|
353
|
+
if (toolCall.function.name === 'web_search') {
|
|
354
|
+
const args = JSON.parse(toolCall.function.arguments);
|
|
355
|
+
let searchResult;
|
|
356
|
+
try {
|
|
357
|
+
searchResult = await searchWithTavily(args.query);
|
|
358
|
+
}
|
|
359
|
+
catch (error) {
|
|
360
|
+
searchResult = `검색 오류: ${error.message}`;
|
|
361
|
+
}
|
|
362
|
+
// 도구 결과 추가
|
|
363
|
+
apiMessages.push({
|
|
364
|
+
role: 'tool',
|
|
365
|
+
content: searchResult,
|
|
366
|
+
tool_call_id: toolCall.id,
|
|
367
|
+
name: 'web_search',
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
// 2차 API 호출 (검색 결과 포함)
|
|
372
|
+
const secondResponse = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
373
|
+
method: 'POST',
|
|
374
|
+
headers: {
|
|
375
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
376
|
+
'Content-Type': 'application/json',
|
|
377
|
+
},
|
|
378
|
+
body: JSON.stringify({
|
|
379
|
+
model: actualModel,
|
|
380
|
+
messages: apiMessages,
|
|
381
|
+
max_tokens: maxTokens,
|
|
382
|
+
temperature,
|
|
383
|
+
}),
|
|
384
|
+
});
|
|
385
|
+
if (!secondResponse.ok) {
|
|
386
|
+
throw new Error(`OpenAI API 2차 호출 오류 (${secondResponse.status})`);
|
|
387
|
+
}
|
|
388
|
+
const secondResult = await secondResponse.json();
|
|
389
|
+
return {
|
|
390
|
+
content: secondResult.choices[0]?.message?.content || '',
|
|
391
|
+
model: secondResult.model,
|
|
392
|
+
finishReason: secondResult.choices[0]?.finish_reason || 'stop',
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
// 일반 응답 (Function Calling 없음)
|
|
396
|
+
return {
|
|
397
|
+
content: assistantMessage?.content || '',
|
|
398
|
+
model: result.model,
|
|
399
|
+
finishReason: result.choices[0]?.finish_reason || 'stop',
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
catch (error) {
|
|
403
|
+
if (error.name === 'TypeError' && retryCount < maxRetries) {
|
|
404
|
+
const delay = Math.pow(2, retryCount) * 1000;
|
|
405
|
+
await sleep(delay);
|
|
406
|
+
return chatWithApiKey(apiKey, { ...options, _retryCount: retryCount + 1 });
|
|
407
|
+
}
|
|
408
|
+
throw error;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* GPT API 호출 (Codex Backend - OAuth 방식)
|
|
413
|
+
* - webSearch가 true이면 Tavily로 먼저 검색 후 결과를 컨텍스트로 전달
|
|
414
|
+
*/
|
|
415
|
+
async function chatWithOAuth(accessToken, options) {
|
|
416
|
+
const { model = DEFAULT_MODEL, messages = [], systemPrompt = '', webSearch = false, } = options;
|
|
155
417
|
// 모델 정보 가져오기
|
|
156
418
|
const modelInfo = GPT_MODELS[model] || GPT_MODELS[DEFAULT_MODEL];
|
|
157
419
|
// Codex instructions 가져오기
|
|
158
420
|
const instructions = await getCodexInstructions(modelInfo.id);
|
|
421
|
+
// 웹 검색이 필요하면 Tavily로 먼저 검색
|
|
422
|
+
let searchContext = '';
|
|
423
|
+
if (webSearch && getTavilyApiKey()) {
|
|
424
|
+
const lastUserMessage = messages.filter(m => m.role === 'user').pop();
|
|
425
|
+
if (lastUserMessage) {
|
|
426
|
+
try {
|
|
427
|
+
searchContext = await searchWithTavily(lastUserMessage.content);
|
|
428
|
+
searchContext = `\n\n<web_search_results>\n${searchContext}\n</web_search_results>`;
|
|
429
|
+
}
|
|
430
|
+
catch {
|
|
431
|
+
// 검색 실패 시 무시하고 계속 진행
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
159
435
|
// 메시지를 Codex 형식으로 변환
|
|
160
436
|
const input = messages.map(msg => ({
|
|
161
437
|
type: 'message',
|
|
162
438
|
role: msg.role === 'assistant' ? 'assistant' : 'user',
|
|
163
439
|
content: [{ type: 'input_text', text: msg.content }],
|
|
164
440
|
}));
|
|
165
|
-
// 시스템
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
// 웹서치 도구 설정
|
|
170
|
-
const tools = [];
|
|
171
|
-
if (webSearch) {
|
|
172
|
-
const webSearchTool = {
|
|
173
|
-
type: 'web_search_preview',
|
|
174
|
-
};
|
|
175
|
-
if (userLocation) {
|
|
176
|
-
webSearchTool.user_location = {
|
|
177
|
-
type: 'approximate',
|
|
178
|
-
country: userLocation.country,
|
|
179
|
-
};
|
|
180
|
-
}
|
|
181
|
-
tools.push(webSearchTool);
|
|
441
|
+
// 시스템 프롬프트 + 검색 결과를 instructions에 추가
|
|
442
|
+
let finalInstructions = instructions;
|
|
443
|
+
if (systemPrompt || searchContext) {
|
|
444
|
+
finalInstructions = `${instructions}\n\n<user_context>\n${systemPrompt}${searchContext}\n</user_context>`;
|
|
182
445
|
}
|
|
183
|
-
// 요청 본문
|
|
446
|
+
// 요청 본문 (web_search_preview 도구는 사용하지 않음 - 지원 안 됨)
|
|
184
447
|
const requestBody = {
|
|
185
448
|
model: modelInfo.id,
|
|
186
449
|
store: false,
|
|
@@ -191,10 +454,6 @@ export async function chat(options) {
|
|
|
191
454
|
text: { verbosity: 'medium' },
|
|
192
455
|
include: ['reasoning.encrypted_content'],
|
|
193
456
|
};
|
|
194
|
-
// 웹서치 도구 추가
|
|
195
|
-
if (tools.length > 0) {
|
|
196
|
-
requestBody.tools = tools;
|
|
197
|
-
}
|
|
198
457
|
// API 호출 (재시도 로직 포함)
|
|
199
458
|
const retryCount = options._retryCount || 0;
|
|
200
459
|
const maxRetries = 3;
|
|
@@ -215,7 +474,7 @@ export async function chat(options) {
|
|
|
215
474
|
if (response.status === 429 && retryCount < maxRetries) {
|
|
216
475
|
const delay = Math.pow(2, retryCount) * 1000;
|
|
217
476
|
await sleep(delay);
|
|
218
|
-
return
|
|
477
|
+
return chatWithOAuth(accessToken, { ...options, _retryCount: retryCount + 1 });
|
|
219
478
|
}
|
|
220
479
|
// 에러 파싱
|
|
221
480
|
let errorMessage = `GPT API 오류 (${response.status})`;
|
|
@@ -235,9 +494,10 @@ export async function chat(options) {
|
|
|
235
494
|
}
|
|
236
495
|
// 스트리밍 응답 파싱
|
|
237
496
|
const content = await parseSSEStream(response.body);
|
|
497
|
+
const modelInfo2 = GPT_MODELS[model] || GPT_MODELS[DEFAULT_MODEL];
|
|
238
498
|
return {
|
|
239
499
|
content,
|
|
240
|
-
model:
|
|
500
|
+
model: modelInfo2.name,
|
|
241
501
|
finishReason: 'stop',
|
|
242
502
|
};
|
|
243
503
|
}
|
|
@@ -246,17 +506,68 @@ export async function chat(options) {
|
|
|
246
506
|
if (error.name === 'TypeError' && retryCount < maxRetries) {
|
|
247
507
|
const delay = Math.pow(2, retryCount) * 1000;
|
|
248
508
|
await sleep(delay);
|
|
249
|
-
return
|
|
509
|
+
return chatWithOAuth(accessToken, { ...options, _retryCount: retryCount + 1 });
|
|
250
510
|
}
|
|
251
511
|
throw error;
|
|
252
512
|
}
|
|
253
513
|
}
|
|
254
514
|
/**
|
|
255
|
-
*
|
|
515
|
+
* GPT API 호출 (OAuth 또는 API Key 자동 선택 + Fallback)
|
|
516
|
+
* - webSearch 옵션이 있으면 Tavily를 통해 검색 (API Key 방식 권장)
|
|
517
|
+
*/
|
|
518
|
+
export async function chat(options) {
|
|
519
|
+
const authInfo = await getAuthInfo();
|
|
520
|
+
const apiKey = getApiKeyFromConfig();
|
|
521
|
+
// 웹 검색이 필요하고 Tavily API 키가 있으면 API Key 방식 우선 사용
|
|
522
|
+
// (Codex API는 web_search_preview를 지원하지 않음)
|
|
523
|
+
if (options.webSearch && getTavilyApiKey() && apiKey) {
|
|
524
|
+
return chatWithApiKey(apiKey, options);
|
|
525
|
+
}
|
|
526
|
+
// API Key 방식
|
|
527
|
+
if (authInfo.type === 'apikey' && authInfo.apiKey) {
|
|
528
|
+
return chatWithApiKey(authInfo.apiKey, options);
|
|
529
|
+
}
|
|
530
|
+
// OAuth 방식 (API Key fallback 지원)
|
|
531
|
+
if (authInfo.type === 'oauth' && authInfo.accessToken) {
|
|
532
|
+
try {
|
|
533
|
+
// 웹 검색 요청인데 OAuth 방식이면 web_search_preview 에러 가능
|
|
534
|
+
// → API Key로 우선 시도
|
|
535
|
+
if (options.webSearch && apiKey) {
|
|
536
|
+
return chatWithApiKey(apiKey, options);
|
|
537
|
+
}
|
|
538
|
+
return await chatWithOAuth(authInfo.accessToken, options);
|
|
539
|
+
}
|
|
540
|
+
catch (error) {
|
|
541
|
+
// Rate Limit(429), 인증 오류(401/403), 또는 Unsupported tool 오류 시 API Key로 fallback
|
|
542
|
+
const errorMsg = error.message;
|
|
543
|
+
const shouldFallback = errorMsg.includes('429') ||
|
|
544
|
+
errorMsg.includes('401') ||
|
|
545
|
+
errorMsg.includes('403') ||
|
|
546
|
+
errorMsg.includes('Unsupported tool') ||
|
|
547
|
+
errorMsg.includes('web_search');
|
|
548
|
+
if (apiKey && shouldFallback) {
|
|
549
|
+
console.log('⚠️ OAuth 오류 → API Key + Tavily로 전환');
|
|
550
|
+
return chatWithApiKey(apiKey, options);
|
|
551
|
+
}
|
|
552
|
+
throw error;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
throw new Error('GPT 인증 정보가 없습니다.');
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* 스트리밍 Chat (OAuth 또는 API Key 자동 선택)
|
|
256
559
|
*/
|
|
257
560
|
export async function* chatStream(options) {
|
|
561
|
+
const authInfo = await getAuthInfo();
|
|
562
|
+
// API Key 방식은 스트리밍 미지원 - 일반 chat 사용
|
|
563
|
+
if (authInfo.type === 'apikey') {
|
|
564
|
+
const result = await chat(options);
|
|
565
|
+
yield { type: 'delta', content: result.content };
|
|
566
|
+
yield { type: 'done' };
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
// OAuth 방식 - Codex 스트리밍
|
|
258
570
|
const { model = DEFAULT_MODEL, messages = [], systemPrompt = '', } = options;
|
|
259
|
-
const { accessToken } = await getValidAccessToken();
|
|
260
571
|
const modelInfo = GPT_MODELS[model] || GPT_MODELS[DEFAULT_MODEL];
|
|
261
572
|
const instructions = await getCodexInstructions(modelInfo.id);
|
|
262
573
|
const input = messages.map(msg => ({
|
|
@@ -280,7 +591,7 @@ export async function* chatStream(options) {
|
|
|
280
591
|
const response = await fetch(CODEX_RESPONSES_URL, {
|
|
281
592
|
method: 'POST',
|
|
282
593
|
headers: {
|
|
283
|
-
'Authorization': `Bearer ${accessToken}`,
|
|
594
|
+
'Authorization': `Bearer ${authInfo.accessToken}`,
|
|
284
595
|
'Content-Type': 'application/json',
|
|
285
596
|
'OpenAI-Beta': 'responses=experimental',
|
|
286
597
|
'originator': 'codex_cli_rs',
|
|
@@ -387,15 +698,63 @@ export async function webSearch(prompt, country) {
|
|
|
387
698
|
});
|
|
388
699
|
}
|
|
389
700
|
/**
|
|
390
|
-
* 빠른 웹서치 (GPT-5.
|
|
701
|
+
* 빠른 웹서치 (GPT-5.2 + Web Search)
|
|
391
702
|
*/
|
|
392
703
|
export async function quickWebSearch(prompt) {
|
|
393
704
|
return ask(prompt, {
|
|
394
|
-
model: 'gpt-5.
|
|
705
|
+
model: 'gpt-5.2',
|
|
395
706
|
maxTokens: 2048,
|
|
396
707
|
temperature: 0.3,
|
|
397
708
|
webSearch: true,
|
|
398
709
|
userLocation: { country: 'KR' },
|
|
399
710
|
});
|
|
400
711
|
}
|
|
712
|
+
/**
|
|
713
|
+
* Vibe GPT 오케스트레이션 (검색 없음, JSON 모드)
|
|
714
|
+
* - 검색 제외로 빠른 응답
|
|
715
|
+
* - temperature=0 으로 결정론적 결과
|
|
716
|
+
* - JSON 출력 강제 가능
|
|
717
|
+
*/
|
|
718
|
+
export async function vibeGptOrchestrate(prompt, systemPrompt, options = {}) {
|
|
719
|
+
const { maxTokens = 4096, jsonMode = true } = options;
|
|
720
|
+
const result = await chat({
|
|
721
|
+
model: 'gpt-5.2-codex',
|
|
722
|
+
messages: [{ role: 'user', content: prompt }],
|
|
723
|
+
maxTokens,
|
|
724
|
+
temperature: 0,
|
|
725
|
+
webSearch: false, // 검색 제외
|
|
726
|
+
systemPrompt: jsonMode
|
|
727
|
+
? `${systemPrompt}\n\nIMPORTANT: You must respond with valid JSON only. No markdown, no explanation, just pure JSON.`
|
|
728
|
+
: systemPrompt,
|
|
729
|
+
});
|
|
730
|
+
return result.content;
|
|
731
|
+
}
|
|
732
|
+
/**
|
|
733
|
+
* Vibe Spec 파싱 (Vibe Spec → 실행 계획)
|
|
734
|
+
*/
|
|
735
|
+
export async function vibeGptParseSpec(spec) {
|
|
736
|
+
return vibeGptOrchestrate(spec, `You are a Vibe Spec parser. Parse the given specification and output a structured execution plan.
|
|
737
|
+
Output format: { "phases": [...], "files": [...], "dependencies": [...] }`);
|
|
738
|
+
}
|
|
739
|
+
/**
|
|
740
|
+
* Vibe 실행 계획 수립 (Task → Steps)
|
|
741
|
+
*/
|
|
742
|
+
export async function vibeGptPlanExecution(task, context) {
|
|
743
|
+
return vibeGptOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Vibe execution planner. Given a task and context, create a step-by-step execution plan.
|
|
744
|
+
Output format: { "steps": [{ "id": 1, "action": "...", "target": "...", "expected": "..." }], "estimatedComplexity": "low|medium|high" }`);
|
|
745
|
+
}
|
|
746
|
+
/**
|
|
747
|
+
* Vibe 코드 분석 (빠른 구조 분석)
|
|
748
|
+
*/
|
|
749
|
+
export async function vibeGptAnalyze(code, question) {
|
|
750
|
+
return vibeGptOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
|
|
751
|
+
Output format: { "answer": "...", "confidence": 0.0-1.0, "relatedSymbols": [...] }`);
|
|
752
|
+
}
|
|
753
|
+
/**
|
|
754
|
+
* Vibe 다음 액션 결정 (상태 기반)
|
|
755
|
+
*/
|
|
756
|
+
export async function vibeGptDecideNextAction(currentState, availableActions, goal) {
|
|
757
|
+
return vibeGptOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
|
|
758
|
+
Output format: { "selectedAction": "...", "reason": "...", "parameters": {} }`);
|
|
759
|
+
}
|
|
401
760
|
//# sourceMappingURL=gpt-api.js.map
|
package/dist/lib/gpt-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gpt-api.js","sourceRoot":"","sources":["../../src/lib/gpt-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gpt-api.js","sourceRoot":"","sources":["../../src/lib/gpt-api.ts"],"names":[],"mappings":"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"}
|