mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-15 22:33:05 -07:00
366036a197
Refactors the existing background skill extractor into a layered memory subsystem that GeminiClient can drive uniformly across interactive and non-interactive sessions. - Adds an internal `MemoryProvider` interface (not exported, not surfaced via extensions) as a typing seam between the orchestrator and its concrete implementation - Refactors the existing skill-extraction logic into `DefaultMemoryProvider`, the sole implementation of the seam - Introduces `MemoryService` as a thin orchestrator that owns a `DefaultMemoryProvider` and wraps every lifecycle call in try/catch so a buggy provider can't crash a turn - Moves MemoryService ownership into `GeminiClient` (private field exposed via optional methods) so non-interactive entry points share the same lifecycle as the interactive UI - Keeps builtin memory extraction asynchronous on startup to avoid blocking the first turn - Adds unit tests for MemoryService, DefaultMemoryProvider, and the GeminiClient integration The whole subsystem remains gated behind the existing `isMemoryManagerEnabled()` experimental flag.