export declare function looksLikeConversationId(value: string | undefined): boolean; /** Whether `args` already asks for some existing conversation. */ export declare function wantsExistingConversation(args: string[]): boolean; /** * The conversation id `args` names, if it names one. * * `--resume` with nothing after it opens a picker, so there is no id to find; * that reads as null rather than as the next argument, which would otherwise * swallow an unrelated flag and hand Claude a nonsense id. */ export declare function conversationIdIn(args: string[]): string | null; /** Strip every conversation flag, including whatever value it carries. */ export declare function withoutConversationFlags(args: string[]): string[]; export interface ConversationPlan { /** The command line for this run's FIRST launch. */ args: string[]; /** * The conversation this run owns, when it can be known before starting. * * Null when the operator asked for a conversation only Claude can identify * (`--continue`, or `--resume` with the picker). The id is learned from the * running session in that case; see `readKnownConversation`. */ id: string | null; } /** * Decide which conversation this run is in, before anything starts. * * A fresh start is given an id of our own so later swaps have something exact * to resume. Anything the operator asked for is left exactly as typed: they may * be resuming a specific conversation, and rewriting that would be ccx deciding * which thread they are in. */ export declare function planConversation(args: string[], newId?: () => string): ConversationPlan; /** * The command line for picking the conversation back up after a swap. * * With an id, this run resumes exactly its own thread. Without one, it falls * back to "the most recent in this directory", which is the best available * answer when nothing has told us which conversation this is. */ export declare function relaunchArgs(args: string[], id: string | null): string[]; /** * Start a genuinely NEW conversation, and name it. * * Used when a resume finds nothing to resume. Naming the new one matters as * much as starting it: the id the run was carrying is now known to lead * nowhere, so without a replacement every later swap would try that same dead * id, fail, and start fresh again, losing the conversation each time. */ export declare function freshStartArgs(args: string[], newId?: () => string): { args: string[]; id: string; };