import * as fs from "node:fs/promises"; import { type SessionImportSourceIdentity } from "../session-import/provider-service"; export type OnboardingDecision = "completed" | "skipped"; export type OnboardingOperation = "learn-commands"; export interface OnboardingProfile { language: string; sources: string[]; workflow: string[]; migrationMap: string[]; omissions: string[]; evidenceCount: number; operations?: OnboardingOperation[]; } export interface FrictionlessOnboardingState { version: 1; decision?: OnboardingDecision; profile?: OnboardingProfile; } export interface OnboardingRootPresence { provider: string; present: boolean; unsupported: boolean; activityAt: number; rootPath?: string; rootRealPath?: string; installedCliActivityAt: number; rootIdentity?: SessionImportSourceIdentity; } export interface OnboardingEvidence { provider: string; activityAt: number; signals: string[]; userMessages?: string[]; sessionCount?: number; omittedSessions?: number; workflowCategories?: string[]; } export declare const NINETY_DAYS: number; export declare function onboardingStatePath(agentDir?: string): string; export declare function projectOnboardingState(value: unknown): FrictionlessOnboardingState; export declare function readOnboardingState(agentDir?: string): Promise; export declare function writeOnboardingState(value: unknown, agentDir?: string): Promise; /** * Onboarding copy language. An explicit user preference always wins; script * counts and Latin function-word hits share one ranking so two Hangul or Han * characters cannot override a clearly English transcript. Evidence is trusted * only when one language leads outright; everything else falls back to the OS locale. */ export declare function detectOnboardingLanguage(messages: readonly string[], osLocale?: string, preferredLanguage?: string): string; export declare function shouldCountOnboardingDirectoryFailure(error: unknown, depth: number): boolean; export declare function discoverOnboardingRootPresence(options?: { home?: string; }): Promise; export interface AnalyzeOnboardingEvidenceOptions { now?: number; openDirectory?: typeof fs.opendir; } export declare function analyzeOnboardingEvidence(presence: readonly OnboardingRootPresence[], options?: AnalyzeOnboardingEvidenceOptions): Promise; export interface DeriveOnboardingProfileOptions { now?: number; osLocale?: string; /** Explicit `ui.language` selection; authoritative over locale and message evidence. */ preferredLanguage?: string; } export declare function deriveOnboardingProfile(evidence: readonly OnboardingEvidence[], options?: DeriveOnboardingProfileOptions): OnboardingProfile; export declare function createManualOnboardingProfile(language: string, intent: "migration" | "commands"): OnboardingProfile; export declare function hasCorroboratedRecentEvidence(evidence: readonly OnboardingEvidence[], now?: number): boolean; export declare function shouldOfferOnboarding(state: FrictionlessOnboardingState): boolean; export interface AutomaticOnboardingInput { normalInteractive: boolean; initialMessage?: string; initialMessages: readonly string[]; initialImages?: readonly unknown[]; resumeAction?: string; } export declare function shouldOfferAutomaticOnboarding(input: AutomaticOnboardingInput): boolean; export declare function shouldPersistCompletion(operation: OnboardingOperation | undefined, confirmed: boolean): boolean;