@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
@@ -14,6 +14,7 @@ export class ContextManager {
14
14
  sidecar;
15
15
  env;
16
16
  tracer;
17
+ advancedTokenCalculator;
17
18
  headerProvider;
18
19
  // The master state containing the pristine graph and current active graph.
19
20
  buffer = ContextWorkingBufferImpl.initialize([]);
@@ -21,12 +22,16 @@ export class ContextManager {
21
22
  // Internal sub-components
22
23
  orchestrator;
23
24
  historyObserver;
25
+ // Hysteresis tracking to prevent utility call churn
26
+ lastTriggeredDeficit = 0;
24
27
  // Cache for Anomaly 3 (Redundant Renders)
25
28
  lastRenderCache;
26
- constructor(sidecar, env, tracer, orchestrator, chatHistory, headerProvider) {
29
+ hasPerformedHotStart = false;
30
+ constructor(sidecar, env, tracer, orchestrator, chatHistory, advancedTokenCalculator, headerProvider) {
27
31
  this.sidecar = sidecar;
28
32
  this.env = env;
29
33
  this.tracer = tracer;
34
+ this.advancedTokenCalculator = advancedTokenCalculator;
30
35
  this.headerProvider = headerProvider;
31
36
  this.eventBus = env.eventBus;
32
37
  this.orchestrator = orchestrator;
@@ -34,17 +39,17 @@ export class ContextManager {
34
39
  this.orchestrator.setNodeProvider(() => this.buffer.nodes);
35
40
  this.historyObserver = new HistoryObserver(chatHistory, this.env.eventBus, this.tracer, this.env.graphMapper);
36
41
  this.eventBus.onPristineHistoryUpdated((event) => {
37
- const newIds = new Set(event.nodes.map((n) => n.id));
38
- const addedNodes = event.nodes.filter((n) => event.newNodes.has(n.id));
39
- // Prune any pristine nodes that were dropped from the upstream history
40
- this.buffer = this.buffer.prunePristineNodes(newIds);
41
- if (addedNodes.length > 0) {
42
- this.buffer = this.buffer.appendPristineNodes(addedNodes);
43
- }
42
+ // Sync the entire pristine history chronologically
43
+ this.buffer = this.buffer.syncPristineHistory(event.nodes);
44
44
  this.evaluateTriggers(event.newNodes);
45
45
  });
46
46
  this.eventBus.onProcessorResult((event) => {
47
47
  this.buffer = this.buffer.applyProcessorResult(event.processorId, event.targets, event.returnedNodes);
48
+ // We explicitly DO NOT call evaluateTriggers here.
49
+ // The Context Manager is a one-way assembly line. It only evaluates triggers
50
+ // when fundamentally new organic context is added via PristineHistoryUpdated.
51
+ // Re-evaluating after a processor finishes creates infinite feedback loops if
52
+ // the processor fails to reduce the token count below the threshold.
48
53
  });
49
54
  this.historyObserver.start();
50
55
  }
@@ -86,10 +91,14 @@ export class ContextManager {
86
91
  // Walk backwards finding nodes that fall out of the retained budget
87
92
  for (let i = this.buffer.nodes.length - 1; i >= 0; i--) {
88
93
  const node = this.buffer.nodes[i];
94
+ const priorTokens = rollingTokens;
89
95
  rollingTokens += this.env.tokenCalculator.calculateConcreteListTokens([
90
96
  node,
91
97
  ]);
92
- if (rollingTokens > this.sidecar.config.budget.retainedTokens) {
98
+ // Loose Boundary Policy: If this node is the one that pushes us over the retained limit,
99
+ // we KEEP it to prevent aggressive undershooting. We only age out nodes that are
100
+ // strictly *older* than the boundary node.
101
+ if (priorTokens > this.sidecar.config.budget.retainedTokens) {
93
102
  // Only age out if not protected
94
103
  if (!protectedIds.has(node.id)) {
95
104
  agedOutNodes.add(node.id);
@@ -98,9 +107,18 @@ export class ContextManager {
98
107
  }
99
108
  if (agedOutNodes.size > 0) {
100
109
  const targetDeficit = currentTokens - this.sidecar.config.budget.retainedTokens;
110
+ // If the deficit has shrunk (e.g. after a consolidation), update the baseline
111
+ // so we can track growth from this new, smaller deficit.
112
+ if (targetDeficit < this.lastTriggeredDeficit) {
113
+ this.lastTriggeredDeficit = targetDeficit;
114
+ }
101
115
  // Respect coalescing threshold for background work
102
116
  const threshold = this.sidecar.config.budget.coalescingThresholdTokens || 0;
103
- if (targetDeficit >= threshold) {
117
+ // Only trigger if deficit has grown significantly since last time
118
+ const growthSinceLast = targetDeficit - this.lastTriggeredDeficit;
119
+ if (targetDeficit >= threshold &&
120
+ (growthSinceLast >= threshold || this.lastTriggeredDeficit === 0)) {
121
+ this.lastTriggeredDeficit = targetDeficit;
104
122
  this.env.tokenCalculator.garbageCollectCache(new Set(this.buffer.nodes.map((n) => n.id)));
105
123
  this.eventBus.emitConsolidationNeeded({
106
124
  nodes: this.buffer.nodes,
@@ -109,6 +127,10 @@ export class ContextManager {
109
127
  });
110
128
  }
111
129
  }
130
+ else {
131
+ // Budget is healthy, reset hysteresis
132
+ this.lastTriggeredDeficit = 0;
133
+ }
112
134
  }
113
135
  }
114
136
  /**
@@ -172,32 +194,51 @@ export class ContextManager {
172
194
  getNodes() {
173
195
  return [...this.buffer.nodes];
174
196
  }
197
+ getEnvironment() {
198
+ return this.env;
199
+ }
175
200
  /**
176
201
  * Executes the final 'gc_backstop' pipeline if necessary, enforcing the token budget,
177
202
  * and maps the Episodic Context Graph back into a raw Gemini Content[] array for transmission.
178
203
  * This is the primary method called by the agent framework before sending a request.
179
204
  */
180
- async renderHistory(pendingRequest, activeTaskIds = new Set()) {
205
+ async renderHistory(pendingRequest, activeTaskIds = new Set(), abortSignal) {
181
206
  this.tracer.logEvent('ContextManager', 'Starting rendering of LLM context');
182
- // 1. Synchronous Pressure Barrier: Wait for background management pipelines to finish.
183
- // This ensures that the render sees the results of recent pushes (Anomaly 2).
184
- await this.orchestrator.waitForPipelines();
185
- let nodes = this.buffer.nodes;
186
- // If we have a pending request, we need to build a 'preview' graph for this render.
207
+ let previewNodes = [];
187
208
  if (pendingRequest) {
188
- const previewNodes = this.env.graphMapper.applyEvent({
209
+ previewNodes = this.env.graphMapper.applyEvent({
189
210
  type: 'PUSH',
190
211
  payload: [pendingRequest],
191
212
  });
213
+ }
214
+ // --- Hot Start Calibration ---
215
+ // If we are resuming a session with history, we don't want the adaptive token calculator
216
+ // to fly blind on its first GC pass. We do a one-time API calibration.
217
+ const hotStartPromise = (async () => {
218
+ if (!this.hasPerformedHotStart) {
219
+ this.hasPerformedHotStart = true;
220
+ if (this.buffer.nodes.length > 0) {
221
+ const nodesForHotStart = [...this.buffer.nodes, ...previewNodes];
222
+ await this.performHotStartCalibration(nodesForHotStart, abortSignal);
223
+ }
224
+ }
225
+ })();
226
+ // 1. Synchronous Pressure Barrier: Wait for background management pipelines to finish.
227
+ // We run hot start calibration in parallel to hide the network latency.
228
+ await Promise.all([this.orchestrator.waitForPipelines(), hotStartPromise]);
229
+ let nodes = this.buffer.nodes;
230
+ const previewNodeIds = new Set();
231
+ // Apply the preview nodes to the final graph
232
+ if (previewNodes.length > 0) {
233
+ for (const n of previewNodes) {
234
+ previewNodeIds.add(n.id);
235
+ }
192
236
  nodes = [...nodes, ...previewNodes];
193
237
  }
194
238
  // 2. Fetch Header and calculate tokens
195
239
  const header = this.headerProvider
196
240
  ? await this.headerProvider()
197
241
  : undefined;
198
- const headerTokens = header
199
- ? this.env.tokenCalculator.calculateContentTokens(header)
200
- : 0;
201
242
  // 3. Cache Check (Anomaly 3): If nodes haven't changed, return previous result.
202
243
  // We combine the graph hash with a hash of the header to ensure total freshness.
203
244
  const graphHash = nodes.map((n) => n.id).join('|');
@@ -209,7 +250,7 @@ export class ContextManager {
209
250
  }
210
251
  const protectionReasons = this.getProtectedNodeIds(nodes, activeTaskIds);
211
252
  // Apply final GC Backstop pressure barrier synchronously before mapping
212
- const { history: renderedHistory, didApplyManagement } = await render(nodes, this.orchestrator, this.sidecar, this.tracer, this.env, protectionReasons, headerTokens);
253
+ const { history: renderedHistory, didApplyManagement, baseUnits, } = await render(nodes, this.orchestrator, this.sidecar, this.tracer, this.env, this.advancedTokenCalculator, protectionReasons, header, previewNodeIds);
213
254
  // Structural validation in debug mode
214
255
  checkContextInvariants(this.buffer.nodes, 'RenderHistory');
215
256
  this.tracer.logEvent('ContextManager', 'Finished rendering');
@@ -221,10 +262,44 @@ export class ContextManager {
221
262
  sentinels: this.sidecar.sentinels,
222
263
  }),
223
264
  didApplyManagement,
265
+ baseUnits,
224
266
  };
225
267
  // Update cache
226
268
  this.lastRenderCache = { nodesHash: totalHash, result };
227
269
  return result;
228
270
  }
271
+ async performHotStartCalibration(nodes, abortSignal) {
272
+ try {
273
+ this.tracer.logEvent('ContextManager', 'Performing Hot Start Token Calibration');
274
+ const contents = this.env.graphMapper.fromGraph(nodes);
275
+ const header = this.headerProvider
276
+ ? await this.headerProvider()
277
+ : undefined;
278
+ const combinedHistory = header ? [header, ...contents] : contents;
279
+ const baseUnits = this.advancedTokenCalculator.getRawBaseUnits(nodes) +
280
+ (header
281
+ ? this.advancedTokenCalculator.getRawBaseUnitsForContent(header)
282
+ : 0);
283
+ // We only make the network call if we have actual contents to send,
284
+ // avoiding 400 Bad Request errors from the API.
285
+ if (combinedHistory.length > 0) {
286
+ const result = await this.env.llmClient.countTokens({
287
+ contents: combinedHistory,
288
+ abortSignal,
289
+ });
290
+ if (result.totalTokens > 0) {
291
+ this.env.eventBus.emitTokenGroundTruth({
292
+ actualTokens: result.totalTokens,
293
+ promptBaseUnits: baseUnits,
294
+ });
295
+ }
296
+ }
297
+ }
298
+ catch (error) {
299
+ // Hot start calibration is purely an optimization. If the network fails or auth is weird,
300
+ // we silently swallow and fallback to the un-calibrated 1.0 ratio heuristic.
301
+ this.tracer.logEvent('ContextManager', 'Hot Start Token Calibration Failed (Ignored)', { error });
302
+ }
303
+ }
229
304
  }
230
305
  //# sourceMappingURL=contextManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextManager.js","sourceRoot":"","sources":["../../../src/context/contextManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contextManager.js","sourceRoot":"","sources":["../../../src/context/contextManager.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,13 @@ export interface ChunkReceivedEvent {
23
23
  nodes: readonly ConcreteNode[];
24
24
  targetNodeIds: Set<string>;
25
25
  }
26
+ export interface TokenGroundTruthEvent {
27
+ actualTokens: number;
28
+ promptBaseUnits: number;
29
+ }
26
30
  export declare class ContextEventBus extends EventEmitter {
31
+ emitTokenGroundTruth(event: TokenGroundTruthEvent): void;
32
+ onTokenGroundTruth(listener: (event: TokenGroundTruthEvent) => void): void;
27
33
  emitPristineHistoryUpdated(event: PristineHistoryUpdatedEvent): void;
28
34
  onPristineHistoryUpdated(listener: (event: PristineHistoryUpdatedEvent) => void): void;
29
35
  emitChunkReceived(event: ChunkReceivedEvent): void;
@@ -5,6 +5,12 @@
5
5
  */
6
6
  import { EventEmitter } from 'node:events';
7
7
  export class ContextEventBus extends EventEmitter {
8
+ emitTokenGroundTruth(event) {
9
+ this.emit('TOKEN_GROUND_TRUTH', event);
10
+ }
11
+ onTokenGroundTruth(listener) {
12
+ this.on('TOKEN_GROUND_TRUTH', listener);
13
+ }
8
14
  emitPristineHistoryUpdated(event) {
9
15
  this.emit('PRISTINE_HISTORY_UPDATED', event);
10
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eventBus.js","sourceRoot":"","sources":["../../../src/context/eventBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAyB3C,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,0BAA0B,CAAC,KAAkC;QAC3D,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,wBAAwB,CACtB,QAAsD;QAEtD,IAAI,CAAC,EAAE,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,KAAyB;QACzC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CAAC,QAA6C;QAC3D,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,uBAAuB,CAAC,KAAgC;QACtD,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,qBAAqB,CAAC,QAAoD;QACxE,IAAI,CAAC,EAAE,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB,CAAC,KAA2B;QAC7C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB,CAAC,QAA+C;QAC/D,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"eventBus.js","sourceRoot":"","sources":["../../../src/context/eventBus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA8B3C,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC/C,oBAAoB,CAAC,KAA4B;QAC/C,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,kBAAkB,CAAC,QAAgD;QACjE,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,0BAA0B,CAAC,KAAkC;QAC3D,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,wBAAwB,CACtB,QAAsD;QAEtD,IAAI,CAAC,EAAE,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB,CAAC,KAAyB;QACzC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CAAC,QAA6C;QAC3D,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,uBAAuB,CAAC,KAAgC;QACtD,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,qBAAqB,CAAC,QAAoD;QACxE,IAAI,CAAC,EAAE,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mBAAmB,CAAC,KAA2B;QAC7C,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB,CAAC,QAA+C;QAC/D,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -9,11 +9,13 @@ import type { ContextTracer } from '../tracer.js';
9
9
  import type { ContextProfile } from '../config/profiles.js';
10
10
  import type { PipelineOrchestrator } from '../pipeline/orchestrator.js';
11
11
  import type { ContextEnvironment } from '../pipeline/environment.js';
12
+ import type { AdvancedTokenCalculator } from '../utils/contextTokenCalculator.js';
12
13
  /**
13
14
  * Maps the Episodic Context Graph back into a raw Gemini Content[] array for transmission.
14
15
  * It applies synchronous context management (GC backstop) if the budget is exceeded.
15
16
  */
16
- export declare function render(nodes: readonly ConcreteNode[], orchestrator: PipelineOrchestrator, sidecar: ContextProfile, tracer: ContextTracer, env: ContextEnvironment, protectionReasons?: Map<string, string>, headerTokens?: number): Promise<{
17
+ export declare function render(nodes: readonly ConcreteNode[], orchestrator: PipelineOrchestrator, sidecar: ContextProfile, tracer: ContextTracer, env: ContextEnvironment, advancedTokenCalculator: AdvancedTokenCalculator, protectionReasons?: Map<string, string>, header?: Content, previewNodeIds?: ReadonlySet<string>): Promise<{
17
18
  history: Content[];
18
19
  didApplyManagement: boolean;
20
+ baseUnits: number;
19
21
  }>;
@@ -3,20 +3,31 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { performCalibration } from '../utils/tokenCalibration.js';
6
7
  /**
7
8
  * Maps the Episodic Context Graph back into a raw Gemini Content[] array for transmission.
8
9
  * It applies synchronous context management (GC backstop) if the budget is exceeded.
9
10
  */
10
- export async function render(nodes, orchestrator, sidecar, tracer, env, protectionReasons = new Map(), headerTokens = 0) {
11
+ export async function render(nodes, orchestrator, sidecar, tracer, env, advancedTokenCalculator, protectionReasons = new Map(), header, previewNodeIds = new Set()) {
12
+ let headerTokens = 0;
13
+ let headerBaseUnits = 0;
14
+ if (header) {
15
+ const costs = advancedTokenCalculator.calculateContentTokensAndBaseUnits(header);
16
+ headerTokens = costs.tokens;
17
+ headerBaseUnits = costs.baseUnits;
18
+ }
11
19
  if (!sidecar.config.budget) {
12
- const contents = env.graphMapper.fromGraph(nodes);
20
+ const visibleNodes = nodes.filter((n) => !previewNodeIds.has(n.id));
21
+ const contents = env.graphMapper.fromGraph(visibleNodes);
13
22
  tracer.logEvent('Render', 'Render Context to LLM (No Budget)', {
14
23
  renderedContext: contents,
15
24
  });
16
- return { history: contents, didApplyManagement: false };
25
+ // In all cases, retrieve raw base units from the token calculator interface
26
+ const baseUnits = advancedTokenCalculator.getRawBaseUnits(nodes) + headerBaseUnits;
27
+ return { history: contents, didApplyManagement: false, baseUnits };
17
28
  }
18
29
  const maxTokens = sidecar.config.budget.maxTokens;
19
- const graphTokens = env.tokenCalculator.calculateConcreteListTokens(nodes);
30
+ const { tokens: graphTokens, baseUnits: graphBaseUnits } = advancedTokenCalculator.calculateTokensAndBaseUnits(nodes);
20
31
  const currentTokens = graphTokens + headerTokens;
21
32
  const protectedIds = new Set(protectionReasons.keys());
22
33
  tracer.logEvent('Render', 'Budget Audit', {
@@ -36,11 +47,17 @@ export async function render(nodes, orchestrator, sidecar, tracer, env, protecti
36
47
  });
37
48
  if (currentTokens <= maxTokens) {
38
49
  tracer.logEvent('Render', `View is within maxTokens (${currentTokens} <= ${maxTokens}). Returning view.`);
39
- const contents = env.graphMapper.fromGraph(nodes);
50
+ const visibleNodes = nodes.filter((n) => !previewNodeIds.has(n.id));
51
+ const contents = env.graphMapper.fromGraph(visibleNodes);
40
52
  tracer.logEvent('Render', 'Render Context for LLM', {
41
53
  renderedContext: contents,
42
54
  });
43
- return { history: contents, didApplyManagement: false };
55
+ performCalibration(env, visibleNodes, contents);
56
+ return {
57
+ history: contents,
58
+ didApplyManagement: false,
59
+ baseUnits: graphBaseUnits + headerBaseUnits,
60
+ };
44
61
  }
45
62
  const targetDelta = currentTokens - sidecar.config.budget.retainedTokens;
46
63
  tracer.logEvent('Render', `View exceeds maxTokens (${currentTokens} > ${maxTokens}). Hitting Synchronous Pressure Barrier.`, { targetDelta });
@@ -50,9 +67,11 @@ export async function render(nodes, orchestrator, sidecar, tracer, env, protecti
50
67
  // Start from newest and count backwards
51
68
  for (let i = nodes.length - 1; i >= 0; i--) {
52
69
  const node = nodes[i];
70
+ const priorTokens = rollingTokens;
53
71
  const nodeTokens = env.tokenCalculator.calculateConcreteListTokens([node]);
54
72
  rollingTokens += nodeTokens;
55
- if (rollingTokens > sidecar.config.budget.retainedTokens) {
73
+ // Loose Boundary Policy: Keep the node that crosses the boundary
74
+ if (priorTokens > sidecar.config.budget.retainedTokens) {
56
75
  agedOutNodes.add(node.id);
57
76
  }
58
77
  }
@@ -65,11 +84,16 @@ export async function render(nodes, orchestrator, sidecar, tracer, env, protecti
65
84
  skipList.add(id);
66
85
  }
67
86
  }
68
- const visibleNodes = processedNodes.filter((n) => !skipList.has(n.id));
87
+ const visibleNodes = processedNodes.filter((n) => !skipList.has(n.id) && !previewNodeIds.has(n.id));
69
88
  const contents = env.graphMapper.fromGraph(visibleNodes);
70
89
  tracer.logEvent('Render', 'Render Sanitized Context for LLM', {
71
90
  renderedContextSanitized: contents,
72
91
  });
73
- return { history: contents, didApplyManagement: true };
92
+ performCalibration(env, visibleNodes, contents);
93
+ return {
94
+ history: contents,
95
+ didApplyManagement: true,
96
+ baseUnits: advancedTokenCalculator.getRawBaseUnits(visibleNodes) + headerBaseUnits,
97
+ };
74
98
  }
75
99
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/context/graph/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/context/graph/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,203 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi } from 'vitest';
7
+ import { render } from './render.js';
8
+ import { NodeType } from './types.js';
9
+ describe('render', () => {
10
+ it('should filter out previewNodeIds', async () => {
11
+ const mockNodes = [
12
+ {
13
+ id: '1',
14
+ type: NodeType.USER_PROMPT,
15
+ payload: {},
16
+ },
17
+ {
18
+ id: '2',
19
+ type: NodeType.AGENT_THOUGHT,
20
+ payload: {},
21
+ },
22
+ {
23
+ id: 'preview-1',
24
+ type: NodeType.USER_PROMPT,
25
+ payload: {},
26
+ },
27
+ ];
28
+ const previewNodeIds = new Set(['preview-1']);
29
+ const orchestrator = {};
30
+ const sidecar = { config: {} }; // No budget
31
+ const mockAdvancedTokenCalculator = {
32
+ calculateTokensAndBaseUnits: vi.fn().mockReturnValue({
33
+ tokens: 100,
34
+ baseUnits: 100,
35
+ }),
36
+ getRawBaseUnits: vi.fn().mockReturnValue(100),
37
+ getRawBaseUnitsForContent: vi.fn().mockReturnValue(0),
38
+ };
39
+ const env = {
40
+ tokenCalculator: {
41
+ calculateConcreteListTokens: vi.fn().mockReturnValue(100),
42
+ calculateTokenBreakdown: vi.fn().mockReturnValue({}),
43
+ },
44
+ graphMapper: {
45
+ fromGraph: vi.fn((nodes) => nodes.map((n) => ({ text: n.id }))),
46
+ },
47
+ };
48
+ const tracer = {
49
+ logEvent: vi.fn(),
50
+ };
51
+ const result = await render(mockNodes, orchestrator, sidecar, tracer, env, mockAdvancedTokenCalculator, new Map(), undefined, previewNodeIds);
52
+ expect(result.history).toEqual([{ text: '1' }, { text: '2' }]);
53
+ expect(result.baseUnits).toBe(100);
54
+ });
55
+ it('simulates the boundary knapsack problem (loose boundary policy)', async () => {
56
+ // 10k, 20k, 40k, 5k
57
+ const mockNodes = [
58
+ {
59
+ id: 'D',
60
+ type: NodeType.USER_PROMPT,
61
+ payload: {},
62
+ },
63
+ {
64
+ id: 'C',
65
+ type: NodeType.AGENT_THOUGHT,
66
+ payload: {},
67
+ },
68
+ {
69
+ id: 'B',
70
+ type: NodeType.USER_PROMPT,
71
+ payload: {},
72
+ },
73
+ {
74
+ id: 'A',
75
+ type: NodeType.AGENT_THOUGHT,
76
+ payload: {},
77
+ },
78
+ ];
79
+ const tokenMap = {
80
+ D: 5000,
81
+ C: 40000,
82
+ B: 20000,
83
+ A: 10000,
84
+ };
85
+ const orchestrator = {
86
+ executeTriggerSync: vi.fn(async (trigger, nodes, agedOutNodes) => nodes.filter((n) => !agedOutNodes.has(n.id))),
87
+ };
88
+ const sidecar = {
89
+ config: {
90
+ budget: { maxTokens: 150000, retainedTokens: 65000 },
91
+ },
92
+ };
93
+ const currentTokens = 160000;
94
+ const mockAdvancedTokenCalculator = {
95
+ calculateTokensAndBaseUnits: vi.fn((nodes) => {
96
+ const tokens = nodes.length === 1 ? tokenMap[nodes[0].id] : currentTokens;
97
+ return { tokens, baseUnits: tokens };
98
+ }),
99
+ getRawBaseUnits: vi.fn((nodes) => {
100
+ if (nodes.length === 1)
101
+ return tokenMap[nodes[0].id];
102
+ return currentTokens;
103
+ }),
104
+ };
105
+ const env = {
106
+ llmClient: {
107
+ countTokens: vi.fn().mockResolvedValue({ totalTokens: 1000 }),
108
+ },
109
+ tokenCalculator: {
110
+ calculateConcreteListTokens: vi.fn((nodes) => {
111
+ if (nodes.length === 1)
112
+ return tokenMap[nodes[0].id];
113
+ return currentTokens;
114
+ }),
115
+ calculateTokenBreakdown: vi.fn(() => ({})),
116
+ },
117
+ graphMapper: {
118
+ fromGraph: vi.fn((nodes) => nodes.map((n) => ({ text: n.id }))),
119
+ },
120
+ };
121
+ const tracer = {
122
+ logEvent: vi.fn(),
123
+ };
124
+ const result = await render(mockNodes, orchestrator, sidecar, tracer, env, mockAdvancedTokenCalculator, new Map(), undefined, new Set());
125
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
+ const surviving = result.history.map((c) => c.text);
127
+ // Loose Boundary: A (10k), B (20k), C (40k). Total = 70k.
128
+ // Adding C pushes rolling total (70k) above retainedTokens (65k).
129
+ // Under loose policy, C survives. D is strictly older and drops.
130
+ expect(surviving).toEqual(['C', 'B', 'A']); // D is dropped
131
+ expect(result.baseUnits).toBe(160000);
132
+ });
133
+ it('drops nodes that are STRICTLY older than the boundary node', async () => {
134
+ const mockNodes = [
135
+ {
136
+ id: 'A',
137
+ type: NodeType.USER_PROMPT,
138
+ payload: {},
139
+ },
140
+ {
141
+ id: 'B',
142
+ type: NodeType.AGENT_THOUGHT,
143
+ payload: {},
144
+ },
145
+ {
146
+ id: 'C',
147
+ type: NodeType.USER_PROMPT,
148
+ payload: {},
149
+ },
150
+ ];
151
+ const tokenMap = {
152
+ C: 40000,
153
+ B: 40000,
154
+ A: 10000,
155
+ };
156
+ const orchestrator = {
157
+ executeTriggerSync: vi.fn(async (trigger, nodes, agedOutNodes) => nodes.filter((n) => !agedOutNodes.has(n.id))),
158
+ };
159
+ const sidecar = {
160
+ config: {
161
+ budget: { maxTokens: 150000, retainedTokens: 65000 },
162
+ },
163
+ };
164
+ const currentTokens = 160000;
165
+ const mockAdvancedTokenCalculator = {
166
+ calculateTokensAndBaseUnits: vi.fn((nodes) => {
167
+ const tokens = nodes.length === 1 ? tokenMap[nodes[0].id] : currentTokens;
168
+ return { tokens, baseUnits: tokens };
169
+ }),
170
+ getRawBaseUnits: vi.fn((nodes) => {
171
+ if (nodes.length === 1)
172
+ return tokenMap[nodes[0].id];
173
+ return currentTokens;
174
+ }),
175
+ };
176
+ const env = {
177
+ llmClient: {
178
+ countTokens: vi.fn().mockResolvedValue({ totalTokens: 1000 }),
179
+ },
180
+ tokenCalculator: {
181
+ calculateConcreteListTokens: vi.fn((nodes) => {
182
+ if (nodes.length === 1)
183
+ return tokenMap[nodes[0].id];
184
+ return currentTokens;
185
+ }),
186
+ calculateTokenBreakdown: vi.fn(() => ({})),
187
+ },
188
+ graphMapper: {
189
+ fromGraph: vi.fn((nodes) => nodes.map((n) => ({ text: n.id }))),
190
+ },
191
+ };
192
+ const tracer = {
193
+ logEvent: vi.fn(),
194
+ };
195
+ const result = await render(mockNodes, orchestrator, sidecar, tracer, env, mockAdvancedTokenCalculator, new Map(), undefined, new Set());
196
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
197
+ const surviving = result.history.map((c) => c.text);
198
+ // C(40k), B(40k). Adding B pushes total to 80k. B is the boundary node and survives. A drops.
199
+ expect(surviving).toEqual(['B', 'C']); // A is dropped
200
+ expect(result.baseUnits).toBe(160000);
201
+ });
202
+ });
203
+ //# sourceMappingURL=render.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.test.js","sourceRoot":"","sources":["../../../../src/context/graph/render.test.ts"],"names":[],"mappings":"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"}