@google/gemini-cli-core 0.42.0-preview.1 → 0.43.0-preview.0

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 (341) hide show
  1. package/dist/docs/changelogs/index.md +14 -0
  2. package/dist/docs/changelogs/latest.md +108 -166
  3. package/dist/docs/changelogs/preview.md +227 -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/src/agent/content-utils.js +2 -0
  11. package/dist/src/agent/content-utils.js.map +1 -1
  12. package/dist/src/agent/content-utils.test.js +5 -1
  13. package/dist/src/agent/content-utils.test.js.map +1 -1
  14. package/dist/src/agent/event-translator.js +7 -6
  15. package/dist/src/agent/event-translator.js.map +1 -1
  16. package/dist/src/agent/legacy-agent-session.js +4 -0
  17. package/dist/src/agent/legacy-agent-session.js.map +1 -1
  18. package/dist/src/agent/legacy-agent-session.test.js +9 -1
  19. package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
  20. package/dist/src/agent/tool-display-utils.d.ts +3 -2
  21. package/dist/src/agent/tool-display-utils.js +3 -2
  22. package/dist/src/agent/tool-display-utils.js.map +1 -1
  23. package/dist/src/agent/types.d.ts +33 -3
  24. package/dist/src/agents/a2aUtils.d.ts +1 -1
  25. package/dist/src/agents/a2aUtils.js +4 -3
  26. package/dist/src/agents/a2aUtils.js.map +1 -1
  27. package/dist/src/agents/agentLoader.d.ts +2 -2
  28. package/dist/src/agents/browser/browserAgentInvocation.js +24 -19
  29. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  30. package/dist/src/agents/local-executor.d.ts +1 -0
  31. package/dist/src/agents/local-executor.js +46 -32
  32. package/dist/src/agents/local-executor.js.map +1 -1
  33. package/dist/src/agents/local-executor.test.js +127 -0
  34. package/dist/src/agents/local-executor.test.js.map +1 -1
  35. package/dist/src/agents/local-invocation.js +24 -20
  36. package/dist/src/agents/local-invocation.js.map +1 -1
  37. package/dist/src/agents/local-invocation.test.js +9 -9
  38. package/dist/src/agents/local-invocation.test.js.map +1 -1
  39. package/dist/src/agents/local-subagent-protocol.d.ts +18 -0
  40. package/dist/src/agents/local-subagent-protocol.js +357 -0
  41. package/dist/src/agents/local-subagent-protocol.js.map +1 -0
  42. package/dist/src/agents/local-subagent-protocol.test.d.ts +6 -0
  43. package/dist/src/agents/local-subagent-protocol.test.js +676 -0
  44. package/dist/src/agents/local-subagent-protocol.test.js.map +1 -0
  45. package/dist/src/agents/remote-invocation.js +6 -6
  46. package/dist/src/agents/remote-invocation.js.map +1 -1
  47. package/dist/src/agents/remote-invocation.test.js +23 -12
  48. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  49. package/dist/src/agents/remote-subagent-protocol.d.ts +31 -0
  50. package/dist/src/agents/remote-subagent-protocol.js +330 -0
  51. package/dist/src/agents/remote-subagent-protocol.js.map +1 -0
  52. package/dist/src/agents/remote-subagent-protocol.test.d.ts +6 -0
  53. package/dist/src/agents/remote-subagent-protocol.test.js +652 -0
  54. package/dist/src/agents/remote-subagent-protocol.test.js.map +1 -0
  55. package/dist/src/agents/skill-extraction-agent.js +1 -0
  56. package/dist/src/agents/skill-extraction-agent.js.map +1 -1
  57. package/dist/src/agents/skill-extraction-agent.test.js +1 -0
  58. package/dist/src/agents/skill-extraction-agent.test.js.map +1 -1
  59. package/dist/src/agents/types.d.ts +13 -2
  60. package/dist/src/agents/types.js +7 -0
  61. package/dist/src/agents/types.js.map +1 -1
  62. package/dist/src/availability/modelAvailabilityService.d.ts +6 -6
  63. package/dist/src/availability/modelAvailabilityService.js +14 -7
  64. package/dist/src/availability/modelAvailabilityService.js.map +1 -1
  65. package/dist/src/availability/modelAvailabilityService.test.js +34 -0
  66. package/dist/src/availability/modelAvailabilityService.test.js.map +1 -1
  67. package/dist/src/availability/policyHelpers.js +24 -12
  68. package/dist/src/availability/policyHelpers.js.map +1 -1
  69. package/dist/src/availability/policyHelpers.test.js +3 -2
  70. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  71. package/dist/src/code_assist/oauth2.js +3 -0
  72. package/dist/src/code_assist/oauth2.js.map +1 -1
  73. package/dist/src/code_assist/setup.d.ts +3 -0
  74. package/dist/src/code_assist/setup.js +9 -0
  75. package/dist/src/code_assist/setup.js.map +1 -1
  76. package/dist/src/code_assist/setup.test.js +9 -1
  77. package/dist/src/code_assist/setup.test.js.map +1 -1
  78. package/dist/src/commands/memory.d.ts +5 -14
  79. package/dist/src/commands/memory.js +19 -141
  80. package/dist/src/commands/memory.js.map +1 -1
  81. package/dist/src/commands/memory.test.js +62 -0
  82. package/dist/src/commands/memory.test.js.map +1 -1
  83. package/dist/src/config/config.d.ts +6 -2
  84. package/dist/src/config/config.js +63 -8
  85. package/dist/src/config/config.js.map +1 -1
  86. package/dist/src/config/config.test.js +48 -0
  87. package/dist/src/config/config.test.js.map +1 -1
  88. package/dist/src/config/defaultModelConfigs.js +13 -0
  89. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  90. package/dist/src/config/models.js +1 -1
  91. package/dist/src/config/models.js.map +1 -1
  92. package/dist/src/config/projectRegistry.d.ts +1 -0
  93. package/dist/src/config/projectRegistry.js +13 -2
  94. package/dist/src/config/projectRegistry.js.map +1 -1
  95. package/dist/src/config/projectRegistry.test.js +43 -0
  96. package/dist/src/config/projectRegistry.test.js.map +1 -1
  97. package/dist/src/context/config/profiles.js +4 -0
  98. package/dist/src/context/config/profiles.js.map +1 -1
  99. package/dist/src/context/contextManager.barrier.test.js +4 -3
  100. package/dist/src/context/contextManager.barrier.test.js.map +1 -1
  101. package/dist/src/context/contextManager.d.ts +9 -2
  102. package/dist/src/context/contextManager.hotstart.test.d.ts +6 -0
  103. package/dist/src/context/contextManager.hotstart.test.js +61 -0
  104. package/dist/src/context/contextManager.hotstart.test.js.map +1 -0
  105. package/dist/src/context/contextManager.js +96 -21
  106. package/dist/src/context/contextManager.js.map +1 -1
  107. package/dist/src/context/eventBus.d.ts +6 -0
  108. package/dist/src/context/eventBus.js +6 -0
  109. package/dist/src/context/eventBus.js.map +1 -1
  110. package/dist/src/context/graph/render.d.ts +3 -1
  111. package/dist/src/context/graph/render.js +33 -9
  112. package/dist/src/context/graph/render.js.map +1 -1
  113. package/dist/src/context/graph/render.test.d.ts +6 -0
  114. package/dist/src/context/graph/render.test.js +203 -0
  115. package/dist/src/context/graph/render.test.js.map +1 -0
  116. package/dist/src/context/graph/toGraph.js +3 -3
  117. package/dist/src/context/graph/toGraph.js.map +1 -1
  118. package/dist/src/context/graph/toGraph.test.d.ts +6 -0
  119. package/dist/src/context/graph/toGraph.test.js +35 -0
  120. package/dist/src/context/graph/toGraph.test.js.map +1 -0
  121. package/dist/src/context/initializer.js +11 -2
  122. package/dist/src/context/initializer.js.map +1 -1
  123. package/dist/src/context/pipeline/contextWorkingBuffer.d.ts +5 -7
  124. package/dist/src/context/pipeline/contextWorkingBuffer.js +105 -29
  125. package/dist/src/context/pipeline/contextWorkingBuffer.js.map +1 -1
  126. package/dist/src/context/pipeline/contextWorkingBuffer.test.js +67 -0
  127. package/dist/src/context/pipeline/contextWorkingBuffer.test.js.map +1 -1
  128. package/dist/src/context/pipeline/environment.d.ts +4 -0
  129. package/dist/src/context/pipeline/environmentImpl.d.ts +6 -5
  130. package/dist/src/context/pipeline/environmentImpl.js +6 -8
  131. package/dist/src/context/pipeline/environmentImpl.js.map +1 -1
  132. package/dist/src/context/pipeline/environmentImpl.test.js +5 -1
  133. package/dist/src/context/pipeline/environmentImpl.test.js.map +1 -1
  134. package/dist/src/context/pipeline/orchestrator.d.ts +1 -0
  135. package/dist/src/context/pipeline/orchestrator.js +59 -24
  136. package/dist/src/context/pipeline/orchestrator.js.map +1 -1
  137. package/dist/src/context/processors/blobDegradationProcessor.test.js +2 -2
  138. package/dist/src/context/processors/rollingSummaryProcessor.js +2 -15
  139. package/dist/src/context/processors/rollingSummaryProcessor.js.map +1 -1
  140. package/dist/src/context/processors/stateSnapshotAsyncProcessor.d.ts +7 -0
  141. package/dist/src/context/processors/stateSnapshotAsyncProcessor.js +33 -21
  142. package/dist/src/context/processors/stateSnapshotAsyncProcessor.js.map +1 -1
  143. package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js +31 -7
  144. package/dist/src/context/processors/stateSnapshotAsyncProcessor.test.js.map +1 -1
  145. package/dist/src/context/processors/stateSnapshotProcessor.d.ts +2 -0
  146. package/dist/src/context/processors/stateSnapshotProcessor.js +28 -4
  147. package/dist/src/context/processors/stateSnapshotProcessor.js.map +1 -1
  148. package/dist/src/context/processors/stateSnapshotProcessor.test.js +40 -1
  149. package/dist/src/context/processors/stateSnapshotProcessor.test.js.map +1 -1
  150. package/dist/src/context/system-tests/hysteresis.test.d.ts +6 -0
  151. package/dist/src/context/system-tests/hysteresis.test.js +98 -0
  152. package/dist/src/context/system-tests/hysteresis.test.js.map +1 -0
  153. package/dist/src/context/system-tests/lifecycle.golden.test.js +90 -69
  154. package/dist/src/context/system-tests/lifecycle.golden.test.js.map +1 -1
  155. package/dist/src/context/system-tests/simulationHarness.d.ts +1 -4
  156. package/dist/src/context/system-tests/simulationHarness.js +16 -30
  157. package/dist/src/context/system-tests/simulationHarness.js.map +1 -1
  158. package/dist/src/context/testing/contextTestUtils.d.ts +1 -0
  159. package/dist/src/context/testing/contextTestUtils.js +48 -25
  160. package/dist/src/context/testing/contextTestUtils.js.map +1 -1
  161. package/dist/src/context/utils/adaptiveTokenCalculator.d.ts +61 -0
  162. package/dist/src/context/utils/adaptiveTokenCalculator.js +116 -0
  163. package/dist/src/context/utils/adaptiveTokenCalculator.js.map +1 -0
  164. package/dist/src/context/utils/adaptiveTokenCalculator.test.d.ts +6 -0
  165. package/dist/src/context/utils/adaptiveTokenCalculator.test.js +85 -0
  166. package/dist/src/context/utils/adaptiveTokenCalculator.test.js.map +1 -0
  167. package/dist/src/context/utils/contextTokenCalculator.d.ts +47 -1
  168. package/dist/src/context/utils/contextTokenCalculator.js +20 -3
  169. package/dist/src/context/utils/contextTokenCalculator.js.map +1 -1
  170. package/dist/src/context/utils/contextTokenCalculator.test.js +8 -8
  171. package/dist/src/context/utils/contextTokenCalculator.test.js.map +1 -1
  172. package/dist/src/context/utils/formatNodesForLlm.d.ts +21 -0
  173. package/dist/src/context/utils/formatNodesForLlm.js +69 -0
  174. package/dist/src/context/utils/formatNodesForLlm.js.map +1 -0
  175. package/dist/src/context/utils/formatNodesForLlm.test.d.ts +6 -0
  176. package/dist/src/context/utils/formatNodesForLlm.test.js +110 -0
  177. package/dist/src/context/utils/formatNodesForLlm.test.js.map +1 -0
  178. package/dist/src/context/utils/snapshotGenerator.d.ts +23 -1
  179. package/dist/src/context/utils/snapshotGenerator.js +249 -31
  180. package/dist/src/context/utils/snapshotGenerator.js.map +1 -1
  181. package/dist/src/context/utils/snapshotGenerator.test.d.ts +6 -0
  182. package/dist/src/context/utils/snapshotGenerator.test.js +255 -0
  183. package/dist/src/context/utils/snapshotGenerator.test.js.map +1 -0
  184. package/dist/src/context/utils/tokenCalibration.d.ts +9 -0
  185. package/dist/src/context/utils/tokenCalibration.js +30 -0
  186. package/dist/src/context/utils/tokenCalibration.js.map +1 -0
  187. package/dist/src/core/baseLlmClient.d.ts +8 -0
  188. package/dist/src/core/baseLlmClient.js +14 -0
  189. package/dist/src/core/baseLlmClient.js.map +1 -1
  190. package/dist/src/core/client.js +12 -1
  191. package/dist/src/core/client.js.map +1 -1
  192. package/dist/src/core/client.test.js +4 -4
  193. package/dist/src/core/contentGenerator.js +12 -10
  194. package/dist/src/core/contentGenerator.js.map +1 -1
  195. package/dist/src/core/geminiChat.d.ts +2 -0
  196. package/dist/src/core/geminiChat.js +60 -5
  197. package/dist/src/core/geminiChat.js.map +1 -1
  198. package/dist/src/core/geminiChat.test.js +195 -2
  199. package/dist/src/core/geminiChat.test.js.map +1 -1
  200. package/dist/src/core/turn.js +30 -2
  201. package/dist/src/core/turn.js.map +1 -1
  202. package/dist/src/core/turn.test.js +13 -8
  203. package/dist/src/core/turn.test.js.map +1 -1
  204. package/dist/src/generated/git-commit.d.ts +2 -2
  205. package/dist/src/generated/git-commit.js +2 -2
  206. package/dist/src/hooks/hookEventHandler.js +3 -2
  207. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  208. package/dist/src/hooks/hookEventHandler.test.js +80 -0
  209. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  210. package/dist/src/index.d.ts +2 -1
  211. package/dist/src/index.js +2 -2
  212. package/dist/src/index.js.map +1 -1
  213. package/dist/src/prompts/snippets.js +1 -1
  214. package/dist/src/prompts/snippets.js.map +1 -1
  215. package/dist/src/routing/strategies/approvalModeStrategy.js +5 -3
  216. package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -1
  217. package/dist/src/routing/strategies/approvalModeStrategy.test.js +2 -0
  218. package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -1
  219. package/dist/src/routing/strategies/classifierStrategy.js +8 -1
  220. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -1
  221. package/dist/src/routing/strategies/classifierStrategy.test.js +4 -0
  222. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -1
  223. package/dist/src/routing/strategies/gemmaClassifierStrategy.js +7 -1
  224. package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -1
  225. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +4 -0
  226. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -1
  227. package/dist/src/routing/strategies/numericalClassifierStrategy.d.ts +1 -0
  228. package/dist/src/routing/strategies/numericalClassifierStrategy.js +22 -3
  229. package/dist/src/routing/strategies/numericalClassifierStrategy.js.map +1 -1
  230. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js +168 -23
  231. package/dist/src/routing/strategies/numericalClassifierStrategy.test.js.map +1 -1
  232. package/dist/src/scheduler/scheduler.js +11 -0
  233. package/dist/src/scheduler/scheduler.js.map +1 -1
  234. package/dist/src/scheduler/scheduler.test.js +1 -1
  235. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  236. package/dist/src/scheduler/state-manager.js +5 -1
  237. package/dist/src/scheduler/state-manager.js.map +1 -1
  238. package/dist/src/scheduler/tool-executor.js +7 -4
  239. package/dist/src/scheduler/tool-executor.js.map +1 -1
  240. package/dist/src/scheduler/types.d.ts +5 -1
  241. package/dist/src/scheduler/types.js.map +1 -1
  242. package/dist/src/services/fileDiscoveryService.js +2 -1
  243. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  244. package/dist/src/services/fileDiscoveryService.test.js +36 -0
  245. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  246. package/dist/src/services/gitService.js +8 -1
  247. package/dist/src/services/gitService.js.map +1 -1
  248. package/dist/src/services/gitService.test.js +104 -0
  249. package/dist/src/services/gitService.test.js.map +1 -1
  250. package/dist/src/services/keychainService.js +14 -5
  251. package/dist/src/services/keychainService.js.map +1 -1
  252. package/dist/src/services/memoryPatchUtils.d.ts +66 -4
  253. package/dist/src/services/memoryPatchUtils.js +267 -5
  254. package/dist/src/services/memoryPatchUtils.js.map +1 -1
  255. package/dist/src/services/memoryService.js +25 -1
  256. package/dist/src/services/memoryService.js.map +1 -1
  257. package/dist/src/services/memoryService.test.js +61 -1
  258. package/dist/src/services/memoryService.test.js.map +1 -1
  259. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +11 -0
  260. package/dist/src/services/test-data/resolved-aliases.golden.json +11 -0
  261. package/dist/src/telemetry/gcp-exporters.d.ts +2 -0
  262. package/dist/src/telemetry/gcp-exporters.js +69 -5
  263. package/dist/src/telemetry/gcp-exporters.js.map +1 -1
  264. package/dist/src/telemetry/gcp-exporters.test.js +52 -0
  265. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -1
  266. package/dist/src/telemetry/metrics.js +13 -2
  267. package/dist/src/telemetry/metrics.js.map +1 -1
  268. package/dist/src/telemetry/metrics.test.js +61 -1
  269. package/dist/src/telemetry/metrics.test.js.map +1 -1
  270. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +5 -2
  271. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  272. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +7 -4
  273. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  274. package/dist/src/tools/edit.js +19 -0
  275. package/dist/src/tools/edit.js.map +1 -1
  276. package/dist/src/tools/edit.test.js +9 -0
  277. package/dist/src/tools/edit.test.js.map +1 -1
  278. package/dist/src/tools/grep.js +13 -1
  279. package/dist/src/tools/grep.js.map +1 -1
  280. package/dist/src/tools/ls.js +5 -0
  281. package/dist/src/tools/ls.js.map +1 -1
  282. package/dist/src/tools/mcp-client.js +17 -3
  283. package/dist/src/tools/mcp-client.js.map +1 -1
  284. package/dist/src/tools/mcp-client.test.js +24 -0
  285. package/dist/src/tools/mcp-client.test.js.map +1 -1
  286. package/dist/src/tools/read-file.js +11 -6
  287. package/dist/src/tools/read-file.js.map +1 -1
  288. package/dist/src/tools/read-file.test.js +20 -8
  289. package/dist/src/tools/read-file.test.js.map +1 -1
  290. package/dist/src/tools/ripGrep.js +13 -1
  291. package/dist/src/tools/ripGrep.js.map +1 -1
  292. package/dist/src/tools/shell.js +14 -0
  293. package/dist/src/tools/shell.js.map +1 -1
  294. package/dist/src/tools/shell.test.js +5 -0
  295. package/dist/src/tools/shell.test.js.map +1 -1
  296. package/dist/src/tools/tools.d.ts +6 -0
  297. package/dist/src/tools/tools.js.map +1 -1
  298. package/dist/src/tools/topicTool.js +5 -0
  299. package/dist/src/tools/topicTool.js.map +1 -1
  300. package/dist/src/tools/write-file.js +13 -0
  301. package/dist/src/tools/write-file.js.map +1 -1
  302. package/dist/src/tools/write-file.test.js +8 -0
  303. package/dist/src/tools/write-file.test.js.map +1 -1
  304. package/dist/src/utils/errors.js +3 -8
  305. package/dist/src/utils/errors.js.map +1 -1
  306. package/dist/src/utils/filesearch/ignore.js +4 -1
  307. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  308. package/dist/src/utils/ignoreFileParser.js +1 -1
  309. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  310. package/dist/src/utils/ignorePatterns.js +2 -0
  311. package/dist/src/utils/ignorePatterns.js.map +1 -1
  312. package/dist/src/utils/ignorePatterns.test.js +1 -0
  313. package/dist/src/utils/ignorePatterns.test.js.map +1 -1
  314. package/dist/src/utils/memoryDiscovery.js +55 -40
  315. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  316. package/dist/src/utils/memoryDiscovery.test.js +77 -9
  317. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  318. package/dist/src/utils/modelUtils.d.ts +14 -0
  319. package/dist/src/utils/modelUtils.js +17 -0
  320. package/dist/src/utils/modelUtils.js.map +1 -0
  321. package/dist/src/utils/modelUtils.test.d.ts +6 -0
  322. package/dist/src/utils/modelUtils.test.js +23 -0
  323. package/dist/src/utils/modelUtils.test.js.map +1 -0
  324. package/dist/src/utils/paths.d.ts +15 -1
  325. package/dist/src/utils/paths.js +22 -7
  326. package/dist/src/utils/paths.js.map +1 -1
  327. package/dist/src/utils/paths.test.js +25 -1
  328. package/dist/src/utils/paths.test.js.map +1 -1
  329. package/dist/src/utils/quotaErrorDetection.js +23 -12
  330. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  331. package/dist/src/utils/shell-utils.js +9 -1
  332. package/dist/src/utils/shell-utils.js.map +1 -1
  333. package/dist/src/utils/shell-utils.test.js +7 -3
  334. package/dist/src/utils/shell-utils.test.js.map +1 -1
  335. package/dist/src/utils/tokenCalculation.js +2 -1
  336. package/dist/src/utils/tokenCalculation.js.map +1 -1
  337. package/dist/src/utils/tokenCalculation.test.js +15 -0
  338. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  339. package/dist/tsconfig.tsbuildinfo +1 -1
  340. package/package.json +1 -1
  341. package/dist/google-gemini-cli-core-0.42.0-preview.0.tgz +0 -0
@@ -15,6 +15,7 @@ export class PipelineOrchestrator {
15
15
  activeTimers = [];
16
16
  pendingPipelines = new Map();
17
17
  pipelineMutex = new Map();
18
+ pipelineScheduled = new Set();
18
19
  nodeProvider;
19
20
  constructor(pipelines, asyncPipelines, env, eventBus, tracer) {
20
21
  this.pipelines = pipelines;
@@ -60,58 +61,92 @@ export class PipelineOrchestrator {
60
61
  else if (trigger === 'retained_exceeded' ||
61
62
  trigger === 'nodes_aged_out') {
62
63
  this.eventBus.onConsolidationNeeded((event) => {
63
- executeFn(pipeline, event.nodes, event.targetNodeIds, new Set());
64
+ void executeFn(pipeline, event.nodes, event.targetNodeIds, new Set());
64
65
  });
65
66
  }
66
67
  else if (trigger === 'new_message' || trigger === 'nodes_added') {
67
68
  this.eventBus.onChunkReceived((event) => {
68
- executeFn(pipeline, event.nodes, event.targetNodeIds, new Set());
69
+ void executeFn(pipeline, event.nodes, event.targetNodeIds, new Set());
69
70
  });
70
71
  }
71
72
  }
72
73
  }
73
74
  };
74
- bindTriggers(this.pipelines, (pipeline, nodes, targets, protectedIds) => {
75
- // Fetch the tail of the current chain for this pipeline, or start a new one
75
+ const handleSyncExecution = async (pipeline, nodes, targets, protectedIds) => {
76
+ if (this.pipelineScheduled.has(pipeline.name)) {
77
+ debugLogger.log(`[Orchestrator] Pipeline ${pipeline.name} already scheduled (sync), dropping.`);
78
+ return;
79
+ }
80
+ this.pipelineScheduled.add(pipeline.name);
76
81
  const existing = this.pipelineMutex.get(pipeline.name) || Promise.resolve();
77
82
  const nextPromise = (async () => {
78
83
  try {
79
- // Wait for the previous run of THIS pipeline to complete
80
84
  await existing;
81
- // We re-fetch the LATEST nodes from the environment's live buffer
82
- // to ensure this sequential run isn't operating on stale data from the trigger event.
83
- const latestNodes = this.nodeProvider();
85
+ this.pipelineScheduled.delete(pipeline.name);
86
+ const latestNodes = this.nodeProvider ? this.nodeProvider() : nodes;
87
+ const latestTargets = latestNodes.filter((n) => targets.has(n.id));
88
+ debugLogger.log(`[Orchestrator] Executing sync pipeline ${pipeline.name} with ${latestTargets.length} latest targets.`);
89
+ if (latestTargets.length === 0) {
90
+ debugLogger.log(`[Orchestrator] No latest targets for sync pipeline ${pipeline.name}, returning.`);
91
+ return;
92
+ }
84
93
  await this.executePipelineAsync(pipeline, latestNodes, new Set(targets), new Set(protectedIds));
85
94
  }
86
95
  catch (e) {
87
- debugLogger.error(`Pipeline chain ${pipeline.name} failed:`, e);
96
+ debugLogger.error(`Sync pipeline chain ${pipeline.name} failed:`, e);
88
97
  }
89
98
  })();
90
- // Update the chain tail
91
99
  this.pipelineMutex.set(pipeline.name, nextPromise);
92
100
  const pipelineId = `${pipeline.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
93
101
  this.pendingPipelines.set(pipelineId, nextPromise);
94
102
  void nextPromise.finally(() => {
95
103
  this.pendingPipelines.delete(pipelineId);
96
- // Only clear the mutex if we are still the tail of the chain
97
104
  if (this.pipelineMutex.get(pipeline.name) === nextPromise) {
98
105
  this.pipelineMutex.delete(pipeline.name);
99
106
  }
100
107
  });
101
- });
102
- bindTriggers(this.asyncPipelines, (pipeline, nodes, targetIds) => {
103
- const inboxSnapshot = new InboxSnapshotImpl(this.env.inbox.getMessages() || []);
104
- const targets = nodes.filter((n) => targetIds.has(n.id));
105
- for (const processor of pipeline.processors) {
106
- processor
107
- .process({
108
- targets,
109
- inbox: inboxSnapshot,
110
- buffer: ContextWorkingBufferImpl.initialize(nodes),
111
- })
112
- .catch((e) => debugLogger.error(`AsyncProcessor ${processor.name} failed:`, e));
108
+ };
109
+ const handleAsyncExecution = async (pipeline, nodes, targets) => {
110
+ if (this.pipelineScheduled.has(pipeline.name)) {
111
+ debugLogger.log(`[Orchestrator] Pipeline ${pipeline.name} already scheduled (async), dropping.`);
112
+ return;
113
113
  }
114
- });
114
+ this.pipelineScheduled.add(pipeline.name);
115
+ const existing = this.pipelineMutex.get(pipeline.name) || Promise.resolve();
116
+ const nextPromise = (async () => {
117
+ try {
118
+ await existing;
119
+ this.pipelineScheduled.delete(pipeline.name);
120
+ const latestNodes = this.nodeProvider ? this.nodeProvider() : nodes;
121
+ const latestTargets = latestNodes.filter((n) => targets.has(n.id));
122
+ debugLogger.log(`[Orchestrator] Executing async pipeline ${pipeline.name} with ${latestTargets.length} latest targets.`);
123
+ const inboxSnapshot = new InboxSnapshotImpl(this.env.inbox.getMessages() || []);
124
+ for (const processor of pipeline.processors) {
125
+ debugLogger.log(`[Orchestrator] Running async processor ${processor.id}`);
126
+ await processor.process({
127
+ targets: latestTargets,
128
+ inbox: inboxSnapshot,
129
+ buffer: ContextWorkingBufferImpl.initialize(latestNodes),
130
+ });
131
+ }
132
+ this.env.inbox.drainConsumed(inboxSnapshot.getConsumedIds());
133
+ }
134
+ catch (e) {
135
+ debugLogger.error(`Async pipeline chain ${pipeline.name} failed:`, e);
136
+ }
137
+ })();
138
+ this.pipelineMutex.set(pipeline.name, nextPromise);
139
+ const pipelineId = `${pipeline.name}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
140
+ this.pendingPipelines.set(pipelineId, nextPromise);
141
+ void nextPromise.finally(() => {
142
+ this.pendingPipelines.delete(pipelineId);
143
+ if (this.pipelineMutex.get(pipeline.name) === nextPromise) {
144
+ this.pipelineMutex.delete(pipeline.name);
145
+ }
146
+ });
147
+ };
148
+ bindTriggers(this.pipelines, (pipeline, nodes, targets, protectedIds) => handleSyncExecution(pipeline, nodes, targets, protectedIds));
149
+ bindTriggers(this.asyncPipelines, (pipeline, nodes, targets) => handleAsyncExecution(pipeline, nodes, targets));
115
150
  }
116
151
  shutdown() {
117
152
  for (const timer of this.activeTimers) {
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../src/context/pipeline/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../../src/context/pipeline/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -42,12 +42,12 @@ describe('BlobDegradationProcessor', () => {
42
42
  const processor = createBlobDegradationProcessor('BlobDegradationProcessor', env);
43
43
  const node1 = createDummyNode('ep1', NodeType.USER_PROMPT, 100, {
44
44
  payload: {
45
- fileData: { mimeType: 'video/mp4', fileUri: 'gs://test1' },
45
+ fileData: { mimeType: 'image/png', fileUri: 'gs://test1' },
46
46
  },
47
47
  });
48
48
  const node2 = createDummyNode('ep1', NodeType.USER_PROMPT, 100, {
49
49
  payload: {
50
- fileData: { mimeType: 'video/mp4', fileUri: 'gs://test2' },
50
+ fileData: { mimeType: 'image/png', fileUri: 'gs://test2' },
51
51
  },
52
52
  });
53
53
  const targets = [node1, node2];
@@ -7,6 +7,7 @@ import { randomUUID } from 'node:crypto';
7
7
  import { NodeType, } from '../graph/types.js';
8
8
  import { debugLogger } from '../../utils/debugLogger.js';
9
9
  import { LlmRole } from '../../telemetry/llmRole.js';
10
+ import { formatNodesForLlm } from '../utils/formatNodesForLlm.js';
10
11
  export const RollingSummaryProcessorOptionsSchema = {
11
12
  type: 'object',
12
13
  properties: {
@@ -23,21 +24,7 @@ export const RollingSummaryProcessorOptionsSchema = {
23
24
  };
24
25
  export function createRollingSummaryProcessor(id, env, options) {
25
26
  const generateRollingSummary = async (nodes) => {
26
- let transcript = '';
27
- for (const node of nodes) {
28
- const payload = node.payload;
29
- let nodeContent = '';
30
- if (payload.text) {
31
- nodeContent = payload.text;
32
- }
33
- else if (payload.functionCall) {
34
- nodeContent = `CALL: ${payload.functionCall.name}(${JSON.stringify(payload.functionCall.args)})`;
35
- }
36
- else if (payload.functionResponse) {
37
- nodeContent = `RESPONSE: ${JSON.stringify(payload.functionResponse.response)}`;
38
- }
39
- transcript += `[${node.type}]: ${nodeContent}\n`;
40
- }
27
+ const transcript = formatNodesForLlm(nodes);
41
28
  const systemPrompt = options.systemInstruction ??
42
29
  `You are an expert context compressor. Your job is to drastically shorten the provided conversational transcript while preserving the absolute core semantic meaning, facts, and intent. Omit all conversational filler, pleasantries, or redundant information. Return ONLY the compressed summary.`;
43
30
  const response = await env.llmClient.generateContent({
@@ -1 +1 @@
1
- {"version":3,"file":"rollingSummaryProcessor.js","sourceRoot":"","sources":["../../../../src/context/processors/rollingSummaryProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rollingSummaryProcessor.js","sourceRoot":"","sources":["../../../../src/context/processors/rollingSummaryProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
1
6
  import type { JSONSchemaType } from 'ajv';
2
7
  import type { AsyncContextProcessor } from '../pipeline.js';
3
8
  import type { ContextEnvironment } from '../pipeline/environment.js';
4
9
  export interface StateSnapshotAsyncProcessorOptions {
5
10
  type?: 'accumulate' | 'point-in-time';
6
11
  systemInstruction?: string;
12
+ maxSummaryTurns?: number;
13
+ maxStateTokens?: number;
7
14
  }
8
15
  export declare const StateSnapshotAsyncProcessorOptionsSchema: JSONSchemaType<StateSnapshotAsyncProcessorOptions>;
9
16
  export declare function createStateSnapshotAsyncProcessor(id: string, env: ContextEnvironment, options: StateSnapshotAsyncProcessorOptions): AsyncContextProcessor;
@@ -1,12 +1,6 @@
1
- /**
2
- * @license
3
- * Copyright 2026 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { randomUUID } from 'node:crypto';
7
- import { NodeType } from '../graph/types.js';
8
- import { SnapshotGenerator } from '../utils/snapshotGenerator.js';
1
+ import { SnapshotGenerator, findLatestSnapshotBaseline, } from '../utils/snapshotGenerator.js';
9
2
  import { debugLogger } from '../../utils/debugLogger.js';
3
+ import { NodeType } from '../graph/types.js';
10
4
  export const StateSnapshotAsyncProcessorOptionsSchema = {
11
5
  type: 'object',
12
6
  properties: {
@@ -16,6 +10,8 @@ export const StateSnapshotAsyncProcessorOptionsSchema = {
16
10
  nullable: true,
17
11
  },
18
12
  systemInstruction: { type: 'string', nullable: true },
13
+ maxSummaryTurns: { type: 'number', nullable: true },
14
+ maxStateTokens: { type: 'number', nullable: true },
19
15
  },
20
16
  required: [],
21
17
  };
@@ -28,11 +24,12 @@ export function createStateSnapshotAsyncProcessor(id, env, options) {
28
24
  if (targets.length === 0)
29
25
  return;
30
26
  try {
31
- let nodesToSummarize = [...targets];
32
27
  let previousConsumedIds = [];
33
28
  const processorType = options.type ?? 'point-in-time';
29
+ const nodesToSummarize = [...targets];
30
+ let previousStateJson = undefined;
34
31
  if (processorType === 'accumulate') {
35
- // Look for the most recent unconsumed accumulate snapshot in the inbox
32
+ // 1. Look for the most recent unconsumed accumulate snapshot in the inbox
36
33
  const proposedSnapshots = inbox.getMessages('PROPOSED_SNAPSHOT');
37
34
  const accumulateSnapshots = proposedSnapshots.filter((s) => s.payload.type === 'accumulate');
38
35
  if (accumulateSnapshots.length > 0) {
@@ -44,19 +41,34 @@ export function createStateSnapshotAsyncProcessor(id, env, options) {
44
41
  // because we are effectively "taking" it from the shelf to modify.
45
42
  env.inbox.drainConsumed(new Set([latest.id]));
46
43
  previousConsumedIds = latest.payload.consumedIds;
47
- const snapshotId = randomUUID();
48
- const previousStateNode = {
49
- id: snapshotId,
50
- turnId: snapshotId,
51
- type: NodeType.SNAPSHOT,
52
- timestamp: latest.timestamp,
53
- role: 'user',
54
- payload: { text: latest.payload.newText },
55
- };
56
- nodesToSummarize = [previousStateNode, ...targets];
44
+ previousStateJson = latest.payload.newText;
45
+ }
46
+ else {
47
+ // 2. Global Lookback: No draft in inbox, scan the context graph for the last live snapshot
48
+ const baseline = findLatestSnapshotBaseline(targets);
49
+ if (baseline) {
50
+ previousStateJson = baseline.text;
51
+ previousConsumedIds = [...baseline.abstractsIds];
52
+ }
53
+ else {
54
+ debugLogger.log('[StateSnapshotAsyncProcessor] No previous snapshot found in Inbox or Graph. Initializing new Master State baseline in background.');
55
+ }
57
56
  }
58
57
  }
59
- const snapshotText = await generator.synthesizeSnapshot(nodesToSummarize, options.systemInstruction);
58
+ // If the snapshot happens to be inside our summary window, remove it so the LLM doesn't read it as raw transcript
59
+ if (previousStateJson) {
60
+ const summaryIdx = nodesToSummarize.findIndex((n) => n.type === NodeType.SNAPSHOT &&
61
+ n.payload.text === previousStateJson);
62
+ if (summaryIdx !== -1) {
63
+ nodesToSummarize.splice(summaryIdx, 1);
64
+ }
65
+ }
66
+ if (nodesToSummarize.length === 0)
67
+ return;
68
+ const snapshotText = await generator.synthesizeSnapshot(nodesToSummarize, previousStateJson, {
69
+ maxSummaryTurns: options.maxSummaryTurns,
70
+ maxStateTokens: options.maxStateTokens,
71
+ });
60
72
  const newConsumedIds = [
61
73
  ...previousConsumedIds,
62
74
  ...targets.map((t) => t.id),
@@ -1 +1 @@
1
- {"version":3,"file":"stateSnapshotAsyncProcessor.js","sourceRoot":"","sources":["../../../../src/context/processors/stateSnapshotAsyncProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateSnapshotAsyncProcessor.js","sourceRoot":"","sources":["../../../../src/context/processors/stateSnapshotAsyncProcessor.ts"],"names":[],"mappings":"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"}
@@ -17,11 +17,11 @@ describe('StateSnapshotAsyncProcessor', () => {
17
17
  const nodeB = createDummyNode('ep1', NodeType.AGENT_THOUGHT, 60, {}, 'node-B');
18
18
  const targets = [nodeA, nodeB];
19
19
  await worker.process(createMockProcessArgs(targets, targets, []));
20
- // Ensure generateContent was called
21
- expect(env.llmClient.generateContent).toHaveBeenCalled();
20
+ // Ensure generateJson was called
21
+ expect(env.llmClient.generateJson).toHaveBeenCalled();
22
22
  // Verify it published to the inbox
23
23
  expect(publishSpy).toHaveBeenCalledWith('PROPOSED_SNAPSHOT', expect.objectContaining({
24
- newText: 'Mock LLM summary response',
24
+ newText: '{"active_tasks":[],"discovered_facts":[],"constraints_and_preferences":[],"recent_arc":["Mock LLM summary response"]}',
25
25
  consumedIds: ['node-A', 'node-B'],
26
26
  type: 'point-in-time',
27
27
  }));
@@ -52,17 +52,17 @@ describe('StateSnapshotAsyncProcessor', () => {
52
52
  expect(drainSpy).toHaveBeenCalledWith(expect.any(Set));
53
53
  // The new publish should contain ALL consumed IDs (old + new)
54
54
  expect(publishSpy).toHaveBeenCalledWith('PROPOSED_SNAPSHOT', expect.objectContaining({
55
- newText: 'Mock LLM summary response',
55
+ newText: '{"active_tasks":[],"discovered_facts":[],"constraints_and_preferences":[],"recent_arc":["Mock LLM summary response"]}',
56
56
  consumedIds: ['node-A', 'node-B', 'node-C'], // Aggregated!
57
57
  type: 'accumulate',
58
58
  }));
59
- // Verify the LLM was called with the old snapshot prepended
60
- expect(env.llmClient.generateContent).toHaveBeenCalledWith(expect.objectContaining({
59
+ // Verify the LLM was called with the old snapshot provided in the prompt
60
+ expect(env.llmClient.generateJson).toHaveBeenCalledWith(expect.objectContaining({
61
61
  contents: expect.arrayContaining([
62
62
  expect.objectContaining({
63
63
  parts: expect.arrayContaining([
64
64
  expect.objectContaining({
65
- text: expect.stringContaining('<old snapshot>'),
65
+ text: expect.stringContaining('CURRENT MASTER STATE'),
66
66
  }),
67
67
  ]),
68
68
  }),
@@ -77,5 +77,29 @@ describe('StateSnapshotAsyncProcessor', () => {
77
77
  expect(env.llmClient.generateContent).not.toHaveBeenCalled();
78
78
  expect(publishSpy).not.toHaveBeenCalled();
79
79
  });
80
+ it('should use Global Lookback to find an existing snapshot in the graph when inbox is empty', async () => {
81
+ const env = createMockEnvironment();
82
+ const worker = createStateSnapshotAsyncProcessor('StateSnapshotAsyncProcessor', env, { type: 'accumulate' });
83
+ // Create an old snapshot with existing JSON state
84
+ const oldStateJson = JSON.stringify({
85
+ discovered_facts: ['Global Lookback Async Works!'],
86
+ });
87
+ const oldSnapshot = createDummyNode('ep1', NodeType.SNAPSHOT, 10, { payload: { text: oldStateJson } }, 'old-snap');
88
+ const nodeC = createDummyNode('ep2', NodeType.USER_PROMPT, 50, {}, 'node-C');
89
+ const targets = [oldSnapshot, nodeC];
90
+ const args = createMockProcessArgs(targets, targets, []); // Empty inbox!
91
+ await worker.process(args);
92
+ expect(env.llmClient.generateJson).toHaveBeenCalledWith(expect.objectContaining({
93
+ contents: expect.arrayContaining([
94
+ expect.objectContaining({
95
+ parts: expect.arrayContaining([
96
+ expect.objectContaining({
97
+ text: expect.stringContaining('Global Lookback Async Works!'),
98
+ }),
99
+ ]),
100
+ }),
101
+ ]),
102
+ }));
103
+ });
80
104
  });
81
105
  //# sourceMappingURL=stateSnapshotAsyncProcessor.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stateSnapshotAsyncProcessor.test.js","sourceRoot":"","sources":["../../../../src/context/processors/stateSnapshotAsyncProcessor.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateSnapshotAsyncProcessor.test.js","sourceRoot":"","sources":["../../../../src/context/processors/stateSnapshotAsyncProcessor.test.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ import type { ContextEnvironment } from '../pipeline/environment.js';
4
4
  export interface StateSnapshotProcessorOptions extends BackstopTargetOptions {
5
5
  model?: string;
6
6
  systemInstruction?: string;
7
+ maxSummaryTurns?: number;
8
+ maxStateTokens?: number;
7
9
  }
8
10
  export declare const StateSnapshotProcessorOptionsSchema: JSONSchemaType<StateSnapshotProcessorOptions>;
9
11
  export declare function createStateSnapshotProcessor(id: string, env: ContextEnvironment, options: StateSnapshotProcessorOptions): ContextProcessor;
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { randomUUID } from 'node:crypto';
7
7
  import { NodeType } from '../graph/types.js';
8
- import { SnapshotGenerator } from '../utils/snapshotGenerator.js';
8
+ import { SnapshotGenerator, findLatestSnapshotBaseline, } from '../utils/snapshotGenerator.js';
9
9
  import { debugLogger } from '../../utils/debugLogger.js';
10
10
  export const StateSnapshotProcessorOptionsSchema = {
11
11
  type: 'object',
@@ -18,6 +18,8 @@ export const StateSnapshotProcessorOptionsSchema = {
18
18
  freeTokensTarget: { type: 'number', nullable: true },
19
19
  model: { type: 'string', nullable: true },
20
20
  systemInstruction: { type: 'string', nullable: true },
21
+ maxSummaryTurns: { type: 'number', nullable: true },
22
+ maxStateTokens: { type: 'number', nullable: true },
21
23
  },
22
24
  required: [],
23
25
  };
@@ -94,9 +96,32 @@ export function createStateSnapshotProcessor(id, env, options) {
94
96
  }
95
97
  if (nodesToSummarize.length < 2)
96
98
  return targets; // Not enough context
99
+ let previousStateJson = undefined;
100
+ let baselineIdToConsume = undefined;
101
+ // Global Lookback: Find the absolute most recent snapshot anywhere in the active context
102
+ const baseline = findLatestSnapshotBaseline(targets);
103
+ if (baseline) {
104
+ previousStateJson = baseline.text;
105
+ // If the snapshot happens to be inside our summary window, remove it so the LLM doesn't read it as raw transcript
106
+ const summaryIdx = nodesToSummarize.findIndex((n) => n.id === baseline.id);
107
+ if (summaryIdx !== -1) {
108
+ baselineIdToConsume = baseline.id;
109
+ nodesToSummarize.splice(summaryIdx, 1);
110
+ }
111
+ }
112
+ else {
113
+ debugLogger.log('[StateSnapshotProcessor] No previous snapshot found in context graph. Initializing new Master State baseline.');
114
+ }
97
115
  try {
98
- const snapshotText = await generator.synthesizeSnapshot(nodesToSummarize, options.systemInstruction);
116
+ const snapshotText = await generator.synthesizeSnapshot(nodesToSummarize, previousStateJson, {
117
+ maxSummaryTurns: options.maxSummaryTurns,
118
+ maxStateTokens: options.maxStateTokens,
119
+ });
99
120
  const newId = randomUUID();
121
+ const consumedIds = nodesToSummarize.map((n) => n.id);
122
+ if (baselineIdToConsume && !consumedIds.includes(baselineIdToConsume)) {
123
+ consumedIds.push(baselineIdToConsume);
124
+ }
100
125
  const snapshotNode = {
101
126
  id: newId,
102
127
  turnId: newId,
@@ -104,9 +129,8 @@ export function createStateSnapshotProcessor(id, env, options) {
104
129
  timestamp: nodesToSummarize[nodesToSummarize.length - 1].timestamp,
105
130
  role: 'user',
106
131
  payload: { text: snapshotText },
107
- abstractsIds: nodesToSummarize.map((n) => n.id),
132
+ abstractsIds: [...consumedIds],
108
133
  };
109
- const consumedIds = nodesToSummarize.map((n) => n.id);
110
134
  const returnedNodes = targets.filter((t) => !consumedIds.includes(t.id));
111
135
  const firstRemovedIdx = targets.findIndex((t) => consumedIds.includes(t.id));
112
136
  if (firstRemovedIdx !== -1) {
@@ -1 +1 @@
1
- {"version":3,"file":"stateSnapshotProcessor.js","sourceRoot":"","sources":["../../../../src/context/processors/stateSnapshotProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stateSnapshotProcessor.js","sourceRoot":"","sources":["../../../../src/context/processors/stateSnapshotProcessor.ts"],"names":[],"mappings":"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"}
@@ -84,9 +84,48 @@ describe('StateSnapshotProcessor', () => {
84
84
  const targets = [nodeA, nodeB, nodeC];
85
85
  const result = await processor.process(createMockProcessArgs(targets));
86
86
  // Should synthesize a new snapshot synchronously
87
- expect(env.llmClient.generateContent).toHaveBeenCalled();
87
+ expect(env.llmClient.generateJson).toHaveBeenCalled();
88
88
  expect(result.length).toBe(1); // nodeA is no longer protected, so everything is snapshotted
89
89
  expect(result[0].type).toBe(NodeType.SNAPSHOT);
90
90
  });
91
+ it('should use Global Lookback to find an existing snapshot in the graph as the baseline', async () => {
92
+ const env = createMockEnvironment();
93
+ const processor = createStateSnapshotProcessor('StateSnapshotProcessor', env, { target: 'incremental' });
94
+ // Create an old snapshot with existing JSON state
95
+ const oldStateJson = JSON.stringify({
96
+ discovered_facts: ['Global Lookback Works!'],
97
+ });
98
+ const oldSnapshot = createDummyNode('ep1', NodeType.SNAPSHOT, 10, { payload: { text: oldStateJson } }, 'old-snap');
99
+ const nodeA = createDummyNode('ep2', NodeType.USER_PROMPT, 50, {}, 'node-A');
100
+ // targets array contains the snapshot
101
+ const targets = [oldSnapshot, nodeA];
102
+ await processor.process(createMockProcessArgs(targets));
103
+ // The SnapshotGenerator should have been called with the oldStateJson as the baseline
104
+ expect(env.llmClient.generateJson).toHaveBeenCalledWith(expect.objectContaining({
105
+ contents: expect.arrayContaining([
106
+ expect.objectContaining({
107
+ parts: expect.arrayContaining([
108
+ expect.objectContaining({
109
+ text: expect.stringContaining('Global Lookback Works!'),
110
+ }),
111
+ ]),
112
+ }),
113
+ ]),
114
+ }));
115
+ });
116
+ it('should garbage collect the old baseline snapshot from the live graph when creating a new sync snapshot', async () => {
117
+ const env = createMockEnvironment();
118
+ const processor = createStateSnapshotProcessor('StateSnapshotProcessor', env, { target: 'incremental' });
119
+ const oldSnapshot = createDummyNode('ep1', NodeType.SNAPSHOT, 10, { payload: { text: '{}' } }, 'old-snap');
120
+ const nodeA = createDummyNode('ep2', NodeType.USER_PROMPT, 50, {}, 'node-A');
121
+ // The processor summarizes these 2 nodes
122
+ const result = await processor.process(createMockProcessArgs([oldSnapshot, nodeA]));
123
+ // It should have replaced BOTH the old snapshot and the new node with ONE new snapshot
124
+ expect(result.length).toBe(1);
125
+ expect(result[0].type).toBe(NodeType.SNAPSHOT);
126
+ expect(result[0].id).not.toBe('old-snap');
127
+ expect(result[0].abstractsIds).toContain('old-snap');
128
+ expect(result[0].abstractsIds).toContain('node-A');
129
+ });
91
130
  });
92
131
  //# sourceMappingURL=stateSnapshotProcessor.test.js.map