mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-04 00:44:05 -07:00
Reload gemini memory on extension load/unload + memory refresh refactor (#12651)
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
import { EventEmitter } from 'node:events';
|
||||
import type { LoadServerHierarchicalMemoryResponse } from './memoryDiscovery.js';
|
||||
|
||||
/**
|
||||
* Defines the severity level for user-facing feedback.
|
||||
@@ -53,13 +54,26 @@ export interface ModelChangedPayload {
|
||||
model: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Payload for the 'memory-changed' event.
|
||||
*/
|
||||
export type MemoryChangedPayload = LoadServerHierarchicalMemoryResponse;
|
||||
|
||||
export enum CoreEvent {
|
||||
UserFeedback = 'user-feedback',
|
||||
FallbackModeChanged = 'fallback-mode-changed',
|
||||
ModelChanged = 'model-changed',
|
||||
MemoryChanged = 'memory-changed',
|
||||
}
|
||||
|
||||
export class CoreEventEmitter extends EventEmitter {
|
||||
export interface CoreEvents {
|
||||
[CoreEvent.UserFeedback]: [UserFeedbackPayload];
|
||||
[CoreEvent.FallbackModeChanged]: [FallbackModeChangedPayload];
|
||||
[CoreEvent.ModelChanged]: [ModelChangedPayload];
|
||||
[CoreEvent.MemoryChanged]: [MemoryChangedPayload];
|
||||
}
|
||||
|
||||
export class CoreEventEmitter extends EventEmitter<CoreEvents> {
|
||||
private _feedbackBacklog: UserFeedbackPayload[] = [];
|
||||
private static readonly MAX_BACKLOG_SIZE = 10000;
|
||||
|
||||
@@ -116,63 +130,6 @@ export class CoreEventEmitter extends EventEmitter {
|
||||
this.emit(CoreEvent.UserFeedback, payload);
|
||||
}
|
||||
}
|
||||
|
||||
override on(
|
||||
event: CoreEvent.UserFeedback,
|
||||
listener: (payload: UserFeedbackPayload) => void,
|
||||
): this;
|
||||
override on(
|
||||
event: CoreEvent.FallbackModeChanged,
|
||||
listener: (payload: FallbackModeChangedPayload) => void,
|
||||
): this;
|
||||
override on(
|
||||
event: CoreEvent.ModelChanged,
|
||||
listener: (payload: ModelChangedPayload) => void,
|
||||
): this;
|
||||
override on(
|
||||
event: string | symbol,
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
listener: (...args: any[]) => void,
|
||||
): this {
|
||||
return super.on(event, listener);
|
||||
}
|
||||
|
||||
override off(
|
||||
event: CoreEvent.UserFeedback,
|
||||
listener: (payload: UserFeedbackPayload) => void,
|
||||
): this;
|
||||
override off(
|
||||
event: CoreEvent.FallbackModeChanged,
|
||||
listener: (payload: FallbackModeChangedPayload) => void,
|
||||
): this;
|
||||
override off(
|
||||
event: CoreEvent.ModelChanged,
|
||||
listener: (payload: ModelChangedPayload) => void,
|
||||
): this;
|
||||
override off(
|
||||
event: string | symbol,
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
listener: (...args: any[]) => void,
|
||||
): this {
|
||||
return super.off(event, listener);
|
||||
}
|
||||
|
||||
override emit(
|
||||
event: CoreEvent.UserFeedback,
|
||||
payload: UserFeedbackPayload,
|
||||
): boolean;
|
||||
override emit(
|
||||
event: CoreEvent.FallbackModeChanged,
|
||||
payload: FallbackModeChangedPayload,
|
||||
): boolean;
|
||||
override emit(
|
||||
event: CoreEvent.ModelChanged,
|
||||
payload: ModelChangedPayload,
|
||||
): boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
override emit(event: string | symbol, ...args: any[]): boolean {
|
||||
return super.emit(event, ...args);
|
||||
}
|
||||
}
|
||||
|
||||
export const coreEvents = new CoreEventEmitter();
|
||||
|
||||
Reference in New Issue
Block a user