interface TextContentLike { type: string; text?: string; } interface MessageLike { role: string; content: string | TextContentLike[]; } interface SessionEntryLike { type: string; message?: MessageLike; } interface SessionManagerLike { getEntries(): SessionEntryLike[]; } interface UIContextLike { setWidget(key: string, content: string[] | undefined, options?: { placement?: 'aboveEditor' | 'belowEditor'; }): void; } interface ExtensionCtxLike { ui?: UIContextLike; mode?: string; sessionManager?: SessionManagerLike; model?: { provider?: string; id?: string; }; } type PiEvents = 'session_start' | 'input' | 'turn_end' | 'session_shutdown'; interface PiLike { on(event: PiEvents, handler: (event: any, ctx: ExtensionCtxLike) => void): void; } /** * Register the inactivity-recap chrome on `pi`. * * Returns immediately (inert) when CRTR_NODE_ID is absent — a plain pi session * or legacy job agent loads it as a no-op. */ export declare function registerCanvasRecap(pi: PiLike): void; export default registerCanvasRecap;