import React from 'react' import { render } from 'ink' import { REPL } from './REPL' import { deserializeMessages } from '../utils/conversationRecovery' import { LogSelector } from '../components/LogSelector' import type { LogOption } from '../types/logs' import { logError, getNextAvailableLogForkNumber } from '../utils/log' import type { Tool } from '../Tool' import { Command } from '../commands' import { isDefaultSlowAndCapableModel } from '../utils/model' type Props = { commands: Command[] context: { unmount?: () => void } logs: LogOption[] tools: Tool[] verbose: boolean | undefined } export function ResumeConversation({ context, commands, logs, tools, verbose, }: Props): React.ReactNode { async function onSelect(index: number) { const log = logs[index] if (!log) { return } // Load and deserialize the messages try { context.unmount?.() // Start a new REPL with the loaded messages // Increment the fork number by 1 to generate a new transcript // Check if using default model before rendering const isDefaultModel = await isDefaultSlowAndCapableModel() render( , { exitOnCtrlC: false, }, ) } catch (e) { logError(`Failed to load conversation: ${e}`) throw e } } return }