import type { AgentSummary, AgentsIndex } from './types.js';
export declare function normalizeAgentTitle(title: string): string;
/** Score how well a Cursor sidebar title matches a JSONL agent row. */
export declare function agentTitleMatchScore(sidebarTitle: string, jsonlLabel: string): number;
export declare function findAgentById(jsonl: AgentsIndex, agentId: string): AgentSummary | undefined;
/** Best JSONL agent for a Cursor sidebar row (generated title vs first user message). */
export declare function matchJsonlAgentForSidebarTitle(rowTitle: string, jsonl: AgentsIndex, composerIdByTitle?: Record<string, string>): AgentSummary | undefined;
export declare function resolveComposerUuidFromPartial(partialId: string, opts?: {
    composerIdByTitle?: Record<string, string>;
    agentsIndex?: AgentsIndex;
}): string | undefined;
export declare function isSyntheticAgentId(agentId: string): boolean;
export type ResolveJsonlOpts = {
    title?: string;
    composerIdByTitle?: Record<string, string>;
    /** Cursor's active composer UUID — binds `sidebar-N` to the open chat file. */
    activeComposerId?: string;
    activeTabTitle?: string;
};
/** Map app/relay agentId (+ optional sidebar title) to an on-disk JSONL id. */
export declare function resolveJsonlAgentId(projectsDir: string, agentId: string, opts?: ResolveJsonlOpts): string;
export declare function resolveJsonlFilePath(projectsDir: string, agentId: string, opts?: ResolveJsonlOpts): string | null;
