feat(ui): AI 설정창 + Codex CLI OAuth 백엔드 + ⚙ 진입점
사용자 원래 요구였던 Codex non-interactive OAuth를 실제 동작까지 검증해 통합. ChatGPT 구독으로 API 키 없이 AI 변환. - CodexChatClient: codex exec --skip-git-repo-check --ephemeral -o <file> - (stdin 프롬프트). 실제 한글→영어 번역 검증 완료 - ExternalProcessRunner: stdin 지원 + UTF-8 인코딩(한글 깨짐 해결) - ExternalToolDetector.IsCodexAvailable() + public 승격 - LlmProvider: codex 백엔드 + auto 폴백(키 없으면 Codex) - SettingsWindow: OpenAI/Anthropic 키(2단계 Verify) + Codex(OAuth) + 외부도구 상태/다운로드 CTA + 모델 선택 - App.Settings를 LlmProvider와 공유(키 저장 즉시 반영) - MainWindow 네비바 ⚙ 설정 진입점 - 디자인: Cursor/Zed/Raycast 설정 UX + Radix 상태 토큰 영감
This commit is contained in:
parent
faffb8f205
commit
2a3d220db4
12 changed files with 480 additions and 8 deletions
|
|
@ -2,7 +2,7 @@ using Microsoft.Win32;
|
|||
|
||||
namespace Everything2Everything.Core.Converters;
|
||||
|
||||
internal static class ExternalToolDetector
|
||||
public static class ExternalToolDetector
|
||||
{
|
||||
public static bool TryFindLibreOfficeSoffice(out string sofficePath)
|
||||
{
|
||||
|
|
@ -82,6 +82,34 @@ internal static class ExternalToolDetector
|
|||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// codex CLI(OpenAI Codex, ChatGPT 구독 OAuth 재사용) 설치 여부. npm 글로벌 + PATH에서
|
||||
/// codex.cmd/codex.exe/codex.ps1을 탐지한다.
|
||||
/// </summary>
|
||||
public static bool IsCodexAvailable()
|
||||
{
|
||||
var names = new[] { "codex.cmd", "codex.exe", "codex.ps1" };
|
||||
var dirs = new List<string>();
|
||||
|
||||
var appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
|
||||
if (!string.IsNullOrEmpty(appdata)) dirs.Add(Path.Combine(appdata, "npm"));
|
||||
|
||||
var pathEnv = Environment.GetEnvironmentVariable("PATH") ?? "";
|
||||
foreach (var d in pathEnv.Split(Path.PathSeparator))
|
||||
if (!string.IsNullOrWhiteSpace(d)) dirs.Add(d.Trim());
|
||||
|
||||
foreach (var dir in dirs.Distinct())
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var n in names)
|
||||
if (File.Exists(Path.Combine(dir, n))) return true;
|
||||
}
|
||||
catch { /* 잘못된 경로 무시 */ }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsH2OrestartInstalled()
|
||||
{
|
||||
try
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue