@google/gemini-cli-core 0.42.0 → 0.44.0-nightly.20260513.g5ee05c775

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/dist/docs/changelogs/index.md +30 -0
  2. package/dist/docs/changelogs/latest.md +261 -166
  3. package/dist/docs/changelogs/preview.md +178 -103
  4. package/dist/docs/cli/auto-memory.md +60 -38
  5. package/dist/docs/cli/settings.md +1 -1
  6. package/dist/docs/cli/tutorials/memory-management.md +1 -1
  7. package/dist/docs/extensions/releasing.md +58 -24
  8. package/dist/docs/reference/configuration.md +14 -1
  9. package/dist/docs/reference/keyboard-shortcuts.md +23 -0
  10. package/dist/google-gemini-cli-core-0.44.0-nightly.20260512.g022e8baef.tgz +0 -0
  11. package/dist/src/agent/content-utils.js +2 -0
  12. package/dist/src/agent/content-utils.js.map +1 -1
  13. package/dist/src/agent/content-utils.test.js +5 -1
  14. package/dist/src/agent/content-utils.test.js.map +1 -1
  15. package/dist/src/agent/event-translator.js +7 -6
  16. package/dist/src/agent/event-translator.js.map +1 -1
  17. package/dist/src/agent/legacy-agent-session.js +4 -0
  18. package/dist/src/agent/legacy-agent-session.js.map +1 -1
  19. package/dist/src/agent/legacy-agent-session.test.js +9 -1
  20. package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
  21. package/dist/src/agent/tool-display-utils.d.ts +3 -2
  22. package/dist/src/agent/tool-display-utils.js +3 -2
  23. package/dist/src/agent/tool-display-utils.js.map +1 -1
  24. package/dist/src/agent/types.d.ts +33 -3
  25. package/dist/src/agents/a2aUtils.d.ts +1 -1
  26. package/dist/src/agents/a2aUtils.js +4 -3
  27. package/dist/src/agents/a2aUtils.js.map +1 -1
  28. package/dist/src/agents/agentLoader.d.ts +2 -2
  29. package/dist/src/agents/browser/browserAgentInvocation.js +24 -19
  30. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  31. package/dist/src/agents/local-executor.d.ts +1 -0
  32. package/dist/src/agents/local-executor.js +46 -32
  33. package/dist/src/agents/local-executor.js.map +1 -1
  34. package/dist/src/agents/local-executor.test.js +127 -0
  35. package/dist/src/agents/local-executor.test.js.map +1 -1
  36. package/dist/src/agents/local-invocation.js +24 -20
  37. package/dist/src/agents/local-invocation.js.map +1 -1
  38. package/dist/src/agents/local-invocation.test.js +9 -9
  39. package/dist/src/agents/local-invocation.test.js.map +1 -1
  40. package/dist/src/agents/local-subagent-protocol.d.ts +18 -0
  41. package/dist/src/agents/local-subagent-protocol.js +357 -0
  42. package/dist/src/agents/local-subagent-protocol.js.map +1 -0
  43. package/dist/src/agents/local-subagent-protocol.test.d.ts +6 -0
  44. package/dist/src/agents/local-subagent-protocol.test.js +676 -0
  45. package/dist/src/agents/local-subagent-protocol.test.js.map +1 -0
  46. package/dist/src/agents/remote-invocation.js +6 -6
  47. package/dist/src/agents/remote-invocation.js.map +1 -1
  48. package/dist/src/agents/remote-invocation.test.js +23 -12
  49. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  50. package/dist/src/agents/remote-subagent-protocol.d.ts +31 -0
  51. package/dist/src/agents/remote-subagent-protocol.js +330 -0
  52. package/dist/src/agents/remote-subagent-protocol.js.map +1 -0
  53. package/dist/src/agents/remote-subagent-protocol.test.d.ts +6 -0
  54. package/dist/src/agents/remote-subagent-protocol.test.js +652 -0
  55. package/dist/src/agents/remote-subagent-protocol.test.js.map +1 -0
  56. package/dist/src/agents/skill-extraction-agent.js +1 -0
  57. package/dist/src/agents/skill-extraction-agent.js.map +1 -1
  58. package/dist/src/agents/skill-extraction-agent.test.js +1 -0
  59. package/dist/src/agents/skill-extraction-agent.test.js.map +1 -1
  60. package/dist/src/agents/types.d.ts +13 -2
  61. package/dist/src/agents/types.js +7 -0
  62. package/dist/src/agents/types.js.map +1 -1
  63. package/dist/src/availability/modelAvailabilityService.d.ts +6 -6
  64. package/dist/src/availability/modelAvailabilityService.js +14 -7
  65. package/dist/src/availability/modelAvailabilityService.js.map +1 -1
  66. package/dist/src/availability/modelAvailabilityService.test.js +34 -0
  67. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -1
  68. package/dist/src/availability/policyHelpers.js +24 -12
  69. package/dist/src/availability/policyHelpers.js.map +1 -1
  70. package/dist/src/availability/policyHelpers.test.js +3 -2
  71. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  72. package/dist/src/code_assist/oauth2.js +9 -2
  73. package/dist/src/code_assist/oauth2.js.map +1 -1
  74. package/dist/src/code_assist/setup.d.ts +3 -0
  75. package/dist/src/code_assist/setup.js +9 -0
  76. package/dist/src/code_assist/setup.js.map +1 -1
  77. package/dist/src/code_assist/setup.test.js +9 -1
  78. package/dist/src/code_assist/setup.test.js.map +1 -1
  79. package/dist/src/commands/memory.d.ts +5 -14
  80. package/dist/src/commands/memory.js +19 -141
  81. package/dist/src/commands/memory.js.map +1 -1
  82. package/dist/src/commands/memory.test.js +62 -0
  83. package/dist/src/commands/memory.test.js.map +1 -1
  84. package/dist/src/config/config.d.ts +6 -2
  85. package/dist/src/config/config.js +63 -8
  86. package/dist/src/config/config.js.map +1 -1
  87. package/dist/src/config/config.test.js +48 -0
  88. package/dist/src/config/config.test.js.map +1 -1
  89. package/dist/src/config/defaultModelConfigs.js +13 -0
  90. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  91. package/dist/src/config/models.js +1 -1
  92. package/dist/src/config/models.js.map +1 -1
  93. package/dist/src/config/projectRegistry.d.ts +1 -0
  94. package/dist/src/config/projectRegistry.js +14 -3
  95. package/dist/src/config/projectRegistry.js.map +1 -1
  96. package/dist/src/config/projectRegistry.test.js +43 -0
  97. package/dist/src/config/projectRegistry.test.js.map +1 -1
  98. package/dist/src/context/config/profiles.js +4 -0
  99. package/dist/src/context/config/profiles.js.map +1 -1
  100. package/dist/src/context/contextManager.barrier.test.js +4 -3
  101. package/dist/src/context/contextManager.barrier.test.js.map +1 -1
  102. package/dist/src/context/contextManager.d.ts +9 -2
  103. package/dist/src/context/contextManager.hotstart.test.d.ts +6 -0
  104. package/dist/src/context/contextManager.hotstart.test.js +61 -0
  105. package/dist/src/context/contextManager.hotstart.test.js.map +1 -0
  106. package/dist/src/context/contextManager.js +96 -21
  107. package/dist/src/context/contextManager.js.map +1 -1
  108. package/dist/src/context/eventBus.d.ts +6 -0
  109. package/dist/src/context/eventBus.js +6 -0
  110. package/dist/src/context/eventBus.js.map +1 -1
  111. package/dist/src/context/graph/render.d.ts +3 -1
  112. package/dist/src/context/graph/render.js +33 -9
  113. package/dist/src/context/graph/render.js.map +1 -1
  114. package/dist/src/context/graph/render.test.d.ts +6 -0
  115. package/dist/src/context/graph/render.test.js +203 -0
  116. package/dist/src/context/graph/render.test.js.map +1 -0
  117. package/dist/src/context/graph/toGraph.js +3 -3
  118. package/dist/src/context/graph/toGraph.js.map +1 -1
  119. package/dist/src/context/graph/toGraph.test.d.ts +6 -0
  120. package/dist/src/context/graph/toGraph.test.js +35 -0
  121. package/dist/src/context/graph/toGraph.test.js.map +1 -0
  122. package/dist/src/context/initializer.js +11 -2
  123. package/dist/src/context/initializer.js.map +1 -1
  124. package/dist/src/context/pipeline/contextWorkingBuffer.d.ts +5 -7
  125. package/dist/src/context/pipeline/contextWorkingBuffer.js +105 -29
  126. package/dist/src/context/pipeline/contextWorkingBuffer.js.map +1 -1
  127. package/dist/src/context/pipeline/contextWorkingBuffer.test.js +67 -0
  128. package/dist/src/context/pipeline/contextWorkingBuffer.test.js.map +1 -1
  129. package/dist/src/context/pipeline/environment.d.ts +4 -0
  130. package/dist/src/context/pipeline/environmentImpl.d.ts +6 -5
  131. package/dist/src/context/pipeline/environmentImpl.js +6 -8
  132. package/dist/src/context/pipeline/environmentImpl.js.map +1 -1
  133. package/dist/src/context/pipeline/environmentImpl.test.js +5 -1
  134. package/dist/src/context/pipeline/environmentImpl.test.js.map +1 -1
  135. package/dist/src/context/pipeline/orchestrator.d.ts +1 -0
  136. package/dist/src/context/pipeline/orchestrator.js +59 -24
  137. package/dist/src/context/pipeline/orchestrator.js.map +1 -1
  138. package/dist/src/context/processors/blobDegradationProcessor.test.js +2 -2
  139. package/dist/src/context/processors/rollingSummaryProcessor.js +2 -15
  140. package/dist/src/context/processors/rollingSummaryProcessor.js.map +1 -1
  141. package/dist/src/context/processors/stateSnapshotAsyncProcessor.d.ts +7 -0
  142. package/dist/src/context/processors/stateSnapshotAsyncProcessor.js +33 -21
  143. package/dist/src/context/processors/stateSnapshotAsyncProcessor.js.map +1 -1
  144. package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js +31 -7
  145. package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js.map +1 -1
  146. package/dist/src/context/processors/stateSnapshotProcessor.d.ts +2 -0
  147. package/dist/src/context/processors/stateSnapshotProcessor.js +28 -4
  148. package/dist/src/context/processors/stateSnapshotProcessor.js.map +1 -1
  149. package/dist/src/context/processors/stateSnapshotProcessor.test.js +40 -1
  150. package/dist/src/context/processors/stateSnapshotProcessor.test.js.map +1 -1
  151. package/dist/src/context/system-tests/hysteresis.test.d.ts +6 -0
  152. package/dist/src/context/system-tests/hysteresis.test.js +98 -0
  153. package/dist/src/context/system-tests/hysteresis.test.js.map +1 -0
  154. package/dist/src/context/system-tests/lifecycle.golden.test.js +90 -69
  155. package/dist/src/context/system-tests/lifecycle.golden.test.js.map +1 -1
  156. package/dist/src/context/system-tests/simulationHarness.d.ts +1 -4
  157. package/dist/src/context/system-tests/simulationHarness.js +16 -30
  158. package/dist/src/context/system-tests/simulationHarness.js.map +1 -1
  159. package/dist/src/context/testing/contextTestUtils.d.ts +1 -0
  160. package/dist/src/context/testing/contextTestUtils.js +48 -25
  161. package/dist/src/context/testing/contextTestUtils.js.map +1 -1
  162. package/dist/src/context/utils/adaptiveTokenCalculator.d.ts +61 -0
  163. package/dist/src/context/utils/adaptiveTokenCalculator.js +116 -0
  164. package/dist/src/context/utils/adaptiveTokenCalculator.js.map +1 -0
  165. package/dist/src/context/utils/adaptiveTokenCalculator.test.d.ts +6 -0
  166. package/dist/src/context/utils/adaptiveTokenCalculator.test.js +85 -0
  167. package/dist/src/context/utils/adaptiveTokenCalculator.test.js.map +1 -0
  168. package/dist/src/context/utils/contextTokenCalculator.d.ts +47 -1
  169. package/dist/src/context/utils/contextTokenCalculator.js +20 -3
  170. package/dist/src/context/utils/contextTokenCalculator.js.map +1 -1
  171. package/dist/src/context/utils/contextTokenCalculator.test.js +8 -8
  172. package/dist/src/context/utils/contextTokenCalculator.test.js.map +1 -1
  173. package/dist/src/context/utils/formatNodesForLlm.d.ts +21 -0
  174. package/dist/src/context/utils/formatNodesForLlm.js +69 -0
  175. package/dist/src/context/utils/formatNodesForLlm.js.map +1 -0
  176. package/dist/src/context/utils/formatNodesForLlm.test.d.ts +6 -0
  177. package/dist/src/context/utils/formatNodesForLlm.test.js +110 -0
  178. package/dist/src/context/utils/formatNodesForLlm.test.js.map +1 -0
  179. package/dist/src/context/utils/snapshotGenerator.d.ts +23 -1
  180. package/dist/src/context/utils/snapshotGenerator.js +249 -31
  181. package/dist/src/context/utils/snapshotGenerator.js.map +1 -1
  182. package/dist/src/context/utils/snapshotGenerator.test.d.ts +6 -0
  183. package/dist/src/context/utils/snapshotGenerator.test.js +255 -0
  184. package/dist/src/context/utils/snapshotGenerator.test.js.map +1 -0
  185. package/dist/src/context/utils/tokenCalibration.d.ts +9 -0
  186. package/dist/src/context/utils/tokenCalibration.js +30 -0
  187. package/dist/src/context/utils/tokenCalibration.js.map +1 -0
  188. package/dist/src/core/baseLlmClient.d.ts +8 -0
  189. package/dist/src/core/baseLlmClient.js +20 -2
  190. package/dist/src/core/baseLlmClient.js.map +1 -1
  191. package/dist/src/core/client.js +12 -1
  192. package/dist/src/core/client.js.map +1 -1
  193. package/dist/src/core/client.test.js +4 -4
  194. package/dist/src/core/contentGenerator.js +12 -10
  195. package/dist/src/core/contentGenerator.js.map +1 -1
  196. package/dist/src/core/fakeContentGenerator.js +12 -4
  197. package/dist/src/core/fakeContentGenerator.js.map +1 -1
  198. package/dist/src/core/geminiChat.d.ts +2 -0
  199. package/dist/src/core/geminiChat.js +60 -5
  200. package/dist/src/core/geminiChat.js.map +1 -1
  201. package/dist/src/core/geminiChat.test.js +195 -2
  202. package/dist/src/core/geminiChat.test.js.map +1 -1
  203. package/dist/src/core/localLiteRtLmClient.js +6 -2
  204. package/dist/src/core/localLiteRtLmClient.js.map +1 -1
  205. package/dist/src/core/turn.js +30 -2
  206. package/dist/src/core/turn.js.map +1 -1
  207. package/dist/src/core/turn.test.js +13 -8
  208. package/dist/src/core/turn.test.js.map +1 -1
  209. package/dist/src/generated/git-commit.d.ts +2 -2
  210. package/dist/src/generated/git-commit.js +2 -2
  211. package/dist/src/generated/git-commit.js.map +1 -1
  212. package/dist/src/hooks/hookEventHandler.js +3 -2
  213. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  214. package/dist/src/hooks/hookEventHandler.test.js +80 -0
  215. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  216. package/dist/src/ide/ide-client.js +5 -3
  217. package/dist/src/ide/ide-client.js.map +1 -1
  218. package/dist/src/ide/ide-connection-utils.js +12 -10
  219. package/dist/src/ide/ide-connection-utils.js.map +1 -1
  220. package/dist/src/index.d.ts +2 -1
  221. package/dist/src/index.js +2 -2
  222. package/dist/src/index.js.map +1 -1
  223. package/dist/src/prompts/snippets.js +1 -1
  224. package/dist/src/prompts/snippets.js.map +1 -1
  225. package/dist/src/routing/strategies/approvalModeStrategy.js +5 -3
  226. package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -1
  227. package/dist/src/routing/strategies/approvalModeStrategy.test.js +2 -0
  228. package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -1
  229. package/dist/src/routing/strategies/classifierStrategy.js +8 -1
  230. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  231. package/dist/src/routing/strategies/classifierStrategy.test.js +4 -0
  232. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  233. package/dist/src/routing/strategies/gemmaClassifierStrategy.js +7 -1
  234. package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -1
  235. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +4 -0
  236. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -1
  237. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +1 -0
  238. package/dist/src/routing/strategies/numericalClassifierStrategy.js +22 -3
  239. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
  240. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +168 -23
  241. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -1
  242. package/dist/src/scheduler/scheduler.js +11 -0
  243. package/dist/src/scheduler/scheduler.js.map +1 -1
  244. package/dist/src/scheduler/scheduler.test.js +1 -1
  245. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  246. package/dist/src/scheduler/state-manager.js +5 -1
  247. package/dist/src/scheduler/state-manager.js.map +1 -1
  248. package/dist/src/scheduler/tool-executor.js +7 -4
  249. package/dist/src/scheduler/tool-executor.js.map +1 -1
  250. package/dist/src/scheduler/types.d.ts +5 -1
  251. package/dist/src/scheduler/types.js.map +1 -1
  252. package/dist/src/services/fileDiscoveryService.js +2 -1
  253. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  254. package/dist/src/services/fileDiscoveryService.test.js +36 -0
  255. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  256. package/dist/src/services/gitService.js +8 -1
  257. package/dist/src/services/gitService.js.map +1 -1
  258. package/dist/src/services/gitService.test.js +104 -0
  259. package/dist/src/services/gitService.test.js.map +1 -1
  260. package/dist/src/services/keychainService.js +14 -5
  261. package/dist/src/services/keychainService.js.map +1 -1
  262. package/dist/src/services/memoryPatchUtils.d.ts +66 -4
  263. package/dist/src/services/memoryPatchUtils.js +267 -5
  264. package/dist/src/services/memoryPatchUtils.js.map +1 -1
  265. package/dist/src/services/memoryService.js +25 -1
  266. package/dist/src/services/memoryService.js.map +1 -1
  267. package/dist/src/services/memoryService.test.js +61 -1
  268. package/dist/src/services/memoryService.test.js.map +1 -1
  269. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +11 -0
  270. package/dist/src/services/test-data/resolved-aliases.golden.json +11 -0
  271. package/dist/src/telemetry/gcp-exporters.d.ts +2 -0
  272. package/dist/src/telemetry/gcp-exporters.js +69 -5
  273. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  274. package/dist/src/telemetry/gcp-exporters.test.js +52 -0
  275. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -1
  276. package/dist/src/telemetry/metrics.js +13 -2
  277. package/dist/src/telemetry/metrics.js.map +1 -1
  278. package/dist/src/telemetry/metrics.test.js +61 -1
  279. package/dist/src/telemetry/metrics.test.js.map +1 -1
  280. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +5 -2
  281. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  282. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +7 -4
  283. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  284. package/dist/src/tools/edit.js +19 -0
  285. package/dist/src/tools/edit.js.map +1 -1
  286. package/dist/src/tools/edit.test.js +9 -0
  287. package/dist/src/tools/edit.test.js.map +1 -1
  288. package/dist/src/tools/grep.js +13 -1
  289. package/dist/src/tools/grep.js.map +1 -1
  290. package/dist/src/tools/ls.js +5 -0
  291. package/dist/src/tools/ls.js.map +1 -1
  292. package/dist/src/tools/mcp-client.js +17 -3
  293. package/dist/src/tools/mcp-client.js.map +1 -1
  294. package/dist/src/tools/mcp-client.test.js +24 -0
  295. package/dist/src/tools/mcp-client.test.js.map +1 -1
  296. package/dist/src/tools/read-file.js +11 -6
  297. package/dist/src/tools/read-file.js.map +1 -1
  298. package/dist/src/tools/read-file.test.js +20 -8
  299. package/dist/src/tools/read-file.test.js.map +1 -1
  300. package/dist/src/tools/ripGrep.js +13 -1
  301. package/dist/src/tools/ripGrep.js.map +1 -1
  302. package/dist/src/tools/shell.js +14 -0
  303. package/dist/src/tools/shell.js.map +1 -1
  304. package/dist/src/tools/shell.test.js +5 -0
  305. package/dist/src/tools/shell.test.js.map +1 -1
  306. package/dist/src/tools/tools.d.ts +6 -0
  307. package/dist/src/tools/tools.js.map +1 -1
  308. package/dist/src/tools/topicTool.js +5 -0
  309. package/dist/src/tools/topicTool.js.map +1 -1
  310. package/dist/src/tools/write-file.js +13 -0
  311. package/dist/src/tools/write-file.js.map +1 -1
  312. package/dist/src/tools/write-file.test.js +8 -0
  313. package/dist/src/tools/write-file.test.js.map +1 -1
  314. package/dist/src/utils/errors.js +3 -8
  315. package/dist/src/utils/errors.js.map +1 -1
  316. package/dist/src/utils/filesearch/fileSearch.js +20 -9
  317. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  318. package/dist/src/utils/filesearch/ignore.js +4 -1
  319. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  320. package/dist/src/utils/ignoreFileParser.js +1 -1
  321. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  322. package/dist/src/utils/ignorePatterns.js +2 -0
  323. package/dist/src/utils/ignorePatterns.js.map +1 -1
  324. package/dist/src/utils/ignorePatterns.test.js +1 -0
  325. package/dist/src/utils/ignorePatterns.test.js.map +1 -1
  326. package/dist/src/utils/memoryDiscovery.js +55 -40
  327. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  328. package/dist/src/utils/memoryDiscovery.test.js +77 -9
  329. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  330. package/dist/src/utils/modelUtils.d.ts +14 -0
  331. package/dist/src/utils/modelUtils.js +17 -0
  332. package/dist/src/utils/modelUtils.js.map +1 -0
  333. package/dist/src/utils/modelUtils.test.d.ts +6 -0
  334. package/dist/src/utils/modelUtils.test.js +23 -0
  335. package/dist/src/utils/modelUtils.test.js.map +1 -0
  336. package/dist/src/utils/paths.d.ts +15 -1
  337. package/dist/src/utils/paths.js +22 -7
  338. package/dist/src/utils/paths.js.map +1 -1
  339. package/dist/src/utils/paths.test.js +25 -1
  340. package/dist/src/utils/paths.test.js.map +1 -1
  341. package/dist/src/utils/quotaErrorDetection.js +23 -12
  342. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  343. package/dist/src/utils/safeJsonStringify.js +0 -2
  344. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  345. package/dist/src/utils/shell-utils.js +9 -1
  346. package/dist/src/utils/shell-utils.js.map +1 -1
  347. package/dist/src/utils/shell-utils.test.js +7 -3
  348. package/dist/src/utils/shell-utils.test.js.map +1 -1
  349. package/dist/src/utils/tokenCalculation.js +2 -1
  350. package/dist/src/utils/tokenCalculation.js.map +1 -1
  351. package/dist/src/utils/tokenCalculation.test.js +15 -0
  352. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  353. package/dist/tsconfig.tsbuildinfo +1 -1
  354. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
- # Preview release: v0.41.0-preview.0
1
+ # Preview release: v0.43.0-preview.0
2
2
 
3
- Released: April 28, 2026
3
+ Released: May 12, 2026
4
4
 
5
5
  Our preview release includes the latest, new, and experimental features. This
6
6
  release may not be as stable as our [latest weekly release](latest.md).
@@ -13,109 +13,184 @@ npm install -g @google/gemini-cli@preview
13
13
 
14
14
  ## Highlights
15
15
 
16
- - **Real-Time Voice Mode:** Implemented a new real-time voice mode supporting
17
- both cloud and local backends for a more interactive experience.
18
- - **Enhanced Security & Trust:** Enforced workspace trust in headless mode and
19
- secured `.env` file loading to improve system integrity.
20
- - **Expanded Model Support:** Added experimental support for Gemma 4 models in
21
- both core and CLI packages.
22
- - **Improved Core Infrastructure:** Wired up new `ContextManager` and
23
- `AgentChatHistory` for better state management, and optimized boot performance
24
- by fetching experiments and quota asynchronously.
25
- - **New Developer Tools & UX:** Added support for output redirection for CLI
26
- commands, manual session UUIDs via command-line arguments, and persistent
27
- auto-memory scratchpad for skill extraction.
16
+ - **Surgical Code Edits:** Steer models to use the `edit` tool for precise code
17
+ modifications, improving accuracy and reducing context usage.
18
+ - **Session Portability:** Added ability to export chat sessions to files and
19
+ import them via a new CLI flag, enabling session persistence and sharing.
20
+ - **Enhanced Security:** Introduced comprehensive shell command safety
21
+ evaluations and strengthened model steering to prevent unauthorized changes.
22
+ - **Context Management:** Implemented a new adaptive token calculator for more
23
+ accurate content size estimations and optimized context pipelines.
24
+ - **UX Improvements:** Enhanced tool call visibility with prefixed IDs and
25
+ improved the UI for session resumption and MCP list management.
28
26
 
29
27
  ## What's Changed
30
28
 
31
- - chore(release): bump version to 0.41.0-nightly.20260423.gaa05b4583 by
32
- @gemini-cli-robot in
33
- [#25847](https://github.com/google-gemini/gemini-cli/pull/25847)
34
- - fix(core): only show `list` suggestion if the partial input is empty by
35
- @cynthialong0-0 in
36
- [#25821](https://github.com/google-gemini/gemini-cli/pull/25821)
37
- - feat(cli): secure .env loading and enforce workspace trust in headless mode by
38
- @ehedlund in [#25814](https://github.com/google-gemini/gemini-cli/pull/25814)
39
- - fix: fatal hard-crash on loop detection via unhandled AbortError by @hsm207 in
40
- [#20108](https://github.com/google-gemini/gemini-cli/pull/20108)
41
- - update package-lock.json by @ehedlund in
42
- [#25876](https://github.com/google-gemini/gemini-cli/pull/25876)
43
- - feat(core): enhance shell command validation and add core tools allowlist by
44
- @galz10 in [#25720](https://github.com/google-gemini/gemini-cli/pull/25720)
45
- - fix(ui): corrected background color check in user message components by
46
- @devr0306 in [#25880](https://github.com/google-gemini/gemini-cli/pull/25880)
47
- - perf(core): fix slow boot by fetching experiments and quota asynchronously by
48
- @spencer426 in
49
- [#25758](https://github.com/google-gemini/gemini-cli/pull/25758)
50
- - feat(core,cli): add support for Gemma 4 models (experimental) by @Abhijit-2592
51
- in [#25604](https://github.com/google-gemini/gemini-cli/pull/25604)
52
- - update FatalUntrustedWorkspaceError message to include doc link by @ehedlund
53
- in [#25874](https://github.com/google-gemini/gemini-cli/pull/25874)
54
- - docs: add Gemini CLI course link to README by @JayadityaGit in
55
- [#25925](https://github.com/google-gemini/gemini-cli/pull/25925)
56
- - feat(repo): add gemini-cli-bot metrics and workflows by @gundermanc in
57
- [#25888](https://github.com/google-gemini/gemini-cli/pull/25888)
58
- - fix(cli): allow output redirection for cli commands by @spencer426 in
59
- [#25894](https://github.com/google-gemini/gemini-cli/pull/25894)
60
- - fix(core): fail closed in YOLO mode when shell parsing fails for restricted
61
- rules by @ehedlund in
62
- [#25935](https://github.com/google-gemini/gemini-cli/pull/25935)
63
- - fix(cli-ui): revert backspace handling to fix Windows regression by @scidomino
64
- in [#25941](https://github.com/google-gemini/gemini-cli/pull/25941)
65
- - feat(voice): implement real-time voice mode with cloud and local backends by
66
- @Abhijit-2592 in
67
- [#24174](https://github.com/google-gemini/gemini-cli/pull/24174)
68
- - Changelog for v0.39.0 by @gemini-cli-robot in
69
- [#25848](https://github.com/google-gemini/gemini-cli/pull/25848)
70
- - feat(memory): persist auto-memory scratchpad for skill extraction by
71
- @SandyTao520 in
72
- [#25873](https://github.com/google-gemini/gemini-cli/pull/25873)
73
- - fix(cli): add missing response key to custom theme text schema by @gaurav0107
74
- in [#25822](https://github.com/google-gemini/gemini-cli/pull/25822)
75
- - fix(cli): provide manual update command when automatic update fails by
76
- @cocosheng-g in
77
- [#26052](https://github.com/google-gemini/gemini-cli/pull/26052)
78
- - test(cli): add unit tests for restore ACP command (#23402) by @cocosheng-g in
79
- [#26053](https://github.com/google-gemini/gemini-cli/pull/26053)
80
- - fix(ui): better error messages for ECONNRESET and ETIMEDOUT by @devr0306 in
81
- [#26059](https://github.com/google-gemini/gemini-cli/pull/26059)
82
- - feat(core): wire up the new ContextManager and AgentChatHistory by @joshualitt
83
- in [#25409](https://github.com/google-gemini/gemini-cli/pull/25409)
84
- - fix(cli): ensure sandbox proxy cleanup and remove handler leaks by @ehedlund
85
- in [#26065](https://github.com/google-gemini/gemini-cli/pull/26065)
86
- - fix(cli): correct alternate buffer warning logic for JetBrains by @Adib234 in
87
- [#26067](https://github.com/google-gemini/gemini-cli/pull/26067)
88
- - fix(cli): make MCP ping optional in list command and use configured timeout by
89
- @cocosheng-g in
90
- [#26068](https://github.com/google-gemini/gemini-cli/pull/26068)
91
- - fix(core): better error message for failed cloudshell-gca auth by @devr0306 in
92
- [#26079](https://github.com/google-gemini/gemini-cli/pull/26079)
93
- - feat(cli): provide manual session UUID via command line arg by @cocosheng-g in
94
- [#26060](https://github.com/google-gemini/gemini-cli/pull/26060)
95
- - Changelog for v0.40.0-preview.2 by @gemini-cli-robot in
96
- [#25846](https://github.com/google-gemini/gemini-cli/pull/25846)
97
- - (docs) update sandboxing documentation by @g-samroberts in
98
- [#25930](https://github.com/google-gemini/gemini-cli/pull/25930)
99
- - fix(core): enforce parallel task tracker updates by @anj-s in
100
- [#24477](https://github.com/google-gemini/gemini-cli/pull/24477)
101
- - Update policy so transient errors are not marked terminal by @DavidAPierce in
102
- [#26066](https://github.com/google-gemini/gemini-cli/pull/26066)
103
- - Implement bot that performs time-series metric analysis and suggests repo
104
- management improvements by @gundermanc in
105
- [#25945](https://github.com/google-gemini/gemini-cli/pull/25945)
106
- - fix(core): handle non-string model flags in resolution by @Adib234 in
107
- [#26069](https://github.com/google-gemini/gemini-cli/pull/26069)
108
- - fix(ux): added error message for ENOTDIR by @devr0306 in
109
- [#26128](https://github.com/google-gemini/gemini-cli/pull/26128)
110
- - Changelog for v0.40.0-preview.3 by @gemini-cli-robot in
111
- [#25904](https://github.com/google-gemini/gemini-cli/pull/25904)
112
- - fix(cli): prevent ACP stdout pollution from SessionEnd hooks by @cocosheng-g
113
- in [#26125](https://github.com/google-gemini/gemini-cli/pull/26125)
114
- - feat(cli): support boolean and number casting for env vars in settings.json by
115
- @cocosheng-g in
116
- [#26118](https://github.com/google-gemini/gemini-cli/pull/26118)
117
- - fix(cli): preserve Request headers in DevTools activity logger by @Adib234 in
118
- [#26078](https://github.com/google-gemini/gemini-cli/pull/26078)
29
+ - feat(core): steer model to use edit tool for surgical edits, fix a typo in
30
+ [#26480](https://github.com/google-gemini/gemini-cli/pull/26480)
31
+ - docs: clarify Auto Memory proposes memory updates and skills in
32
+ [#26527](https://github.com/google-gemini/gemini-cli/pull/26527)
33
+ - fix(core): reject numeric project IDs in GOOGLE_CLOUD_PROJECT (#24695) in
34
+ [#26532](https://github.com/google-gemini/gemini-cli/pull/26532)
35
+ - fix(core): remove unsafe type assertion suppressions in error utils in
36
+ [#19881](https://github.com/google-gemini/gemini-cli/pull/19881)
37
+ - fix(core): allow redirection in YOLO and AUTO_EDIT modes without sandboxing in
38
+ [#26542](https://github.com/google-gemini/gemini-cli/pull/26542)
39
+ - ci(release): build and attach unsigned macOS binaries to releases in
40
+ [#26462](https://github.com/google-gemini/gemini-cli/pull/26462)
41
+ - fix(core): Fix chat corruption bug in context manager. in
42
+ [#26534](https://github.com/google-gemini/gemini-cli/pull/26534)
43
+ - fix(cli): provide JSON output for AgentExecutionStopped in non-interactive
44
+ mode in [#26504](https://github.com/google-gemini/gemini-cli/pull/26504)
45
+ - feat(evals): add shell command safety evals in
46
+ [#26528](https://github.com/google-gemini/gemini-cli/pull/26528)
47
+ - fix(core): handle invalid custom plans directory gracefully in
48
+ [#26560](https://github.com/google-gemini/gemini-cli/pull/26560)
49
+ - fix(acp): move tool explanation from thought stream to tool call content in
50
+ [#26554](https://github.com/google-gemini/gemini-cli/pull/26554)
51
+ - fix(a2a-server): Resolve race condition in tool completion waiting in
52
+ [#26568](https://github.com/google-gemini/gemini-cli/pull/26568)
53
+ - fix(cli): randomize sandbox container names in
54
+ [#26014](https://github.com/google-gemini/gemini-cli/pull/26014)
55
+ - fix(core): Fix hysteresis in async context management pipelines. in
56
+ [#26452](https://github.com/google-gemini/gemini-cli/pull/26452)
57
+ - Tighten private Auto Memory patch allowlist in
58
+ [#26535](https://github.com/google-gemini/gemini-cli/pull/26535)
59
+ - fix(cli): hide read-only settings scopes in
60
+ [#26249](https://github.com/google-gemini/gemini-cli/pull/26249)
61
+ - fix(ci): preserve executable bit for mac binaries in
62
+ [#26600](https://github.com/google-gemini/gemini-cli/pull/26600)
63
+ - fix(cli): improve mcp list UX in untrusted folders in
64
+ [#26457](https://github.com/google-gemini/gemini-cli/pull/26457)
65
+ - fix(core): prevent silent hang during OAuth auth on headless Linux in
66
+ [#26571](https://github.com/google-gemini/gemini-cli/pull/26571)
67
+ - Changelog for v0.42.0-preview.0 in
68
+ [#26537](https://github.com/google-gemini/gemini-cli/pull/26537)
69
+ - ci: fix Argument list too long in triage workflows in
70
+ [#26603](https://github.com/google-gemini/gemini-cli/pull/26603)
71
+ - refactor(cli): migrate core tools to native ToolDisplay property and fix UI
72
+ rendering in [#25186](https://github.com/google-gemini/gemini-cli/pull/25186)
73
+ - don't wrap args unnecessarily in
74
+ [#26599](https://github.com/google-gemini/gemini-cli/pull/26599)
75
+ - fix(core): preserve system PATH in Git environment to fix ENOENT (#25034) in
76
+ [#26587](https://github.com/google-gemini/gemini-cli/pull/26587)
77
+ - fix(routing): fix resolveClassifierModel argument mismatch in
78
+ ApprovalModeStrategy in
79
+ [#26658](https://github.com/google-gemini/gemini-cli/pull/26658)
80
+ - docs: add vi mode shortcuts and clarify MCP/custom sandbox setup in
81
+ [#23853](https://github.com/google-gemini/gemini-cli/pull/23853)
82
+ - fix(ux): fixed issue with transcribed text not showing after releasing space
83
+ in [#26609](https://github.com/google-gemini/gemini-cli/pull/26609)
84
+ - ci: fix json parsing in scheduled triage workflow in
85
+ [#26656](https://github.com/google-gemini/gemini-cli/pull/26656)
86
+ - fix(cli): hide /memory add subcommand when memoryV2 is enabled in
87
+ [#26605](https://github.com/google-gemini/gemini-cli/pull/26605)
88
+ - fix: prevent false command conflicts when launching from home directory in
89
+ [#23069](https://github.com/google-gemini/gemini-cli/pull/23069)
90
+ - fix(core): cache model routing decision in LocalAgentExecutor in
91
+ [#26548](https://github.com/google-gemini/gemini-cli/pull/26548)
92
+ - Changelog for v0.42.0-preview.2 in
93
+ [#26597](https://github.com/google-gemini/gemini-cli/pull/26597)
94
+ - skip broken test in
95
+ [#26705](https://github.com/google-gemini/gemini-cli/pull/26705)
96
+ - feat: export session to file and import via flag in
97
+ [#26514](https://github.com/google-gemini/gemini-cli/pull/26514)
98
+ - Feat: Add Machine Hostname to CLI interface in
99
+ [#25637](https://github.com/google-gemini/gemini-cli/pull/25637)
100
+ - docs(extensions): refactor releasing guide and add update mechanisms in
101
+ [#26595](https://github.com/google-gemini/gemini-cli/pull/26595)
102
+ - fix(ci): fix maintainer identification in lifecycle manager in
103
+ [#26706](https://github.com/google-gemini/gemini-cli/pull/26706)
104
+ - fix(ui): added quotes around session id in resume tip in
105
+ [#26669](https://github.com/google-gemini/gemini-cli/pull/26669)
106
+ - Changelog for v0.41.0 in
107
+ [#26670](https://github.com/google-gemini/gemini-cli/pull/26670)
108
+ - refactor(core): agent session protocol changes in
109
+ [#26661](https://github.com/google-gemini/gemini-cli/pull/26661)
110
+ - fix(context): implement loose boundary policy for gc backstop. in
111
+ [#26594](https://github.com/google-gemini/gemini-cli/pull/26594)
112
+ - fix(core): throw explicit error on dropped tool responses in
113
+ [#26668](https://github.com/google-gemini/gemini-cli/pull/26668)
114
+ - fix: resolve "function response turn must come immediately after function
115
+ call" error in
116
+ [#26691](https://github.com/google-gemini/gemini-cli/pull/26691)
117
+ - fix(core): resolve parallel tool call streaming ID collision in
118
+ [#26646](https://github.com/google-gemini/gemini-cli/pull/26646)
119
+ - feat(core): add LocalSubagentProtocol behind AgentProtocol in
120
+ [#25302](https://github.com/google-gemini/gemini-cli/pull/25302)
121
+ - fix(cli): remove noisy theme registration logs from terminal in
122
+ [#25858](https://github.com/google-gemini/gemini-cli/pull/25858)
123
+ - ci: implement codebase-aware effort level triage in
124
+ [#26666](https://github.com/google-gemini/gemini-cli/pull/26666)
125
+ - feat(acp/core): prefix tool call IDs with tool names to support tool rendering
126
+ in ACP compliant IDEs. in
127
+ [#26676](https://github.com/google-gemini/gemini-cli/pull/26676)
128
+ - fix(mcp): treat GET 404 as 405 in StreamableHTTPClientTransport in
129
+ [#24847](https://github.com/google-gemini/gemini-cli/pull/24847)
130
+ - feat(core): add RemoteSubagentProtocol behind AgentProtocol in
131
+ [#25303](https://github.com/google-gemini/gemini-cli/pull/25303)
132
+ - feat(context): Improvements to the snapshotter. in
133
+ [#26655](https://github.com/google-gemini/gemini-cli/pull/26655)
134
+ - fix(context): Change snapshotter model config. in
135
+ [#26745](https://github.com/google-gemini/gemini-cli/pull/26745)
136
+ - fix(cli): allow installing extensions from ssh repo in
137
+ [#26274](https://github.com/google-gemini/gemini-cli/pull/26274)
138
+ - fix(cli): prevent duplicate SessionStart systemMessage render in
139
+ [#25827](https://github.com/google-gemini/gemini-cli/pull/25827)
140
+ - fix(cli/acp): prevent infinite thought loop in ACP mode by disablig
141
+ nextSpeakerCheck in
142
+ [#26874](https://github.com/google-gemini/gemini-cli/pull/26874)
143
+ - fix(cli): use static tool name in confirmation prompt to avoid parsing errors
144
+ in [#26866](https://github.com/google-gemini/gemini-cli/pull/26866)
145
+ - fix(routing): Refactor tool turn handling for the conversation history in
146
+ NumericalClassifierStrategy to prevent 400 Bad Request in
147
+ [#26761](https://github.com/google-gemini/gemini-cli/pull/26761)
148
+ - fix(core): handle malformed projects.json in ProjectRegistry in
149
+ [#26885](https://github.com/google-gemini/gemini-cli/pull/26885)
150
+ - fix(ui): added a gutter width to the input prompt width calculation in
151
+ [#26882](https://github.com/google-gemini/gemini-cli/pull/26882)
152
+ - fix: prevent EISDIR crash when customIgnoreFilePaths contains directories
153
+ (#19868) in [#19898](https://github.com/google-gemini/gemini-cli/pull/19898)
154
+ - revert 6b9b778d821728427eea07b1b97ba07378137d0b in
155
+ [#26893](https://github.com/google-gemini/gemini-cli/pull/26893)
156
+ - Fix/vscode run current file ts in
157
+ [#22894](https://github.com/google-gemini/gemini-cli/pull/22894)
158
+ - Allow Enter to select session while in search mode in /resume in
159
+ [#21523](https://github.com/google-gemini/gemini-cli/pull/21523)
160
+ - fix(core): ignore .pak and .rpa game archive formats by default in
161
+ [#26884](https://github.com/google-gemini/gemini-cli/pull/26884)
162
+ - fix(cli): enable adk non-interactive session in
163
+ [#26895](https://github.com/google-gemini/gemini-cli/pull/26895)
164
+ - fix(cli): restore resume for legacy sessions in
165
+ [#26577](https://github.com/google-gemini/gemini-cli/pull/26577)
166
+ - fix: respect explicit model selection after Flash quota exhaustion (#26759) in
167
+ [#26872](https://github.com/google-gemini/gemini-cli/pull/26872)
168
+ - feat(context): Introduce adaptive token calculator to more accurately
169
+ calculate content sizes. in
170
+ [#26888](https://github.com/google-gemini/gemini-cli/pull/26888)
171
+ - chore: update checkout action configuration in workflows in
172
+ [#26897](https://github.com/google-gemini/gemini-cli/pull/26897)
173
+ - fix (telemetry): inject quota_project_id to prevent fallback to default oauth
174
+ client in [#26698](https://github.com/google-gemini/gemini-cli/pull/26698)
175
+ - Exclude extension context from skill extraction agent in
176
+ [#26879](https://github.com/google-gemini/gemini-cli/pull/26879)
177
+ - Enable NumericalRouter when using dynamic model configs in
178
+ [#26929](https://github.com/google-gemini/gemini-cli/pull/26929)
179
+ - ci: actively triage missing priority labels and intelligently clean up
180
+ conflicting labels in
181
+ [#26865](https://github.com/google-gemini/gemini-cli/pull/26865)
182
+ - refactor(core): introduce SubagentState enum for progress in
183
+ [#26934](https://github.com/google-gemini/gemini-cli/pull/26934)
184
+ - fix(ci): replace brittle --no-tag with explicit staging-tmp tag in
185
+ [#26940](https://github.com/google-gemini/gemini-cli/pull/26940)
186
+ - Incremental refactor repo agent towards skills-based composition in
187
+ [#26717](https://github.com/google-gemini/gemini-cli/pull/26717)
188
+ - fix(ui): fixed line wrap padding for selection lists in
189
+ [#26944](https://github.com/google-gemini/gemini-cli/pull/26944)
190
+ - fix(core): update read_file schema for v1 compatibility (#22183) in
191
+ [#26922](https://github.com/google-gemini/gemini-cli/pull/26922)
192
+ - fix(ci): configure git remote with token for authentication in
193
+ [#26949](https://github.com/google-gemini/gemini-cli/pull/26949)
119
194
 
120
195
  **Full Changelog**:
121
- https://github.com/google-gemini/gemini-cli/compare/v0.40.0-preview.5...v0.41.0-preview.0
196
+ https://github.com/google-gemini/gemini-cli/compare/v0.42.0-preview.2...v0.43.0-preview.0
@@ -1,9 +1,10 @@
1
1
  # Auto Memory
2
2
 
3
3
  Auto Memory is an experimental feature that mines your past Gemini CLI sessions
4
- in the background and turns recurring workflows into reusable
5
- [Agent Skills](./skills.md). You review, accept, or discard each extracted skill
6
- before it becomes available to future sessions.
4
+ in the background and proposes durable memory updates and reusable
5
+ [Agent Skills](./skills.md). You review each candidate before it becomes
6
+ available to future sessions: apply memory updates, promote skills, or discard
7
+ anything you do not want.
7
8
 
8
9
  <!-- prettier-ignore -->
9
10
  > [!NOTE]
@@ -12,28 +13,33 @@ before it becomes available to future sessions.
12
13
  ## Overview
13
14
 
14
15
  Every session you run with Gemini CLI is recorded locally as a transcript. Auto
15
- Memory scans those transcripts for procedural patterns that recur across
16
- sessions, then drafts each pattern as a `SKILL.md` file in a project-local
17
- inbox. You inspect the draft, decide whether it captures real expertise, and
18
- promote it to your global or workspace skills directory if you want it.
16
+ Memory scans those transcripts for durable facts, preferences, workflow
17
+ constraints, and procedural patterns that recur across sessions. It can draft
18
+ memory updates as unified diff `.patch` files and draft reusable procedures as
19
+ `SKILL.md` files. All candidates are held in a project-local inbox until you
20
+ approve or discard them.
19
21
 
20
22
  You'll use Auto Memory when you want to:
21
23
 
22
24
  - **Capture team workflows** that you find yourself walking the agent through
23
25
  more than once.
26
+ - **Preserve durable project context** such as repeated verification commands,
27
+ local constraints, or personal project notes.
24
28
  - **Codify hard-won fixes** for project-specific landmines so future sessions
25
29
  avoid them.
26
30
  - **Bootstrap a skills library** without writing every `SKILL.md` by hand.
27
31
 
28
32
  Auto Memory complements—but does not replace—the
29
33
  [`save_memory` tool](../tools/memory.md), which captures single facts into
30
- `GEMINI.md`. Auto Memory captures multi-step procedures into skills.
34
+ `GEMINI.md` when the agent explicitly calls it. Auto Memory infers candidates
35
+ from past sessions, writes reviewable patches or skill drafts, and never applies
36
+ them without your approval.
31
37
 
32
38
  ## Prerequisites
33
39
 
34
40
  - Gemini CLI installed and authenticated.
35
- - At least 10 user messages across recent, idle sessions in the project. Auto
36
- Memory ignores active or trivial sessions.
41
+ - At least one idle project session with 10 or more user messages. Auto Memory
42
+ ignores active, trivial, and sub-agent sessions.
37
43
 
38
44
  ## How to enable Auto Memory
39
45
 
@@ -66,36 +72,45 @@ UI, consume your interactive turns, or surface tool prompts.
66
72
  been idle for at least three hours and contain at least 10 user messages.
67
73
  2. **Lock acquisition.** A lock file in the project's memory directory
68
74
  coordinates across multiple CLI instances so extraction runs at most once at
69
- a time.
70
- 3. **Sub-agent extraction.** A specialized sub-agent (named `confucius`)
71
- reviews the session index, reads any sessions that look like they contain
72
- repeated procedural workflows, and drafts new `SKILL.md` files. Its
73
- instructions tell it to default to creating zero skills unless the evidence
74
- is strong, so most runs produce no inbox items.
75
- 4. **Patch validation.** If the sub-agent proposes edits to skills outside the
76
- inbox (for example, an existing global skill), it writes a unified diff
77
- `.patch` file. Auto Memory dry-runs each patch and discards any that do not
78
- apply cleanly.
79
- 5. **Notification.** When a run produces new skills or patches, Gemini CLI
80
- surfaces an inline message telling you how many items are waiting.
81
-
82
- ## How to review extracted skills
75
+ a time. A state file records processed session versions, and extraction is
76
+ throttled so short back-to-back CLI launches do not repeatedly scan history.
77
+ 3. **Candidate extraction.** A background extraction agent reviews the session
78
+ index, reads any sessions that look like they contain durable memory or
79
+ repeated procedural workflows, and drafts candidates. It defaults to
80
+ creating no artifacts unless the evidence is strong, so many runs produce no
81
+ inbox items.
82
+ 4. **Safety boundaries.** Auto Memory writes candidates to a review inbox. It
83
+ cannot directly edit active memory files, settings, credentials, or project
84
+ `GEMINI.md` files.
85
+ 5. **Patch validation.** Skill update patches are parsed and dry-run before
86
+ they are surfaced. Memory patches are parsed, target-allowlisted, and
87
+ applied atomically only when you approve them from the inbox.
88
+ 6. **Notification.** When a run produces new candidates, Gemini CLI surfaces an
89
+ inline message telling you how many items are waiting.
90
+
91
+ ## How to review extracted items
83
92
 
84
93
  Use the `/memory inbox` slash command to open the inbox dialog at any time:
85
94
 
86
95
  **Command:** `/memory inbox`
87
96
 
88
- The dialog lists each draft skill with its name, description, and source
89
- sessions. From there you can:
97
+ The dialog groups pending items into new skills, skill updates, and memory
98
+ updates. From there you can:
90
99
 
91
100
  - **Read** the full `SKILL.md` body before deciding.
92
101
  - **Promote** a skill to your user (`~/.gemini/skills/`) or workspace
93
102
  (`.gemini/skills/`) directory.
94
103
  - **Discard** a skill you do not want.
95
104
  - **Apply** or reject a `.patch` proposal against an existing skill.
105
+ - **Review** memory diffs before they touch active files.
106
+ - **Apply** or dismiss private and global memory patches. Private patches target
107
+ the project memory directory; global patches target only your personal
108
+ `~/.gemini/GEMINI.md` file.
96
109
 
97
110
  Promoted skills become discoverable in the next session and follow the standard
98
- [skill discovery precedence](./skills.md#skill-discovery-tiers).
111
+ [skill discovery precedence](./skills.md#skill-discovery-tiers). Applied memory
112
+ patches update the underlying memory files and reload memory for the current
113
+ session.
99
114
 
100
115
  ## How to disable Auto Memory
101
116
 
@@ -117,19 +132,26 @@ start. Existing inbox items remain on disk; you can either drain them with
117
132
  ## Data and privacy
118
133
 
119
134
  - Auto Memory only reads session files that already exist locally on your
120
- machine. Nothing is uploaded to Gemini outside the normal API calls the
121
- extraction sub-agent makes during its run.
122
- - The sub-agent is instructed to redact secrets, tokens, and credentials it
123
- encounters and to never copy large tool outputs verbatim.
124
- - Drafted skills live in your project's memory directory until you promote or
125
- discard them. They are not automatically loaded into any session.
135
+ machine.
136
+ - Auto Memory uses model calls to analyze selected local transcript content
137
+ during extraction. No candidates are applied automatically, but transcript
138
+ excerpts may be sent to the configured model as part of those calls.
139
+ - The extraction agent is instructed to redact secrets, tokens, and credentials
140
+ it encounters and to never copy large tool outputs verbatim.
141
+ - Drafted skills and memory patches live in your project's memory directory
142
+ until you promote, apply, dismiss, or discard them. They are not automatically
143
+ loaded into any session.
126
144
 
127
145
  ## Limitations
128
146
 
129
- - The sub-agent runs on a preview Gemini Flash model. Extraction quality depends
130
- on the model's ability to recognize durable patterns versus one-off incidents.
131
- - Auto Memory does not extract skills from the current session. It only
132
- considers sessions that have been idle for three hours or more.
147
+ - The extraction agent runs on a preview Gemini Flash model. Extraction quality
148
+ depends on the model's ability to recognize durable patterns versus one-off
149
+ incidents.
150
+ - Auto Memory does not extract memory or skills from the current session. It
151
+ only considers sessions that have been idle for three hours or more.
152
+ - Project or workspace shared instructions in project `GEMINI.md` files are not
153
+ auto-extractable. Auto Memory can propose private project memory, global
154
+ personal memory, and skills.
133
155
  - Inbox items are stored per project. Skills extracted in one workspace are not
134
156
  visible from another until you promote them to the user-scope skills
135
157
  directory.
@@ -138,6 +160,6 @@ start. Existing inbox items remain on disk; you can either drain them with
138
160
 
139
161
  - Learn how skills are discovered and activated in [Agent Skills](./skills.md).
140
162
  - Explore the [memory management tutorial](./tutorials/memory-management.md) for
141
- the complementary `save_memory` and `GEMINI.md` workflows.
163
+ the complementary explicit-memory and `GEMINI.md` workflows.
142
164
  - Review the experimental settings catalog in
143
165
  [Settings](./settings.md#experimental).
@@ -169,7 +169,7 @@ they appear in the UI.
169
169
  | Voice Activation Mode | `experimental.voice.activationMode` | How to trigger voice recording with the Space key. | `"push-to-talk"` |
170
170
  | Voice Transcription Backend | `experimental.voice.backend` | The backend to use for voice transcription. Note: When using the Gemini Live backend, voice recordings are sent to Google Cloud for transcription. | `"gemini-live"` |
171
171
  | Whisper Model | `experimental.voice.whisperModel` | The Whisper model to use for local transcription. | `"ggml-base.en.bin"` |
172
- | Voice Stop Grace Period (ms) | `experimental.voice.stopGracePeriodMs` | How long to wait for final transcription after stopping recording. | `1000` |
172
+ | Voice Stop Grace Period (ms) | `experimental.voice.stopGracePeriodMs` | How long to wait for final transcription after stopping recording. | `4000` |
173
173
  | Enable Git Worktrees | `experimental.worktrees` | Enable automated Git worktree management for parallel work. | `false` |
174
174
  | Use OSC 52 Paste | `experimental.useOSC52Paste` | Use OSC 52 for pasting. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
175
175
  | Use OSC 52 Copy | `experimental.useOSC52Copy` | Use OSC 52 for copying. This may be more robust than the default system when using remote terminal sessions (if your terminal is configured to allow it). | `false` |
@@ -125,4 +125,4 @@ immediately. Force a reload with:
125
125
  `/memory` options.
126
126
  - Read the technical spec for [Project context](../../cli/gemini-md.md).
127
127
  - Try the experimental [Auto Memory](../auto-memory.md) feature to extract
128
- reusable skills from your past sessions automatically.
128
+ memory updates and reusable skills from your past sessions automatically.
@@ -1,7 +1,8 @@
1
1
  # Release extensions
2
2
 
3
3
  Release Gemini CLI extensions to your users through a Git repository or GitHub
4
- Releases.
4
+ Releases. This guide explains how to share your work, list it in the gallery,
5
+ and manage updates.
5
6
 
6
7
  Git repository releases are the simplest approach and offer the most flexibility
7
8
  for managing development branches. GitHub Releases are more efficient for
@@ -153,29 +154,62 @@ jobs:
153
154
  release/win32.arm64.my-tool.zip
154
155
  ```
155
156
 
156
- ## Migrating an Extension Repository
157
+ ## Migrate an extension repository
157
158
 
158
- If you need to move your extension to a new repository (for example, from a
159
- personal account to an organization) or rename it, you can use the `migratedTo`
160
- property in your `gemini-extension.json` file to seamlessly transition your
159
+ If you move your extension to a new repository or rename it, use the
160
+ `migratedTo` property in `gemini-extension.json` to seamlessly transition your
161
161
  users.
162
162
 
163
- 1. **Create the new repository**: Setup your extension in its new location.
164
- 2. **Update the old repository**: In your original repository, update the
165
- `gemini-extension.json` file to include the `migratedTo` property, pointing
166
- to the new repository URL, and bump the version number. You can optionally
167
- change the `name` of your extension at this time in the new repository.
168
- ```json
169
- {
170
- "name": "my-extension",
171
- "version": "1.1.0",
172
- "migratedTo": "https://github.com/new-owner/new-extension-repo"
173
- }
174
- ```
175
- 3. **Release the update**: Publish this new version in your old repository.
176
-
177
- When users check for updates, Gemini CLI will detect the `migratedTo` field,
178
- verify that the new repository contains a valid extension update, and
179
- automatically update their local installation to track the new source and name
180
- moving forward. All extension settings will automatically migrate to the new
181
- installation.
163
+ 1. **Create the new repository:** Set up your extension in its new location.
164
+ 2. **Update the old repository:** In your original repository, update the
165
+ `gemini-extension.json` file to include the `migratedTo` property pointing
166
+ to the new repository URL, and increment the version number.
167
+ ```json
168
+ {
169
+ "name": "my-extension",
170
+ "version": "1.1.0",
171
+ "migratedTo": "https://github.com/new-owner/new-extension-repo"
172
+ }
173
+ ```
174
+ 3. **Release the update:** Publish this new version in your old repository.
175
+
176
+ When users check for updates, Gemini CLI detects the `migratedTo` field,
177
+ verifies the new repository, and automatically updates their local installation
178
+ to track the new source. All settings migrate automatically.
179
+
180
+ ## How updates work
181
+
182
+ Gemini CLI automatically checks for extension updates based on the installation
183
+ method. Understanding these mechanisms helps you ensure your users always have
184
+ the latest version.
185
+
186
+ ### Sync manifest and tags
187
+
188
+ For GitHub releases, always ensure the `version` in `gemini-extension.json`
189
+ matches your GitHub release tag. While the CLI uses tags for update detection,
190
+ it displays the manifest version in the UI. Keeping them in sync prevents
191
+ confusion.
192
+
193
+ ### Update mechanisms
194
+
195
+ <details>
196
+ <summary>Technical update details</summary>
197
+
198
+ The CLI uses different strategies depending on the installation type:
199
+
200
+ - **GitHub releases:** The CLI queries the GitHub API for the latest release
201
+ tag. It ignores the `version` field in the manifest for detection.
202
+ - **Git clones:** The CLI runs `git ls-remote` to compare the latest remote
203
+ commit hash with your local `HEAD`.
204
+ - **Local extensions:** The CLI compares the `version` field in the source
205
+ directory's manifest with the installed version.
206
+
207
+ To verify an extension's installation type, inspect the `type` field in the
208
+ metadata file at `~/.gemini/extensions/<name>/.gemini-extension-install.json`.
209
+
210
+ </details>
211
+
212
+ <!-- prettier-ignore -->
213
+ > [!IMPORTANT]
214
+ > The `migratedTo` flow requires at least one release on the new repository for
215
+ > the CLI to recognize it as a valid update source.