Skip to content

omm engine status/doctor: 패키지 매니저 밖 설치(공식 installer/CLI)도 버전 감지하기 #368

Description

@minigu5

Problem

omm engine status/doctor가 brew(cask/formula)·winget·flatpak로 설치 안 한 러너는
버전을 "Not identified"로만 표시함. 공식 설치 프로그램(dmg 드래그, exe 직접 설치)이나
CLI-only 설치(예: ollama formula 없이 그냥 바이너리)는 전부 여기 해당.

원인: engine_manager.py:106-129 inspect_engine() → package_receipt()
(engine_manager.py:49-103)가 오직 brew/winget/flatpak DB만 조회함. 앱 설치 여부 자체는
linker.py의 별도 경로(_app_bundle_installed, is_ollama_installed,
is_lmstudio_installed, _lms_cli_path)로 정확히 잡는데, 그 정보를 버전 조회엔 안 씀.

부수 발견: API가 살아있을 때 OllamaAdapter.health()/LMStudioAdapter.health()가 실제로
/api/version, x-lm-studio-version 헤더에서 버전을 얻어와 inspect_engine()의
runtime_version에 담아두는데(engine_manager.py:122-126), cli_views.py:57-70
print_engines()가 이 필드를 테이블에 아예 안 씀. package_receipt 없으면 API 켜져 있어도
"Not identified"로 뜸.

Proposed solution

표시 전용 버전 폴백 추가. package_receipt()/PackageReceipt 자체는 손대지 않음 — 이건
plan_action/execute_action(engine_manager.py:153-, update/uninstall 커맨드 조립)이
"실제 관리 가능한 패키지 매니저"라는 가정으로 쓰는 값이라, 여기 정보를 섞으면
omm engine update가 존재하지 않는 관리 경로로 명령을 만들 위험 있음.

대신 inspect_engine()에 별도 표시용 필드(detected_version 등) 추가, 우선순위:

  1. macOS: <앱>.app/Contents/Info.plist의 CFBundleShortVersionString
    (Ollama.app, LM Studio.app 등 — 이미 _app_bundle_installed가 아는 경로 재사용)
  2. Windows: exe 버전 리소스. ctypes + version.dll
    (GetFileVersionInfoSizeW/GetFileVersionInfoW/VerQueryValueW)로 stdlib만으로 가능,
    새 의존성 불필요
  3. CLI 버전 플래그: ollama -v (formula/바이너리 전용 설치, .app 없어도 잡힘).
    LM Studio는 lms 서브커맨드에 버전 옵션 있는지 먼저 확인 필요
  4. 이미 있는 runtime_version(API 응답)을 package_receipt 없을 때 폴백으로 테이블에
    노출 — 이건 새 감지 로직 없이 cli_views.py 한 줄 수정으로 해결됨

Alternatives considered

package_receipt()에 Info.plist/CLI 결과를 얹어 하나의 반환값으로 합치는 안 — 기각.
위에서 설명한 대로 update/uninstall 명령 조립 로직이 receipt를 "관리 가능한 패키지"로
가정하기 때문에, 관리 불가능한 감지 결과를 같은 타입으로 섞으면 위험함.

Additional context

관련 위치: engine_manager.py:49-129 (package_receipt, inspect_engine),
cli_views.py:57-70 (print_engines), linker.py
(_app_bundle_installed, is_ollama_installed, is_lmstudio_installed, _lms_cli_path).

테스트: macOS Info.plist 목킹, Windows ctypes 목킹, CLI subprocess 목킹 각각 필요.
표시 전용 변경이라 우선순위는 낮음(cosmetic), omm engine update/uninstall 동작에는
영향 없어야 함.

관련 이슈: #365 (brew cask 쿼리 버그 — 이걸 먼저 고쳐야 이 이슈의
"Not identified" 케이스가 정말 brew 밖 설치인지, 아니면 그냥 쿼리가 깨진 건지 명확해짐).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions