/**
 * Inline copies of runtime constants from wizard-session.ts.
 *
 * tsx has an ESM/CJS dual-loading bug: when a module is first loaded as CJS
 * (e.g. via a top-level import chain) and then loaded again via dynamic
 * import() as ESM, named exports using the `as const` + same-name type
 * pattern fail to resolve. This file provides the TUI layer with its own
 * copies so it never needs runtime imports from wizard-session.ts.
 *
 * IMPORTANT: keep these in sync with src/lib/wizard-session.ts.
 */
export const RunPhase = {
    Idle: 'idle',
    Running: 'running',
    Completed: 'completed',
    Error: 'error',
};
export const PostAgentStepStatus = {
    Pending: 'pending',
    InProgress: 'in_progress',
    Completed: 'completed',
    Skipped: 'skipped',
};
export const AdditionalFeature = {
    LLM: 'llm',
    SessionReplay: 'session_replay',
    Engagement: 'engagement',
};
export const ADDITIONAL_FEATURE_LABELS = {
    [AdditionalFeature.LLM]: 'LLM analytics',
    [AdditionalFeature.SessionReplay]: 'Session Replay',
    [AdditionalFeature.Engagement]: 'Guides & Surveys',
};
export const INLINE_FEATURES = new Set([
    AdditionalFeature.SessionReplay,
    AdditionalFeature.Engagement,
]);
export const TRAILING_FEATURES = new Set([
    AdditionalFeature.LLM,
]);
/**
 * Discovered features that map to an opt-in AdditionalFeature.
 * Stripe is discovered but not opt-in — it's a passive doc link.
 * Derived from AdditionalFeature values, which by convention match the
 * corresponding DiscoveredFeature values.
 */
export const OPT_IN_DISCOVERED_FEATURES = new Set(Object.values(AdditionalFeature));
export const McpOutcome = {
    NoClients: 'no_clients',
    Skipped: 'skipped',
    Installed: 'installed',
    Failed: 'failed',
};
export const SlackOutcome = {
    Skipped: 'skipped',
    Configured: 'configured',
};
export const OutroKind = {
    Success: 'success',
    Error: 'error',
    Cancel: 'cancel',
};
