mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-23 19:44:30 -07:00
3eebb75b7a
Co-authored-by: mkorwel <matt.korwel@gmail.com>
49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2026 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* Manages the current active topic title and tactical intent for a session.
|
|
* Hosted within the Config instance for session-scoping.
|
|
*/
|
|
export class TopicState {
|
|
private activeTopicTitle?: string;
|
|
private activeIntent?: string;
|
|
|
|
/**
|
|
* Sanitizes and sets the topic title and/or intent.
|
|
* @returns true if the input was valid and set, false otherwise.
|
|
*/
|
|
setTopic(title?: string, intent?: string): boolean {
|
|
const sanitizedTitle = title?.trim().replace(/[\r\n]+/g, ' ');
|
|
const sanitizedIntent = intent?.trim().replace(/[\r\n]+/g, ' ');
|
|
|
|
if (!sanitizedTitle && !sanitizedIntent) return false;
|
|
|
|
if (sanitizedTitle) {
|
|
this.activeTopicTitle = sanitizedTitle;
|
|
}
|
|
|
|
if (sanitizedIntent) {
|
|
this.activeIntent = sanitizedIntent;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
getTopic(): string | undefined {
|
|
return this.activeTopicTitle;
|
|
}
|
|
|
|
getIntent(): string | undefined {
|
|
return this.activeIntent;
|
|
}
|
|
|
|
reset(): void {
|
|
this.activeTopicTitle = undefined;
|
|
this.activeIntent = undefined;
|
|
}
|
|
}
|