@su-record/vibe 2.9.7 → 2.9.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/codex-proxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"codex-proxy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/codex-proxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwBH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAEjF;AAID,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAI7D;AAID,wBAAgB,WAAW,IAAI,IAAI,CAQlC;AAID,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAkChD;AAwMD,wBAAgB,SAAS,IAAI,IAAI,CAiBhC"}
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import fs from 'fs';
|
|
6
6
|
import os from 'os';
|
|
7
|
+
import path from 'path';
|
|
7
8
|
import * as p from '@clack/prompts';
|
|
8
9
|
import { launchSession, generateShellFunction, checkAuthSource, getProxySettings, } from '../../infra/lib/codex-proxy.js';
|
|
10
|
+
import { findCodexCredentials } from '../../infra/lib/gpt/auth.js';
|
|
9
11
|
import { patchGlobalConfig } from '../../infra/lib/config/GlobalConfigManager.js';
|
|
10
12
|
const AUTH_LABELS = {
|
|
11
13
|
'codex-cli': 'Codex CLI (ChatGPT Pro)',
|
|
@@ -32,22 +34,63 @@ export function codexStatus() {
|
|
|
32
34
|
console.log(` Target: ${settings.targetUrl || 'https://api.openai.com'}`);
|
|
33
35
|
console.log(` 명령어: ${settings.alias || 'vibe codex'}\n`);
|
|
34
36
|
}
|
|
35
|
-
// ─── Setup
|
|
37
|
+
// ─── Setup ──────────────────────────────────────────────────
|
|
36
38
|
export async function codexSetup() {
|
|
37
39
|
p.intro('Codex Proxy 설정');
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
40
|
+
// 1. 인증 자동 감지
|
|
41
|
+
const detected = detectAuth();
|
|
42
|
+
if (detected) {
|
|
43
|
+
p.log.success(`${detected.label} 인증 확인됨`);
|
|
44
|
+
// 2. 모델 자동 조회
|
|
45
|
+
const models = detected.provider === 'chatgpt-pro'
|
|
46
|
+
? readCodexModelsCache()
|
|
47
|
+
: detected.key ? await fetchModels(detected.url || 'https://api.openai.com', detected.key) : [];
|
|
48
|
+
const model = await selectModel(models);
|
|
49
|
+
const alias = await selectAlias();
|
|
50
|
+
saveConfig(detected.provider, { key: detected.key, url: detected.url }, model, alias);
|
|
51
|
+
await registerShell(alias);
|
|
52
|
+
p.outro(`설정 완료! ${alias} 로 실행하세요`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// 감지 실패 → 수동 설정
|
|
56
|
+
p.log.warn('인증 정보를 찾을 수 없습니다');
|
|
57
|
+
const provider = await selectProvider();
|
|
58
|
+
const auth = await configureAuth(provider);
|
|
59
|
+
const models = auth.key
|
|
60
|
+
? await fetchModels(auth.url || 'https://api.openai.com', auth.key)
|
|
61
|
+
: [];
|
|
62
|
+
const model = await selectModel(models);
|
|
63
|
+
const alias = await selectAlias();
|
|
64
|
+
saveConfig(provider, auth, model, alias);
|
|
65
|
+
await registerShell(alias);
|
|
66
|
+
p.outro(`설정 완료! ${alias} 로 실행하세요`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function detectAuth() {
|
|
70
|
+
// 1. Codex CLI (ChatGPT Pro)
|
|
71
|
+
const codexCreds = findCodexCredentials();
|
|
72
|
+
if (codexCreds) {
|
|
73
|
+
return { provider: 'chatgpt-pro', label: 'Codex CLI (ChatGPT Pro)' };
|
|
74
|
+
}
|
|
75
|
+
// 2. 환경변수
|
|
76
|
+
if (process.env.OPENAI_API_KEY) {
|
|
77
|
+
return { provider: 'openai', label: 'OpenAI (OPENAI_API_KEY)', key: process.env.OPENAI_API_KEY };
|
|
78
|
+
}
|
|
79
|
+
if (process.env.GEMINI_API_KEY) {
|
|
80
|
+
return {
|
|
81
|
+
provider: 'gemini', label: 'Gemini (GEMINI_API_KEY)',
|
|
82
|
+
key: process.env.GEMINI_API_KEY,
|
|
83
|
+
url: 'https://generativelanguage.googleapis.com/v1beta/openai',
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
45
87
|
}
|
|
88
|
+
// ─── 수동 설정 (감지 실패 시) ───────────────────────────────
|
|
46
89
|
async function selectProvider() {
|
|
47
90
|
const result = await p.select({
|
|
48
91
|
message: 'Provider 선택',
|
|
49
92
|
options: [
|
|
50
|
-
{ value: 'chatgpt-pro', label: 'ChatGPT Pro
|
|
93
|
+
{ value: 'chatgpt-pro', label: 'ChatGPT Pro', hint: 'codex login 필요' },
|
|
51
94
|
{ value: 'openai', label: 'OpenAI API Key' },
|
|
52
95
|
{ value: 'gemini', label: 'Gemini API Key' },
|
|
53
96
|
{ value: 'custom', label: '커스텀 (OpenAI 호환)', hint: 'Groq, Together, Ollama 등' },
|
|
@@ -62,7 +105,7 @@ async function selectProvider() {
|
|
|
62
105
|
async function configureAuth(provider) {
|
|
63
106
|
switch (provider) {
|
|
64
107
|
case 'chatgpt-pro':
|
|
65
|
-
p.log.
|
|
108
|
+
p.log.warn('codex login 으로 ChatGPT Pro 인증 후 다시 실행하세요');
|
|
66
109
|
return {};
|
|
67
110
|
case 'openai': {
|
|
68
111
|
const key = await textOrCancel('OpenAI API Key', 'sk-...');
|
|
@@ -81,20 +124,8 @@ async function configureAuth(provider) {
|
|
|
81
124
|
return {};
|
|
82
125
|
}
|
|
83
126
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
let token = auth.key;
|
|
87
|
-
// ChatGPT Pro: Codex CLI OAuth 토큰으로 시도
|
|
88
|
-
if (!token && provider === 'chatgpt-pro') {
|
|
89
|
-
try {
|
|
90
|
-
const { getAuthInfo } = await import('../../infra/lib/gpt/auth.js');
|
|
91
|
-
const info = await getAuthInfo();
|
|
92
|
-
token = info.accessToken || info.apiKey;
|
|
93
|
-
}
|
|
94
|
-
catch { /* codex login 아직 안 한 경우 */ }
|
|
95
|
-
}
|
|
96
|
-
// API에서 모델 목록 조회
|
|
97
|
-
const models = token ? await fetchModels(baseUrl, token) : [];
|
|
127
|
+
// ─── 모델 선택 ──────────────────────────────────────────────
|
|
128
|
+
async function selectModel(models) {
|
|
98
129
|
if (models.length > 0) {
|
|
99
130
|
const options = models.map(m => ({ value: m, label: m }));
|
|
100
131
|
options.push({ value: '_custom', label: '직접 입력' });
|
|
@@ -108,7 +139,18 @@ async function selectModel(provider, auth) {
|
|
|
108
139
|
}
|
|
109
140
|
return textOrCancel('모델 이름');
|
|
110
141
|
}
|
|
111
|
-
|
|
142
|
+
function readCodexModelsCache() {
|
|
143
|
+
const codexHome = process.env.CODEX_HOME || path.join(os.homedir(), '.codex');
|
|
144
|
+
const cachePath = path.join(codexHome, 'models_cache.json');
|
|
145
|
+
try {
|
|
146
|
+
const data = JSON.parse(fs.readFileSync(cachePath, 'utf-8'));
|
|
147
|
+
return (data.models || []).map(m => m.slug).filter(Boolean);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// ─── API 모델 목록 조회 ─────────────────────────────────────
|
|
112
154
|
const EXCLUDE_PATTERNS = ['embedding', 'tts', 'whisper', 'dall-e', 'moderation', 'davinci', 'babbage'];
|
|
113
155
|
async function fetchModels(baseUrl, token) {
|
|
114
156
|
const spin = p.spinner();
|
|
@@ -118,7 +160,7 @@ async function fetchModels(baseUrl, token) {
|
|
|
118
160
|
headers: { 'Authorization': `Bearer ${token}` },
|
|
119
161
|
});
|
|
120
162
|
if (!res.ok) {
|
|
121
|
-
spin.stop('모델 조회
|
|
163
|
+
spin.stop('모델 조회 실패');
|
|
122
164
|
return [];
|
|
123
165
|
}
|
|
124
166
|
const data = await res.json();
|
|
@@ -131,7 +173,7 @@ async function fetchModels(baseUrl, token) {
|
|
|
131
173
|
return filtered;
|
|
132
174
|
}
|
|
133
175
|
catch {
|
|
134
|
-
spin.stop('모델 조회
|
|
176
|
+
spin.stop('모델 조회 실패');
|
|
135
177
|
return [];
|
|
136
178
|
}
|
|
137
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-proxy.js","sourceRoot":"","sources":["../../../src/cli/commands/codex-proxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAGlF,MAAM,WAAW,GAA2B;IAC1C,WAAW,EAAE,yBAAyB;IACtC,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,qBAAqB;CAC7B,CAAC;AAEF,8DAA8D;AAE9D,MAAM,UAAU,WAAW,CAAC,KAAyB,EAAE,UAAoB;IACzE,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,0DAA0D;AAE1D,MAAM,UAAU,UAAU,CAAC,QAA4B;IACrD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,4DAA4D;AAE5D,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,SAAS,IAAI,wBAAwB,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,KAAK,IAAI,YAAY,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"codex-proxy.js","sourceRoot":"","sources":["../../../src/cli/commands/codex-proxy.ts"],"names":[],"mappings":"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"}
|