/** * Install orchestrator — feat/codex-support P1-3 * * `forgen install` CLI 의 분기 처리: * - 인자 없음 → interactive 3-choice (claude/codex/both/quit) * - 'claude' → planClaudeInstall() * - 'codex' → planCodexInstall() * - 'both' → 둘 다 실행 * * 사용자 host 선택 권한이 forgen 측에 위임 (1원칙: Claude default 강요 금지). * Phase 1 Round 2 의 *마이그레이션 정책 C* (기존 entry 보존) 와 함께 동작. */ import { detectAvailableHosts } from '../core/host-detect.js'; import { type ClaudeInstallResult } from './install-claude.js'; import { type CodexInstallResult } from './install-codex.js'; import { type OpencodeInstallResult } from './install-opencode.js'; import type { HostId } from '../core/trust-layer-intent.js'; export type InstallTarget = HostId | 'both'; export interface OrchestratorOptions { /** Sub-command 인자: 'claude'|'codex'|'both' 또는 undefined (interactive). */ target?: string; pkgRoot: string; dryRun?: boolean; registerMcp?: boolean; } export interface OrchestratorResult { target: InstallTarget; claude?: ClaudeInstallResult; codex?: CodexInstallResult; opencode?: OpencodeInstallResult; detection: ReturnType; } export declare function runInstall(opts: OrchestratorOptions): Promise; /** CLI 출력 포맷터 — orchestrator 결과를 사용자에게 표시. */ export declare function renderResult(result: OrchestratorResult, dryRun: boolean): string; /** pkgRoot resolve from binary location (dist/cli.js → pkgRoot). */ export declare function resolvePkgRootFromBinary(metaUrl: string): string;