@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.
Files changed (102) hide show
  1. package/CLAUDE.md +345 -351
  2. package/LICENSE +21 -21
  3. package/README.md +210 -210
  4. package/agents/compounder.md +261 -261
  5. package/agents/diagrammer.md +178 -178
  6. package/agents/e2e-tester.md +266 -266
  7. package/agents/explorer.md +48 -48
  8. package/agents/implementer.md +53 -53
  9. package/agents/research/best-practices-agent.md +139 -139
  10. package/agents/research/codebase-patterns-agent.md +147 -147
  11. package/agents/research/framework-docs-agent.md +178 -178
  12. package/agents/research/security-advisory-agent.md +164 -164
  13. package/agents/review/architecture-reviewer.md +107 -107
  14. package/agents/review/complexity-reviewer.md +116 -116
  15. package/agents/review/data-integrity-reviewer.md +88 -88
  16. package/agents/review/git-history-reviewer.md +103 -103
  17. package/agents/review/performance-reviewer.md +86 -86
  18. package/agents/review/python-reviewer.md +150 -150
  19. package/agents/review/rails-reviewer.md +139 -139
  20. package/agents/review/react-reviewer.md +144 -144
  21. package/agents/review/security-reviewer.md +80 -80
  22. package/agents/review/simplicity-reviewer.md +140 -140
  23. package/agents/review/test-coverage-reviewer.md +116 -116
  24. package/agents/review/typescript-reviewer.md +127 -127
  25. package/agents/searcher.md +54 -54
  26. package/agents/simplifier.md +119 -119
  27. package/agents/tester.md +49 -49
  28. package/agents/ui-previewer.md +129 -129
  29. package/commands/vibe.analyze.md +260 -260
  30. package/commands/vibe.reason.md +223 -223
  31. package/commands/vibe.review.md +213 -213
  32. package/commands/vibe.run.md +931 -931
  33. package/commands/vibe.spec.md +442 -442
  34. package/commands/vibe.utils.md +101 -101
  35. package/commands/vibe.verify.md +282 -282
  36. package/dist/cli/collaborator.js +52 -52
  37. package/dist/cli/detect.js +32 -32
  38. package/dist/cli/index.js +137 -137
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cli/llm.js +147 -147
  41. package/dist/cli/llm.js.map +1 -1
  42. package/dist/cli/setup.d.ts +1 -1
  43. package/dist/cli/setup.d.ts.map +1 -1
  44. package/dist/cli/setup.js +48 -54
  45. package/dist/cli/setup.js.map +1 -1
  46. package/dist/lib/MemoryManager.d.ts +4 -0
  47. package/dist/lib/MemoryManager.d.ts.map +1 -1
  48. package/dist/lib/MemoryManager.js +21 -2
  49. package/dist/lib/MemoryManager.js.map +1 -1
  50. package/dist/lib/PythonParser.js +108 -108
  51. package/dist/lib/gemini-api.d.ts +47 -3
  52. package/dist/lib/gemini-api.d.ts.map +1 -1
  53. package/dist/lib/gemini-api.js +253 -7
  54. package/dist/lib/gemini-api.js.map +1 -1
  55. package/dist/lib/gpt-api.d.ts +37 -5
  56. package/dist/lib/gpt-api.d.ts.map +1 -1
  57. package/dist/lib/gpt-api.js +396 -37
  58. package/dist/lib/gpt-api.js.map +1 -1
  59. package/dist/tools/memory/saveMemory.js +1 -1
  60. package/dist/tools/memory/saveMemory.js.map +1 -1
  61. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  62. package/hooks/hooks.json +215 -195
  63. package/languages/dart-flutter.md +509 -0
  64. package/languages/go.md +396 -0
  65. package/languages/java-spring.md +586 -0
  66. package/languages/kotlin-android.md +491 -0
  67. package/languages/python-django.md +371 -0
  68. package/languages/python-fastapi.md +386 -0
  69. package/languages/rust.md +425 -0
  70. package/languages/swift-ios.md +516 -0
  71. package/languages/typescript-nextjs.md +441 -0
  72. package/languages/typescript-node.md +375 -0
  73. package/languages/typescript-nuxt.md +521 -0
  74. package/languages/typescript-react-native.md +446 -0
  75. package/languages/typescript-react.md +525 -0
  76. package/languages/typescript-vue.md +353 -0
  77. package/package.json +88 -87
  78. package/skills/context7-usage.md +82 -82
  79. package/skills/git-worktree.md +181 -181
  80. package/skills/multi-llm-orchestration.md +92 -92
  81. package/skills/parallel-research.md +77 -77
  82. package/skills/priority-todos.md +239 -239
  83. package/skills/tool-fallback.md +126 -126
  84. package/skills/vibe-capabilities.md +129 -129
  85. package/{.claude/vibe → vibe}/config.json +3 -3
  86. package/{.claude/vibe → vibe}/constitution.md +184 -184
  87. package/{.claude/vibe → vibe}/rules/core/communication-guide.md +104 -104
  88. package/{.claude/vibe → vibe}/rules/core/development-philosophy.md +52 -52
  89. package/{.claude/vibe → vibe}/rules/core/quick-start.md +120 -120
  90. package/{.claude/vibe → vibe}/rules/quality/bdd-contract-testing.md +388 -388
  91. package/{.claude/vibe → vibe}/rules/quality/checklist.md +276 -276
  92. package/{.claude/vibe → vibe}/rules/quality/testing-strategy.md +437 -437
  93. package/{.claude/vibe → vibe}/rules/standards/anti-patterns.md +369 -369
  94. package/{.claude/vibe → vibe}/rules/standards/code-structure.md +291 -291
  95. package/{.claude/vibe → vibe}/rules/standards/complexity-metrics.md +312 -312
  96. package/{.claude/vibe → vibe}/rules/standards/naming-conventions.md +198 -198
  97. package/{.claude/vibe → vibe}/setup.sh +31 -31
  98. package/{.claude/vibe → vibe}/templates/constitution-template.md +184 -184
  99. package/{.claude/vibe → vibe}/templates/contract-backend-template.md +517 -517
  100. package/{.claude/vibe → vibe}/templates/contract-frontend-template.md +594 -594
  101. package/{.claude/vibe → vibe}/templates/feature-template.md +96 -96
  102. package/{.claude/vibe → vibe}/templates/spec-template.md +199 -199
@@ -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 호출 (Codex Backend)
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.1 Codex Mini + Web Search)
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;;;GAGG;AAOH,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAWD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAyCnD,CAAC;AAGF,eAAO,MAAM,aAAa,YAAY,CAAC;AAEvC;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,GAAE,MAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmDrF;AAqCD;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAyHtE;AAED;;GAEG;AACH,wBAAuB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,CA6EnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtG;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM9D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASjF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQpE"}
1
+ {"version":3,"file":"gpt-api.d.ts","sourceRoot":"","sources":["../../src/lib/gpt-api.ts"],"names":[],"mappings":"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"}
@@ -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
- * GPT API 호출 (Codex Backend)
277
+ * OpenAI Chat Completions API 호출 (API Key 방식 + Function Calling 웹 검색)
150
278
  */
151
- export async function chat(options) {
152
- const { model = DEFAULT_MODEL, messages = [], systemPrompt = '', webSearch = false, userLocation, } = options;
153
- // 토큰 가져오기
154
- const { accessToken } = await getValidAccessToken();
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
- // 시스템 프롬프트가 있으면 instructions에 추가
166
- const finalInstructions = systemPrompt
167
- ? `${instructions}\n\n<user_context>\n${systemPrompt}\n</user_context>`
168
- : instructions;
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 chat({ ...options, _retryCount: retryCount + 1 });
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: modelInfo.name,
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 chat({ ...options, _retryCount: retryCount + 1 });
509
+ return chatWithOAuth(accessToken, { ...options, _retryCount: retryCount + 1 });
250
510
  }
251
511
  throw error;
252
512
  }
253
513
  }
254
514
  /**
255
- * 스트리밍 Chat
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.1 Codex Mini + Web Search)
701
+ * 빠른 웹서치 (GPT-5.2 + Web Search)
391
702
  */
392
703
  export async function quickWebSearch(prompt) {
393
704
  return ask(prompt, {
394
- model: 'gpt-5.1-codex-mini',
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
@@ -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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"}