import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event"; import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle"; import { ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/editor/browser/editorExtensions"; import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service"; import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service"; import { ILifecycleService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/lifecycle/common/lifecycle.service"; import { IChatSessionItem, IChatSessionItemController, IChatSessionItemsDelta } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService"; import { IChatSessionsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service"; import { IAgentSession } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsModel"; import { ISessionOpenerParticipant, ISessionOpenOptions } from "@codingame/monaco-vscode-katex-common/vscode/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener"; import { IChatWidgetService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat.service"; /** * Core-side growth session controller that shows a single "attention needed" * session item in the agent sessions view for anonymous/new users. * * When the user clicks the session, we open the chat panel (which triggers the * anonymous setup flow). When the user opens chat at all, the badge is cleared. * * The session is shown at most once, tracked via a storage flag. */ export declare class GrowthSessionController extends Disposable implements IChatSessionItemController { private readonly storageService; private readonly chatWidgetService; private readonly lifecycleService; private readonly logService; static readonly STORAGE_KEY = "chat.growthSession.dismissed"; private static readonly SESSION_URI; private readonly _onDidChangeChatSessionItems; readonly onDidChangeChatSessionItems: Event; private readonly _onDidDismiss; readonly onDidDismiss: Event; private readonly _created; private _dismissed; get isDismissed(): boolean; constructor(storageService: IStorageService, chatWidgetService: IChatWidgetService, lifecycleService: ILifecycleService, logService: ILogService); get items(): readonly IChatSessionItem[]; refresh(): Promise; private dismiss; } /** * Handles clicks on the growth session item in the agent sessions view. * Opens a new local chat session with a pre-seeded welcome message. * The user can then send messages that go through the normal agent. */ export declare class GrowthSessionOpenerParticipant implements ISessionOpenerParticipant { handleOpenSession(accessor: ServicesAccessor, session: IAgentSession, _openOptions?: ISessionOpenOptions): Promise; } /** * Registers the growth session controller and opener participant. * Returns a disposable that cleans up all registrations. */ export declare function registerGrowthSession(chatSessionsService: IChatSessionsService, growthController: GrowthSessionController): IDisposable;