@google/gemini-cli-core 0.36.0-preview.8 → 0.37.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 (472) hide show
  1. package/dist/docs/CONTRIBUTING.md +10 -7
  2. package/dist/docs/assets/theme-tokyonight-dark.png +0 -0
  3. package/dist/docs/changelogs/index.md +24 -0
  4. package/dist/docs/changelogs/latest.md +366 -459
  5. package/dist/docs/changelogs/preview.md +362 -356
  6. package/dist/docs/cli/acp-mode.md +126 -0
  7. package/dist/docs/cli/cli-reference.md +1 -1
  8. package/dist/docs/cli/notifications.md +5 -5
  9. package/dist/docs/cli/plan-mode.md +12 -8
  10. package/dist/docs/cli/sandbox.md +1 -1
  11. package/dist/docs/cli/settings.md +14 -13
  12. package/dist/docs/cli/themes.md +5 -0
  13. package/dist/docs/core/index.md +2 -2
  14. package/dist/docs/core/subagents.md +134 -23
  15. package/dist/docs/get-started/gemini-3.md +1 -1
  16. package/dist/docs/get-started/index.md +127 -1
  17. package/dist/docs/ide-integration/index.md +99 -24
  18. package/dist/docs/index.md +0 -2
  19. package/dist/docs/redirects.json +1 -0
  20. package/dist/docs/reference/commands.md +1 -3
  21. package/dist/docs/reference/configuration.md +182 -91
  22. package/dist/docs/reference/keyboard-shortcuts.md +14 -6
  23. package/dist/docs/reference/policy-engine.md +16 -30
  24. package/dist/docs/reference/tools.md +56 -23
  25. package/dist/docs/resources/quota-and-pricing.md +23 -9
  26. package/dist/docs/sidebar.json +11 -4
  27. package/dist/docs/tools/planning.md +6 -4
  28. package/dist/src/agents/agentLoader.d.ts +12 -12
  29. package/dist/src/agents/agentLoader.js +1 -0
  30. package/dist/src/agents/agentLoader.js.map +1 -1
  31. package/dist/src/agents/browser/automationOverlay.js +2 -10
  32. package/dist/src/agents/browser/automationOverlay.js.map +1 -1
  33. package/dist/src/agents/browser/browserAgentDefinition.js +10 -3
  34. package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -1
  35. package/dist/src/agents/browser/browserAgentFactory.d.ts +4 -4
  36. package/dist/src/agents/browser/browserAgentFactory.js +15 -29
  37. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
  38. package/dist/src/agents/browser/browserAgentFactory.test.js +41 -24
  39. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
  40. package/dist/src/agents/browser/browserAgentInvocation.d.ts +1 -0
  41. package/dist/src/agents/browser/browserAgentInvocation.js +60 -27
  42. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  43. package/dist/src/agents/browser/browserAgentInvocation.test.js +59 -5
  44. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
  45. package/dist/src/agents/browser/browserManager.d.ts +51 -8
  46. package/dist/src/agents/browser/browserManager.js +242 -70
  47. package/dist/src/agents/browser/browserManager.js.map +1 -1
  48. package/dist/src/agents/browser/browserManager.test.js +384 -17
  49. package/dist/src/agents/browser/browserManager.test.js.map +1 -1
  50. package/dist/src/agents/browser/inputBlocker.d.ts +4 -4
  51. package/dist/src/agents/browser/inputBlocker.js +8 -18
  52. package/dist/src/agents/browser/inputBlocker.js.map +1 -1
  53. package/dist/src/agents/browser/inputBlocker.test.js +31 -3
  54. package/dist/src/agents/browser/inputBlocker.test.js.map +1 -1
  55. package/dist/src/agents/browser/mcpToolWrapper.d.ts +1 -1
  56. package/dist/src/agents/browser/mcpToolWrapper.js +9 -6
  57. package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -1
  58. package/dist/src/agents/browser/mcpToolWrapper.test.js +2 -2
  59. package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -1
  60. package/dist/src/agents/browser/snapshotSuperseder.d.ts +31 -0
  61. package/dist/src/agents/browser/snapshotSuperseder.js +101 -0
  62. package/dist/src/agents/browser/snapshotSuperseder.js.map +1 -0
  63. package/dist/src/agents/browser/snapshotSuperseder.test.js +158 -0
  64. package/dist/src/agents/browser/snapshotSuperseder.test.js.map +1 -0
  65. package/dist/src/agents/local-executor.d.ts +4 -0
  66. package/dist/src/agents/local-executor.js +46 -19
  67. package/dist/src/agents/local-executor.js.map +1 -1
  68. package/dist/src/agents/local-executor.test.js +118 -18
  69. package/dist/src/agents/local-executor.test.js.map +1 -1
  70. package/dist/src/agents/local-invocation.d.ts +1 -0
  71. package/dist/src/agents/local-invocation.js +19 -9
  72. package/dist/src/agents/local-invocation.js.map +1 -1
  73. package/dist/src/agents/local-invocation.test.js +24 -0
  74. package/dist/src/agents/local-invocation.test.js.map +1 -1
  75. package/dist/src/agents/registry.js +16 -1
  76. package/dist/src/agents/registry.js.map +1 -1
  77. package/dist/src/agents/registry.test.js +67 -0
  78. package/dist/src/agents/registry.test.js.map +1 -1
  79. package/dist/src/agents/types.d.ts +9 -0
  80. package/dist/src/agents/types.js.map +1 -1
  81. package/dist/src/code_assist/oauth2.js +8 -3
  82. package/dist/src/code_assist/oauth2.js.map +1 -1
  83. package/dist/src/code_assist/oauth2.test.js +57 -0
  84. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  85. package/dist/src/code_assist/setup.js +5 -2
  86. package/dist/src/code_assist/setup.js.map +1 -1
  87. package/dist/src/code_assist/setup.test.js +27 -1
  88. package/dist/src/code_assist/setup.test.js.map +1 -1
  89. package/dist/src/code_assist/types.d.ts +80 -80
  90. package/dist/src/config/agent-loop-context.d.ts +2 -0
  91. package/dist/src/config/config.d.ts +81 -16
  92. package/dist/src/config/config.js +146 -50
  93. package/dist/src/config/config.js.map +1 -1
  94. package/dist/src/config/config.test.js +89 -2
  95. package/dist/src/config/config.test.js.map +1 -1
  96. package/dist/src/config/defaultModelConfigs.js +9 -0
  97. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  98. package/dist/src/config/memory.d.ts +1 -0
  99. package/dist/src/config/memory.js +6 -0
  100. package/dist/src/config/memory.js.map +1 -1
  101. package/dist/src/config/storage.d.ts +1 -0
  102. package/dist/src/config/storage.js +4 -0
  103. package/dist/src/config/storage.js.map +1 -1
  104. package/dist/src/config/storage.test.js +5 -0
  105. package/dist/src/config/storage.test.js.map +1 -1
  106. package/dist/src/config/topicState.d.ts +21 -0
  107. package/dist/src/config/topicState.js +41 -0
  108. package/dist/src/config/topicState.js.map +1 -0
  109. package/dist/src/confirmation-bus/types.d.ts +9 -2
  110. package/dist/src/confirmation-bus/types.js +1 -0
  111. package/dist/src/confirmation-bus/types.js.map +1 -1
  112. package/dist/src/context/agentHistoryProvider.d.ts +45 -0
  113. package/dist/src/context/agentHistoryProvider.js +298 -0
  114. package/dist/src/context/agentHistoryProvider.js.map +1 -0
  115. package/dist/src/context/agentHistoryProvider.test.d.ts +6 -0
  116. package/dist/src/context/agentHistoryProvider.test.js +394 -0
  117. package/dist/src/context/agentHistoryProvider.test.js.map +1 -0
  118. package/dist/src/context/chatCompressionService.js.map +1 -0
  119. package/dist/src/context/chatCompressionService.test.js.map +1 -0
  120. package/dist/src/{services → context}/contextManager.d.ts +2 -0
  121. package/dist/src/{services → context}/contextManager.js +18 -9
  122. package/dist/src/context/contextManager.js.map +1 -0
  123. package/dist/src/{services → context}/contextManager.test.js +21 -6
  124. package/dist/src/context/contextManager.test.js.map +1 -0
  125. package/dist/src/context/toolDistillationService.d.ts +38 -0
  126. package/dist/src/context/toolDistillationService.js +170 -0
  127. package/dist/src/context/toolDistillationService.js.map +1 -0
  128. package/dist/src/context/toolDistillationService.test.d.ts +6 -0
  129. package/dist/src/context/toolDistillationService.test.js +83 -0
  130. package/dist/src/context/toolDistillationService.test.js.map +1 -0
  131. package/dist/src/{services → context}/toolOutputMaskingService.d.ts +2 -2
  132. package/dist/src/{services → context}/toolOutputMaskingService.js +7 -7
  133. package/dist/src/context/toolOutputMaskingService.js.map +1 -0
  134. package/dist/src/context/toolOutputMaskingService.test.d.ts +6 -0
  135. package/dist/src/{services → context}/toolOutputMaskingService.test.js +4 -5
  136. package/dist/src/context/toolOutputMaskingService.test.js.map +1 -0
  137. package/dist/src/context/truncation.d.ts +26 -0
  138. package/dist/src/context/truncation.js +102 -0
  139. package/dist/src/context/truncation.js.map +1 -0
  140. package/dist/src/core/client.d.ts +3 -1
  141. package/dist/src/core/client.js +23 -13
  142. package/dist/src/core/client.js.map +1 -1
  143. package/dist/src/core/client.test.js +29 -34
  144. package/dist/src/core/client.test.js.map +1 -1
  145. package/dist/src/core/contentGenerator.d.ts +0 -1
  146. package/dist/src/core/contentGenerator.js +2 -28
  147. package/dist/src/core/contentGenerator.js.map +1 -1
  148. package/dist/src/core/contentGenerator.test.js +1 -101
  149. package/dist/src/core/contentGenerator.test.js.map +1 -1
  150. package/dist/src/core/geminiChat.js +4 -5
  151. package/dist/src/core/geminiChat.js.map +1 -1
  152. package/dist/src/core/geminiChat.test.js +71 -18
  153. package/dist/src/core/geminiChat.test.js.map +1 -1
  154. package/dist/src/core/prompts-substitution.test.js +5 -0
  155. package/dist/src/core/prompts-substitution.test.js.map +1 -1
  156. package/dist/src/core/prompts.test.js +3 -0
  157. package/dist/src/core/prompts.test.js.map +1 -1
  158. package/dist/src/generated/git-commit.d.ts +2 -2
  159. package/dist/src/generated/git-commit.js +2 -2
  160. package/dist/src/index.d.ts +7 -3
  161. package/dist/src/index.js +9 -5
  162. package/dist/src/index.js.map +1 -1
  163. package/dist/src/policy/config.d.ts +1 -1
  164. package/dist/src/policy/config.js +5 -2
  165. package/dist/src/policy/config.js.map +1 -1
  166. package/dist/src/policy/policies/discovered.toml +7 -0
  167. package/dist/src/policy/policies/non-interactive.toml +7 -0
  168. package/dist/src/policy/policies/plan.toml +25 -0
  169. package/dist/src/policy/policies/read-only.toml +6 -0
  170. package/dist/src/policy/policies/sandbox-default.toml +3 -2
  171. package/dist/src/policy/policies/write.toml +21 -0
  172. package/dist/src/policy/policies/yolo.toml +1 -1
  173. package/dist/src/policy/policy-engine.d.ts +2 -4
  174. package/dist/src/policy/policy-engine.js +24 -37
  175. package/dist/src/policy/policy-engine.js.map +1 -1
  176. package/dist/src/policy/policy-engine.test.js +107 -29
  177. package/dist/src/policy/policy-engine.test.js.map +1 -1
  178. package/dist/src/policy/topic-policy.test.d.ts +6 -0
  179. package/dist/src/policy/topic-policy.test.js +48 -0
  180. package/dist/src/policy/topic-policy.test.js.map +1 -0
  181. package/dist/src/policy/types.d.ts +3 -6
  182. package/dist/src/policy/types.js.map +1 -1
  183. package/dist/src/prompts/promptProvider.js +20 -4
  184. package/dist/src/prompts/promptProvider.js.map +1 -1
  185. package/dist/src/prompts/promptProvider.test.js +84 -1
  186. package/dist/src/prompts/promptProvider.test.js.map +1 -1
  187. package/dist/src/prompts/snippets-memory-manager.test.js +1 -1
  188. package/dist/src/prompts/snippets-memory-manager.test.js.map +1 -1
  189. package/dist/src/prompts/snippets.d.ts +3 -4
  190. package/dist/src/prompts/snippets.js +33 -51
  191. package/dist/src/prompts/snippets.js.map +1 -1
  192. package/dist/src/prompts/snippets.legacy.d.ts +6 -4
  193. package/dist/src/prompts/snippets.legacy.js +32 -7
  194. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  195. package/dist/src/sandbox/linux/LinuxSandboxManager.d.ts +11 -1
  196. package/dist/src/sandbox/linux/LinuxSandboxManager.js +261 -27
  197. package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
  198. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js +430 -125
  199. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js.map +1 -1
  200. package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +7 -22
  201. package/dist/src/sandbox/macos/MacOsSandboxManager.js +58 -57
  202. package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
  203. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +148 -103
  204. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -1
  205. package/dist/src/sandbox/macos/baseProfile.d.ts +1 -1
  206. package/dist/src/sandbox/macos/baseProfile.js +0 -6
  207. package/dist/src/sandbox/macos/baseProfile.js.map +1 -1
  208. package/dist/src/sandbox/macos/seatbeltArgsBuilder.d.ts +10 -10
  209. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +80 -92
  210. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
  211. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +135 -99
  212. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -1
  213. package/dist/src/sandbox/{macos → utils}/commandSafety.d.ts +11 -0
  214. package/dist/src/sandbox/{macos → utils}/commandSafety.js +47 -14
  215. package/dist/src/sandbox/utils/commandSafety.js.map +1 -0
  216. package/dist/src/sandbox/utils/commandUtils.d.ts +9 -0
  217. package/dist/src/sandbox/utils/commandUtils.js +57 -0
  218. package/dist/src/sandbox/utils/commandUtils.js.map +1 -0
  219. package/dist/src/sandbox/utils/fsUtils.d.ts +11 -0
  220. package/dist/src/sandbox/utils/fsUtils.js +82 -0
  221. package/dist/src/sandbox/utils/fsUtils.js.map +1 -0
  222. package/dist/src/sandbox/utils/sandboxDenialUtils.d.ts +12 -0
  223. package/dist/src/sandbox/utils/sandboxDenialUtils.js +68 -0
  224. package/dist/src/sandbox/utils/sandboxDenialUtils.js.map +1 -0
  225. package/dist/src/sandbox/utils/sandboxDenialUtils.test.d.ts +6 -0
  226. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js +37 -0
  227. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js.map +1 -0
  228. package/dist/src/sandbox/utils/sandboxReadWriteUtils.d.ts +5 -0
  229. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js +60 -0
  230. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js.map +1 -0
  231. package/dist/src/sandbox/windows/GeminiSandbox.cs +257 -216
  232. package/dist/src/sandbox/windows/WindowsSandboxManager.d.ts +12 -2
  233. package/dist/src/sandbox/windows/WindowsSandboxManager.js +250 -38
  234. package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
  235. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js +326 -9
  236. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js.map +1 -1
  237. package/dist/src/sandbox/windows/commandSafety.d.ts +19 -0
  238. package/dist/src/sandbox/windows/commandSafety.js +128 -0
  239. package/dist/src/sandbox/windows/commandSafety.js.map +1 -0
  240. package/dist/src/sandbox/windows/commandSafety.test.d.ts +6 -0
  241. package/dist/src/sandbox/windows/commandSafety.test.js +42 -0
  242. package/dist/src/sandbox/windows/commandSafety.test.js.map +1 -0
  243. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.d.ts +12 -0
  244. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js +68 -0
  245. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js.map +1 -0
  246. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.d.ts +6 -0
  247. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js +68 -0
  248. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js.map +1 -0
  249. package/dist/src/scheduler/scheduler.js +12 -2
  250. package/dist/src/scheduler/scheduler.js.map +1 -1
  251. package/dist/src/scheduler/scheduler.test.js +52 -0
  252. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  253. package/dist/src/scheduler/scheduler_hooks.test.js +1 -0
  254. package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
  255. package/dist/src/scheduler/state-manager.js +1 -1
  256. package/dist/src/scheduler/state-manager.js.map +1 -1
  257. package/dist/src/scheduler/state-manager.test.js +10 -0
  258. package/dist/src/scheduler/state-manager.test.js.map +1 -1
  259. package/dist/src/scheduler/tool-executor.js +7 -2
  260. package/dist/src/scheduler/tool-executor.js.map +1 -1
  261. package/dist/src/scheduler/tool-executor.test.js +38 -0
  262. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  263. package/dist/src/scheduler/types.d.ts +4 -2
  264. package/dist/src/services/chatRecordingService.d.ts +1 -13
  265. package/dist/src/services/chatRecordingService.js +45 -46
  266. package/dist/src/services/chatRecordingService.js.map +1 -1
  267. package/dist/src/services/chatRecordingService.test.js +79 -10
  268. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  269. package/dist/src/services/executionLifecycleService.d.ts +43 -6
  270. package/dist/src/services/executionLifecycleService.js +49 -12
  271. package/dist/src/services/executionLifecycleService.js.map +1 -1
  272. package/dist/src/services/executionLifecycleService.test.js +157 -3
  273. package/dist/src/services/executionLifecycleService.test.js.map +1 -1
  274. package/dist/src/services/fileDiscoveryService.d.ts +17 -2
  275. package/dist/src/services/fileDiscoveryService.js +84 -20
  276. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  277. package/dist/src/services/fileDiscoveryService.test.js +67 -1
  278. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  279. package/dist/src/services/modelConfigService.d.ts +11 -0
  280. package/dist/src/services/modelConfigService.js +67 -0
  281. package/dist/src/services/modelConfigService.js.map +1 -1
  282. package/dist/src/services/modelConfigService.test.js +30 -0
  283. package/dist/src/services/modelConfigService.test.js.map +1 -1
  284. package/dist/src/services/sandboxManager.d.ts +90 -8
  285. package/dist/src/services/sandboxManager.integration.test.js +438 -0
  286. package/dist/src/services/sandboxManager.integration.test.js.map +1 -0
  287. package/dist/src/services/sandboxManager.js +156 -13
  288. package/dist/src/services/sandboxManager.js.map +1 -1
  289. package/dist/src/services/sandboxManager.test.js +373 -117
  290. package/dist/src/services/sandboxManager.test.js.map +1 -1
  291. package/dist/src/services/sandboxManagerFactory.d.ts +2 -3
  292. package/dist/src/services/sandboxManagerFactory.js +10 -17
  293. package/dist/src/services/sandboxManagerFactory.js.map +1 -1
  294. package/dist/src/services/sandboxedFileSystemService.d.ts +1 -0
  295. package/dist/src/services/sandboxedFileSystemService.js +32 -3
  296. package/dist/src/services/sandboxedFileSystemService.js.map +1 -1
  297. package/dist/src/services/sandboxedFileSystemService.test.js +83 -12
  298. package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -1
  299. package/dist/src/services/shellExecutionService.d.ts +2 -0
  300. package/dist/src/services/shellExecutionService.js +45 -16
  301. package/dist/src/services/shellExecutionService.js.map +1 -1
  302. package/dist/src/services/shellExecutionService.test.js +5 -4
  303. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  304. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +4 -0
  305. package/dist/src/services/test-data/resolved-aliases.golden.json +4 -0
  306. package/dist/src/services/types.d.ts +14 -0
  307. package/dist/src/services/types.js +7 -0
  308. package/dist/src/services/types.js.map +1 -0
  309. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +6 -0
  310. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  311. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +5 -1
  312. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  313. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -1
  314. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +3 -1
  315. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  316. package/dist/src/telemetry/loggers.js +1 -1
  317. package/dist/src/telemetry/loggers.js.map +1 -1
  318. package/dist/src/telemetry/loggers.test.js +8 -3
  319. package/dist/src/telemetry/loggers.test.js.map +1 -1
  320. package/dist/src/telemetry/metrics.d.ts +10 -1
  321. package/dist/src/telemetry/metrics.js +19 -4
  322. package/dist/src/telemetry/metrics.js.map +1 -1
  323. package/dist/src/telemetry/metrics.test.js +44 -0
  324. package/dist/src/telemetry/metrics.test.js.map +1 -1
  325. package/dist/src/telemetry/types.d.ts +3 -3
  326. package/dist/src/telemetry/types.js +9 -4
  327. package/dist/src/telemetry/types.js.map +1 -1
  328. package/dist/src/test-utils/mock-message-bus.d.ts +1 -1
  329. package/dist/src/test-utils/mock-message-bus.js +1 -1
  330. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  331. package/dist/src/tools/definitions/base-declarations.d.ts +6 -0
  332. package/dist/src/tools/definitions/base-declarations.js +7 -0
  333. package/dist/src/tools/definitions/base-declarations.js.map +1 -1
  334. package/dist/src/tools/definitions/coreTools.d.ts +2 -1
  335. package/dist/src/tools/definitions/coreTools.js +9 -3
  336. package/dist/src/tools/definitions/coreTools.js.map +1 -1
  337. package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +4 -0
  338. package/dist/src/tools/definitions/dynamic-declaration-helpers.js +29 -2
  339. package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
  340. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +11 -6
  341. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  342. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +10 -4
  343. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  344. package/dist/src/tools/definitions/trackerTools.js +3 -3
  345. package/dist/src/tools/definitions/trackerTools.js.map +1 -1
  346. package/dist/src/tools/definitions/types.d.ts +1 -0
  347. package/dist/src/tools/enter-plan-mode.js +15 -0
  348. package/dist/src/tools/enter-plan-mode.js.map +1 -1
  349. package/dist/src/tools/enter-plan-mode.test.js +25 -0
  350. package/dist/src/tools/enter-plan-mode.test.js.map +1 -1
  351. package/dist/src/tools/grep-utils.d.ts +2 -1
  352. package/dist/src/tools/grep-utils.js +22 -3
  353. package/dist/src/tools/grep-utils.js.map +1 -1
  354. package/dist/src/tools/grep.js +16 -3
  355. package/dist/src/tools/grep.js.map +1 -1
  356. package/dist/src/tools/grep.test.js +34 -6
  357. package/dist/src/tools/grep.test.js.map +1 -1
  358. package/dist/src/tools/ls.js +6 -4
  359. package/dist/src/tools/ls.js.map +1 -1
  360. package/dist/src/tools/ls.test.js +22 -7
  361. package/dist/src/tools/ls.test.js.map +1 -1
  362. package/dist/src/tools/mcp-client-manager.js +6 -3
  363. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  364. package/dist/src/tools/mcp-client-manager.test.js +35 -0
  365. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  366. package/dist/src/tools/memoryTool.d.ts +9 -2
  367. package/dist/src/tools/memoryTool.js +39 -15
  368. package/dist/src/tools/memoryTool.js.map +1 -1
  369. package/dist/src/tools/memoryTool.test.js +61 -2
  370. package/dist/src/tools/memoryTool.test.js.map +1 -1
  371. package/dist/src/tools/read-many-files.js +12 -4
  372. package/dist/src/tools/read-many-files.js.map +1 -1
  373. package/dist/src/tools/read-many-files.test.js +17 -17
  374. package/dist/src/tools/read-many-files.test.js.map +1 -1
  375. package/dist/src/tools/ripGrep.js +14 -1
  376. package/dist/src/tools/ripGrep.js.map +1 -1
  377. package/dist/src/tools/ripGrep.test.js +9 -9
  378. package/dist/src/tools/ripGrep.test.js.map +1 -1
  379. package/dist/src/tools/shell.d.ts +10 -0
  380. package/dist/src/tools/shell.js +97 -124
  381. package/dist/src/tools/shell.js.map +1 -1
  382. package/dist/src/tools/shell.test.js +22 -3
  383. package/dist/src/tools/shell.test.js.map +1 -1
  384. package/dist/src/tools/tool-names.d.ts +4 -4
  385. package/dist/src/tools/tool-names.js +5 -3
  386. package/dist/src/tools/tool-names.js.map +1 -1
  387. package/dist/src/tools/tool-registry.js +11 -1
  388. package/dist/src/tools/tool-registry.js.map +1 -1
  389. package/dist/src/tools/tool-registry.test.js +43 -1
  390. package/dist/src/tools/tool-registry.test.js.map +1 -1
  391. package/dist/src/tools/tools.d.ts +12 -1
  392. package/dist/src/tools/tools.js +15 -0
  393. package/dist/src/tools/tools.js.map +1 -1
  394. package/dist/src/tools/tools.test.js +42 -1
  395. package/dist/src/tools/tools.test.js.map +1 -1
  396. package/dist/src/tools/topicTool.d.ts +29 -0
  397. package/dist/src/tools/topicTool.js +72 -0
  398. package/dist/src/tools/topicTool.js.map +1 -0
  399. package/dist/src/tools/topicTool.test.d.ts +6 -0
  400. package/dist/src/tools/topicTool.test.js +105 -0
  401. package/dist/src/tools/topicTool.test.js.map +1 -0
  402. package/dist/src/tools/web-fetch.js +38 -20
  403. package/dist/src/tools/web-fetch.js.map +1 -1
  404. package/dist/src/tools/web-fetch.test.js +28 -0
  405. package/dist/src/tools/web-fetch.test.js.map +1 -1
  406. package/dist/src/utils/checkpointUtils.d.ts +4 -4
  407. package/dist/src/utils/errors.d.ts +3 -0
  408. package/dist/src/utils/errors.js +28 -6
  409. package/dist/src/utils/errors.js.map +1 -1
  410. package/dist/src/utils/errors.test.js +23 -0
  411. package/dist/src/utils/errors.test.js.map +1 -1
  412. package/dist/src/utils/getFolderStructure.js +1 -1
  413. package/dist/src/utils/getFolderStructure.js.map +1 -1
  414. package/dist/src/utils/gitIgnoreParser.d.ts +2 -2
  415. package/dist/src/utils/gitIgnoreParser.js +28 -50
  416. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  417. package/dist/src/utils/gitIgnoreParser.test.js +51 -185
  418. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  419. package/dist/src/utils/ignoreFileParser.d.ts +2 -2
  420. package/dist/src/utils/ignoreFileParser.js +6 -17
  421. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  422. package/dist/src/utils/ignoreFileParser.test.js +40 -132
  423. package/dist/src/utils/ignoreFileParser.test.js.map +1 -1
  424. package/dist/src/utils/ignorePathUtils.d.ts +11 -0
  425. package/dist/src/utils/ignorePathUtils.js +39 -0
  426. package/dist/src/utils/ignorePathUtils.js.map +1 -0
  427. package/dist/src/utils/ignorePathUtils.test.d.ts +6 -0
  428. package/dist/src/utils/ignorePathUtils.test.js +70 -0
  429. package/dist/src/utils/ignorePathUtils.test.js.map +1 -0
  430. package/dist/src/utils/memoryDiscovery.d.ts +6 -4
  431. package/dist/src/utils/memoryDiscovery.js +66 -41
  432. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  433. package/dist/src/utils/memoryDiscovery.test.js +40 -0
  434. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  435. package/dist/src/utils/memoryImportProcessor.d.ts +1 -1
  436. package/dist/src/utils/memoryImportProcessor.js +24 -15
  437. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  438. package/dist/src/utils/sessionOperations.d.ts +19 -0
  439. package/dist/src/utils/sessionOperations.js +101 -0
  440. package/dist/src/utils/sessionOperations.js.map +1 -0
  441. package/dist/src/utils/sessionOperations.test.d.ts +6 -0
  442. package/dist/src/utils/sessionOperations.test.js +92 -0
  443. package/dist/src/utils/sessionOperations.test.js.map +1 -0
  444. package/dist/src/utils/shell-utils.d.ts +15 -0
  445. package/dist/src/utils/shell-utils.js +43 -2
  446. package/dist/src/utils/shell-utils.js.map +1 -1
  447. package/dist/src/utils/textUtils.d.ts +8 -0
  448. package/dist/src/utils/textUtils.js +16 -0
  449. package/dist/src/utils/textUtils.js.map +1 -1
  450. package/dist/src/utils/tokenCalculation.d.ts +2 -0
  451. package/dist/src/utils/tokenCalculation.js +2 -2
  452. package/dist/src/utils/tokenCalculation.js.map +1 -1
  453. package/dist/tsconfig.tsbuildinfo +1 -1
  454. package/package.json +1 -1
  455. package/dist/docs/get-started/examples.md +0 -141
  456. package/dist/google-gemini-cli-core-0.36.0-preview.7.tgz +0 -0
  457. package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js +0 -164
  458. package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js.map +0 -1
  459. package/dist/src/sandbox/macos/commandSafety.js.map +0 -1
  460. package/dist/src/services/chatCompressionService.js.map +0 -1
  461. package/dist/src/services/chatCompressionService.test.js.map +0 -1
  462. package/dist/src/services/contextManager.js.map +0 -1
  463. package/dist/src/services/contextManager.test.js.map +0 -1
  464. package/dist/src/services/toolOutputMaskingService.js.map +0 -1
  465. package/dist/src/services/toolOutputMaskingService.test.js.map +0 -1
  466. /package/dist/src/{services/toolOutputMaskingService.test.d.ts → agents/browser/snapshotSuperseder.test.d.ts} +0 -0
  467. /package/dist/src/{services → context}/chatCompressionService.d.ts +0 -0
  468. /package/dist/src/{services → context}/chatCompressionService.js +0 -0
  469. /package/dist/src/{services → context}/chatCompressionService.test.d.ts +0 -0
  470. /package/dist/src/{services → context}/chatCompressionService.test.js +0 -0
  471. /package/dist/src/{services → context}/contextManager.test.d.ts +0 -0
  472. /package/dist/src/{sandbox/macos/MacOsSandboxManager.integration.test.d.ts → services/sandboxManager.integration.test.d.ts} +0 -0
@@ -30,8 +30,23 @@ const __filename = fileURLToPath(import.meta.url);
30
30
  const __dirname = path.dirname(__filename);
31
31
  // Default browser profile directory name within ~/.gemini/
32
32
  const BROWSER_PROFILE_DIR = 'cli-browser-profile';
33
+ /**
34
+ * Typed error for domain restriction violations.
35
+ * Thrown when a navigation tool targets a domain not in allowedDomains.
36
+ * Caught by mcpToolWrapper to terminate the agent immediately.
37
+ */
38
+ export class DomainNotAllowedError extends Error {
39
+ constructor(message) {
40
+ super(message);
41
+ this.name = 'DomainNotAllowedError';
42
+ }
43
+ }
33
44
  // Default timeout for MCP operations
34
45
  const MCP_TIMEOUT_MS = 60_000;
46
+ // Maximum reconnection attempts before giving up
47
+ const MAX_RECONNECT_RETRIES = 3;
48
+ // Base delay (ms) for exponential backoff between reconnection attempts
49
+ const RECONNECT_BASE_DELAY_MS = 500;
35
50
  /**
36
51
  * Tools that can cause a full-page navigation (explicitly or implicitly).
37
52
  *
@@ -63,10 +78,65 @@ const POTENTIALLY_NAVIGATING_TOOLS = new Set([
63
78
  */
64
79
  export class BrowserManager {
65
80
  config;
81
+ // --- Static singleton management ---
82
+ static instances = new Map();
83
+ /**
84
+ * Returns the cache key for a given config.
85
+ * Uses `sessionMode:profilePath` so different profiles get separate instances.
86
+ */
87
+ static getInstanceKey(config) {
88
+ const browserConfig = config.getBrowserAgentConfig();
89
+ const sessionMode = browserConfig.customConfig.sessionMode ?? 'persistent';
90
+ const profilePath = browserConfig.customConfig.profilePath ?? 'default';
91
+ return `${sessionMode}:${profilePath}`;
92
+ }
93
+ /**
94
+ * Returns an existing BrowserManager for the current config's session mode
95
+ * and profile, or creates a new one.
96
+ */
97
+ static getInstance(config) {
98
+ const key = BrowserManager.getInstanceKey(config);
99
+ let instance = BrowserManager.instances.get(key);
100
+ if (!instance) {
101
+ instance = new BrowserManager(config);
102
+ BrowserManager.instances.set(key, instance);
103
+ debugLogger.log(`Created new BrowserManager singleton (key: ${key})`);
104
+ }
105
+ else {
106
+ debugLogger.log(`Reusing existing BrowserManager singleton (key: ${key})`);
107
+ }
108
+ return instance;
109
+ }
110
+ /**
111
+ * Closes all cached BrowserManager instances and clears the cache.
112
+ * Called on /clear commands and CLI exit.
113
+ */
114
+ static async resetAll() {
115
+ const results = await Promise.allSettled(Array.from(BrowserManager.instances.values()).map((instance) => instance.close()));
116
+ for (const result of results) {
117
+ if (result.status === 'rejected') {
118
+ debugLogger.error(`Error during BrowserManager cleanup: ${result.reason instanceof Error ? result.reason.message : String(result.reason)}`);
119
+ }
120
+ }
121
+ BrowserManager.instances.clear();
122
+ }
123
+ /**
124
+ * Alias for resetAll — used by CLI exit cleanup for clarity.
125
+ */
126
+ static async closeAll() {
127
+ await BrowserManager.resetAll();
128
+ }
129
+ // --- Instance state ---
66
130
  // Raw MCP SDK Client - NOT the wrapper McpClient
67
131
  rawMcpClient;
68
132
  mcpTransport;
69
133
  discoveredTools = [];
134
+ disconnected = false;
135
+ isClosing = false;
136
+ connectionPromise;
137
+ /** State for action rate limiting */
138
+ actionCounter = 0;
139
+ maxActionsPerTask;
70
140
  /**
71
141
  * Whether to inject the automation overlay.
72
142
  * Always false in headless mode (no visible window to decorate).
@@ -78,6 +148,8 @@ export class BrowserManager {
78
148
  const browserConfig = config.getBrowserAgentConfig();
79
149
  this.shouldInjectOverlay = !browserConfig?.customConfig?.headless;
80
150
  this.shouldDisableInput = config.shouldDisableBrowserUserInput();
151
+ this.maxActionsPerTask =
152
+ browserConfig?.customConfig.maxActionsPerTask ?? 100;
81
153
  }
82
154
  /**
83
155
  * Gets the raw MCP SDK Client for direct tool calls.
@@ -107,23 +179,25 @@ export class BrowserManager {
107
179
  * @param toolName The name of the tool to call
108
180
  * @param args Arguments to pass to the tool
109
181
  * @param signal Optional AbortSignal to cancel the call
182
+ * @param isInternal Determine if the tool is for internal execution
110
183
  * @returns The result from the MCP server
111
184
  */
112
- async callTool(toolName, args, signal) {
185
+ async callTool(toolName, args, signal, isInternal = false) {
113
186
  if (signal?.aborted) {
114
187
  throw signal.reason ?? new Error('Operation cancelled');
115
188
  }
189
+ // Hard enforcement of per-action rate limit
190
+ if (!isInternal) {
191
+ if (this.actionCounter >= this.maxActionsPerTask) {
192
+ const error = new Error(`Browser agent reached maximum action limit (${this.maxActionsPerTask}). ` +
193
+ `Task terminated to prevent runaway execution. To config the limit, use maxActionsPerTask in the settings.`);
194
+ throw error;
195
+ }
196
+ this.actionCounter++;
197
+ }
116
198
  const errorMessage = this.checkNavigationRestrictions(toolName, args);
117
199
  if (errorMessage) {
118
- return {
119
- content: [
120
- {
121
- type: 'text',
122
- text: errorMessage,
123
- },
124
- ],
125
- isError: true,
126
- };
200
+ throw new DomainNotAllowedError(errorMessage);
127
201
  }
128
202
  const client = await this.getRawMcpClient();
129
203
  const callPromise = client.callTool({ name: toolName, arguments: args }, undefined, { timeout: MCP_TIMEOUT_MS });
@@ -154,23 +228,23 @@ export class BrowserManager {
154
228
  // Re-inject the automation overlay and input blocker after tools that
155
229
  // can cause a full-page navigation. chrome-devtools-mcp emits no MCP
156
230
  // notifications, so callTool() is the only interception point.
231
+ //
232
+ // The input blocker injection is idempotent: the injected function
233
+ // reuses the existing DOM element when present and only recreates
234
+ // it when navigation has actually replaced the page DOM.
157
235
  if (!result.isError &&
158
236
  POTENTIALLY_NAVIGATING_TOOLS.has(toolName) &&
159
237
  !signal?.aborted) {
238
+ // Don't re-inject if explicitly switching to a page in the background
239
+ if (toolName === 'select_page' && args['bringToFront'] === false) {
240
+ return result;
241
+ }
160
242
  try {
161
243
  if (this.shouldInjectOverlay) {
162
244
  await injectAutomationOverlay(this, signal);
163
245
  }
164
- // Only re-inject the input blocker for tools that *reliably*
165
- // replace the page DOM (navigate_page, new_page, select_page).
166
- // click/click_at are handled by pointer-events suspend/resume
167
- // in mcpToolWrapper — no full re-inject roundtrip needed.
168
- // press_key/handle_dialog only sometimes navigate.
169
- const reliableNavigation = toolName === 'navigate_page' ||
170
- toolName === 'new_page' ||
171
- toolName === 'select_page';
172
- if (this.shouldDisableInput && reliableNavigation) {
173
- await injectInputBlocker(this);
246
+ if (this.shouldDisableInput) {
247
+ await injectInputBlocker(this, signal);
174
248
  }
175
249
  }
176
250
  catch {
@@ -196,20 +270,67 @@ export class BrowserManager {
196
270
  isError: raw.isError === true,
197
271
  };
198
272
  }
273
+ /**
274
+ * Returns whether the MCP client is currently connected and healthy.
275
+ */
276
+ isConnected() {
277
+ return this.rawMcpClient !== undefined && !this.disconnected;
278
+ }
199
279
  /**
200
280
  * Ensures browser and MCP client are connected.
281
+ * If a previous connection was lost (e.g., user closed the browser),
282
+ * this will reconnect with exponential backoff (up to MAX_RECONNECT_RETRIES).
283
+ *
284
+ * Concurrent callers share a single in-flight connection promise so that
285
+ * two subagents racing at startup do not trigger duplicate connectMcp() calls.
201
286
  */
202
287
  async ensureConnection() {
203
- if (this.rawMcpClient) {
288
+ // Already connected and healthy — nothing to do
289
+ if (this.isConnected()) {
204
290
  return;
205
291
  }
292
+ // A connection is already being established — wait for it instead of racing
293
+ if (this.connectionPromise) {
294
+ return this.connectionPromise;
295
+ }
296
+ // If previously connected but transport died, clean up before reconnecting
297
+ if (this.disconnected) {
298
+ debugLogger.log('Previous browser connection was lost. Cleaning up before reconnecting...');
299
+ await this.close();
300
+ this.disconnected = false;
301
+ }
302
+ // Start connecting; store the promise so concurrent callers can join it
303
+ this.connectionPromise = this.connectWithRetry().finally(() => {
304
+ this.connectionPromise = undefined;
305
+ });
306
+ return this.connectionPromise;
307
+ }
308
+ /**
309
+ * Connects to chrome-devtools-mcp with exponential backoff retry.
310
+ */
311
+ async connectWithRetry() {
206
312
  // Request browser consent if needed (first-run privacy notice)
207
313
  const consentGranted = await getBrowserConsentIfNeeded();
208
314
  if (!consentGranted) {
209
315
  throw new Error('Browser agent requires user consent to proceed. ' +
210
316
  'Please re-run and accept the privacy notice.');
211
317
  }
212
- await this.connectMcp();
318
+ let lastError;
319
+ for (let attempt = 0; attempt < MAX_RECONNECT_RETRIES; attempt++) {
320
+ try {
321
+ await this.connectMcp();
322
+ return;
323
+ }
324
+ catch (error) {
325
+ lastError = error instanceof Error ? error : new Error(String(error));
326
+ if (attempt < MAX_RECONNECT_RETRIES - 1) {
327
+ const delay = RECONNECT_BASE_DELAY_MS * Math.pow(2, attempt);
328
+ debugLogger.log(`Connection attempt ${attempt + 1} failed, retrying in ${delay}ms...`);
329
+ await new Promise((resolve) => setTimeout(resolve, delay));
330
+ }
331
+ }
332
+ }
333
+ throw lastError;
213
334
  }
214
335
  /**
215
336
  * Closes browser and cleans up connections.
@@ -217,6 +338,7 @@ export class BrowserManager {
217
338
  * the transport will terminate the browser.
218
339
  */
219
340
  async close() {
341
+ this.isClosing = true;
220
342
  // Close MCP client first
221
343
  if (this.rawMcpClient) {
222
344
  try {
@@ -238,6 +360,7 @@ export class BrowserManager {
238
360
  this.mcpTransport = undefined;
239
361
  }
240
362
  this.discoveredTools = [];
363
+ this.connectionPromise = undefined;
241
364
  }
242
365
  /**
243
366
  * Connects to chrome-devtools-mcp which manages the browser process.
@@ -250,6 +373,7 @@ export class BrowserManager {
250
373
  * BrowserManager instance.
251
374
  */
252
375
  async connectMcp() {
376
+ this.isClosing = false;
253
377
  debugLogger.log('Connecting isolated MCP client to chrome-devtools-mcp...');
254
378
  // Create raw MCP SDK Client (not the wrapper McpClient)
255
379
  this.rawMcpClient = new Client({
@@ -260,7 +384,25 @@ export class BrowserManager {
260
384
  });
261
385
  // Build args for chrome-devtools-mcp
262
386
  const browserConfig = this.config.getBrowserAgentConfig();
263
- const sessionMode = browserConfig.customConfig.sessionMode ?? 'persistent';
387
+ let sessionMode = browserConfig.customConfig.sessionMode ?? 'persistent';
388
+ // Detect sandbox environment.
389
+ // SANDBOX env var is set to 'sandbox-exec' (seatbelt) or the container
390
+ // name (Docker/Podman/gVisor/LXC) when running inside a sandbox.
391
+ // CI uses 'sandbox:none' as a metadata label — not a real sandbox.
392
+ const sandboxType = process.env['SANDBOX'];
393
+ const isContainerSandbox = !!sandboxType &&
394
+ sandboxType !== 'sandbox-exec' &&
395
+ sandboxType !== 'sandbox:none';
396
+ const isSeatbeltSandbox = sandboxType === 'sandbox-exec' && sessionMode !== 'existing';
397
+ // Seatbelt sandbox: force isolated + headless for filesystem compatibility.
398
+ // Chrome exists on the host, but persistent profiles may conflict with
399
+ // seatbelt restrictions. Isolated mode uses tmpdir (always writable).
400
+ if (isSeatbeltSandbox) {
401
+ if (sessionMode !== 'isolated') {
402
+ sessionMode = 'isolated';
403
+ coreEvents.emitFeedback('info', '🔒 Sandbox: Using isolated browser session for compatibility.');
404
+ }
405
+ }
264
406
  const mcpArgs = ['--experimental-vision'];
265
407
  // Session mode determines how the browser is managed:
266
408
  // - "isolated": Temp profile, cleaned up after session (--isolated)
@@ -271,13 +413,37 @@ export class BrowserManager {
271
413
  mcpArgs.push('--isolated');
272
414
  }
273
415
  else if (sessionMode === 'existing') {
274
- mcpArgs.push('--autoConnect');
275
- const message = '🔒 Browsing with your signed-in Chrome profile — cookies and saved logins will be visible to the agent.';
276
- coreEvents.emitFeedback('info', message);
277
- coreEvents.emitConsoleLog('info', message);
416
+ if (isContainerSandbox) {
417
+ // In container sandboxes, --autoConnect can't discover Chrome on the
418
+ // host (it uses local pipes/sockets). Use --browser-url with the
419
+ // resolved IP of host.docker.internal instead of the hostname, because
420
+ // Chrome's DevTools protocol rejects HTTP requests where the Host
421
+ // header is not 'localhost' or an IP address.
422
+ const dns = await import('node:dns');
423
+ let browserHost = 'host.docker.internal';
424
+ try {
425
+ const { address } = await dns.promises.lookup(browserHost);
426
+ browserHost = address;
427
+ }
428
+ catch {
429
+ // Fallback: use hostname as-is if DNS resolution fails
430
+ debugLogger.log(`Could not resolve host.docker.internal, using hostname directly`);
431
+ }
432
+ const browserUrl = `http://${browserHost}:9222`;
433
+ mcpArgs.push('--browser-url', browserUrl);
434
+ coreEvents.emitFeedback('info', `🔒 Container sandbox: Connecting to Chrome via ${browserHost}:9222.`);
435
+ }
436
+ else {
437
+ mcpArgs.push('--autoConnect');
438
+ const message = '🔒 Browsing with your signed-in Chrome profile — cookies and saved logins will be visible to the agent.';
439
+ coreEvents.emitFeedback('info', message);
440
+ coreEvents.emitConsoleLog('info', message);
441
+ }
278
442
  }
279
- // Add optional settings from config
280
- if (browserConfig.customConfig.headless) {
443
+ // Add optional settings from config.
444
+ // Force headless in seatbelt sandbox since Chrome profile/display access
445
+ // may be restricted, and the user is running in a sandboxed environment.
446
+ if (browserConfig.customConfig.headless || isSeatbeltSandbox) {
281
447
  mcpArgs.push('--headless');
282
448
  }
283
449
  if (browserConfig.customConfig.profilePath) {
@@ -302,7 +468,7 @@ export class BrowserManager {
302
468
  return `EXCLUDE ${domain}`;
303
469
  })
304
470
  .join(', ');
305
- mcpArgs.push(`--chromeArg="--host-rules=MAP * 127.0.0.1, ${exclusionRules}, EXCLUDE 127.0.0.1"`);
471
+ mcpArgs.push(`--chromeArg="--host-rules=MAP * ~NOTFOUND, ${exclusionRules}"`);
306
472
  }
307
473
  debugLogger.log(`Launching bundled chrome-devtools-mcp (${sessionMode} mode) with args: ${mcpArgs.join(' ')}`);
308
474
  // Create stdio transport to the bundled chrome-devtools-mcp.
@@ -327,9 +493,12 @@ export class BrowserManager {
327
493
  });
328
494
  }
329
495
  this.mcpTransport.onclose = () => {
496
+ this.disconnected = true;
497
+ if (this.isClosing) {
498
+ return;
499
+ }
330
500
  debugLogger.error('chrome-devtools-mcp transport closed unexpectedly. ' +
331
501
  'The MCP server process may have crashed.');
332
- this.rawMcpClient = undefined;
333
502
  };
334
503
  this.mcpTransport.onerror = (error) => {
335
504
  debugLogger.error(`chrome-devtools-mcp transport error: ${error.message}`);
@@ -344,7 +513,8 @@ export class BrowserManager {
344
513
  await this.rawMcpClient.connect(this.mcpTransport);
345
514
  debugLogger.log('MCP client connected to chrome-devtools-mcp');
346
515
  await this.discoverTools();
347
- this.registerInputBlockerHandler();
516
+ // clear the action counter for each connection
517
+ this.actionCounter = 0;
348
518
  })(),
349
519
  new Promise((_, reject) => {
350
520
  timeoutId = setTimeout(() => reject(new Error(`Timed out connecting to chrome-devtools-mcp (${connectTimeoutMs}ms)`)), connectTimeoutMs);
@@ -446,57 +616,59 @@ export class BrowserManager {
446
616
  }
447
617
  try {
448
618
  const parsedUrl = new URL(url);
449
- const urlHostname = parsedUrl.hostname.replace(/\.$/, '');
450
- for (const domainPattern of allowedDomains) {
451
- if (domainPattern.startsWith('*.')) {
452
- const baseDomain = domainPattern.substring(2);
453
- if (urlHostname === baseDomain ||
454
- urlHostname.endsWith(`.${baseDomain}`)) {
455
- return undefined;
619
+ const urlHostname = parsedUrl.hostname;
620
+ if (!this.isDomainAllowed(urlHostname, allowedDomains)) {
621
+ return 'Domain not allowed: The requested domain is not in the allowed list.';
622
+ }
623
+ // Check query parameters for embedded URLs that could bypass domain
624
+ // restrictions via proxy services (e.g. translate.google.com/translate?u=BLOCKED).
625
+ const paramsToCheck = [
626
+ ...parsedUrl.searchParams.values(),
627
+ // Also check fragments which might contain query-like params
628
+ ...new URLSearchParams(parsedUrl.hash.replace(/^#/, '')).values(),
629
+ ];
630
+ for (const paramValue of paramsToCheck) {
631
+ try {
632
+ const embeddedUrl = new URL(paramValue);
633
+ if (embeddedUrl.protocol === 'http:' ||
634
+ embeddedUrl.protocol === 'https:') {
635
+ const embeddedHostname = embeddedUrl.hostname.replace(/\.$/, '');
636
+ if (!this.isDomainAllowed(embeddedHostname, allowedDomains)) {
637
+ return 'Domain not allowed: Embedded URL targets a disallowed domain.';
638
+ }
456
639
  }
457
640
  }
458
- else {
459
- if (urlHostname === domainPattern) {
460
- return undefined;
461
- }
641
+ catch {
642
+ // Not a valid URL, skip.
462
643
  }
463
644
  }
645
+ return undefined;
464
646
  }
465
647
  catch {
466
648
  return `Invalid URL: Malformed URL string.`;
467
649
  }
468
- // If none matched, then deny
469
- return `Tool '${toolName}' is not permitted for the requested URL/domain based on your current browser settings.`;
470
650
  }
471
651
  /**
472
- * Registers a fallback notification handler on the MCP client to
473
- * automatically re-inject the input blocker after any server-side
474
- * notification (e.g. page navigation, resource updates).
475
- *
476
- * This covers ALL navigation types (link clicks, form submissions,
477
- * history navigation) — not just explicit navigate_page tool calls.
652
+ * Checks whether a hostname matches any pattern in the allowed domains list.
478
653
  */
479
- registerInputBlockerHandler() {
480
- if (!this.rawMcpClient) {
481
- return;
482
- }
483
- if (!this.config.shouldDisableBrowserUserInput()) {
484
- return;
485
- }
486
- const existingHandler = this.rawMcpClient.fallbackNotificationHandler;
487
- this.rawMcpClient.fallbackNotificationHandler = async (notification) => {
488
- // Chain with any existing handler first.
489
- if (existingHandler) {
490
- await existingHandler(notification);
654
+ isDomainAllowed(hostname, allowedDomains) {
655
+ const normalized = hostname.replace(/\.$/, '');
656
+ for (const domainPattern of allowedDomains) {
657
+ if (domainPattern.startsWith('*.')) {
658
+ const baseDomain = domainPattern.substring(2);
659
+ if (normalized === baseDomain ||
660
+ normalized.endsWith(`.${baseDomain}`)) {
661
+ return true;
662
+ }
491
663
  }
492
- // Only re-inject on resource update notifications which indicate
493
- // page content has changed (navigation, new page, etc.)
494
- if (notification.method === 'notifications/resources/updated') {
495
- debugLogger.log('Page content changed, re-injecting input blocker...');
496
- void injectInputBlocker(this);
664
+ else {
665
+ if (normalized === domainPattern) {
666
+ return true;
667
+ }
497
668
  }
498
- };
499
- debugLogger.log('Registered global notification handler for input blocker re-injection');
669
+ }
670
+ // If none matched, then deny
671
+ return false;
500
672
  }
501
673
  }
502
674
  //# sourceMappingURL=browserManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browserManager.js","sourceRoot":"","sources":["../../../../src/agents/browser/browserManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserManager.js","sourceRoot":"","sources":["../../../../src/agents/browser/browserManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,2DAA2D;AAC3D,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAElD;;;;GAIG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,qCAAqC;AACrC,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,iDAAiD;AACjD,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEhC,wEAAwE;AACxE,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,OAAO,EAAE,4BAA4B;IACrC,UAAU,EAAE,0CAA0C;IACtD,eAAe;IACf,UAAU;IACV,aAAa,EAAE,uCAAuC;IACtD,WAAW,EAAE,mDAAmD;IAChE,eAAe,EAAE,iDAAiD;CACnE,CAAC,CAAC;AAuBH;;;;;;;;GAQG;AACH,MAAM,OAAO,cAAc;IAiFL;IAhFpB,sCAAsC;IAC9B,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE7D;;;OAGG;IACK,MAAM,CAAC,cAAc,CAAC,MAAc;QAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC;QAC3E,MAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,WAAW,IAAI,SAAS,CAAC;QACxE,OAAO,GAAG,WAAW,IAAI,WAAW,EAAE,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,GAAG,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;YACtC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5C,WAAW,CAAC,GAAG,CAAC,8CAA8C,GAAG,GAAG,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,GAAG,CACb,mDAAmD,GAAG,GAAG,CAC1D,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7D,QAAQ,CAAC,KAAK,EAAE,CACjB,CACF,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,WAAW,CAAC,KAAK,CACf,wCAAwC,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACzH,CAAC;YACJ,CAAC;QACH,CAAC;QACD,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ;QACnB,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,yBAAyB;IACzB,iDAAiD;IACzC,YAAY,CAAqB;IACjC,YAAY,CAAmC;IAC/C,eAAe,GAAc,EAAE,CAAC;IAChC,YAAY,GAAG,KAAK,CAAC;IACrB,SAAS,GAAG,KAAK,CAAC;IAClB,iBAAiB,CAA4B;IAErD,qCAAqC;IAC7B,aAAa,GAAG,CAAC,CAAC;IACT,iBAAiB,CAAS;IAE3C;;;OAGG;IACc,mBAAmB,CAAU;IAC7B,kBAAkB,CAAU;IAE7C,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChC,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACrD,IAAI,CAAC,mBAAmB,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,CAAC;QAClE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,EAAE,CAAC;QACjE,IAAI,CAAC,iBAAiB;YACpB,aAAa,EAAE,YAAY,CAAC,iBAAiB,IAAI,GAAG,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,IAA6B,EAC7B,MAAoB,EACpB,aAAsB,KAAK;QAE3B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC1D,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,+CAA+C,IAAI,CAAC,iBAAiB,KAAK;oBACxE,2GAA2G,CAC9G,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CACjC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EACnC,SAAS,EACT,EAAE,OAAO,EAAE,cAAc,EAAE,CAC5B,CAAC;QAEF,IAAI,MAAyB,CAAC;QAE9B,oCAAoC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,IAAI,OAAiC,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;oBAC7B,WAAW;oBACX,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;wBACtC,OAAO,GAAG,GAAG,EAAE,CACb,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;wBAC5D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC5D,CAAC,CAAC;iBACH,CAAC,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;oBAAS,CAAC;gBACT,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,qEAAqE;QACrE,+DAA+D;QAC/D,EAAE;QACF,mEAAmE;QACnE,kEAAkE;QAClE,yDAAyD;QACzD,IACE,CAAC,MAAM,CAAC,OAAO;YACf,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC1C,CAAC,MAAM,EAAE,OAAO,EAChB,CAAC;YACD,sEAAsE;YACtE,IAAI,QAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE,CAAC;gBACjE,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC7B,MAAM,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAC9C,CAAC;gBACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC5B,MAAM,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,+DAA+D;YACjE,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,QAAQ,CACd,GAA4C;QAE5C,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACjC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CACb,CAAC,IAKA,EAAE,EAAE,CAAC,CAAC;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;oBAC9C,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CACH;gBACH,CAAC,CAAC,SAAS;YACb,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI;SAC9B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB;QACpB,gDAAgD;QAChD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,4EAA4E;QAC5E,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAChC,CAAC;QAED,2EAA2E;QAC3E,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,WAAW,CAAC,GAAG,CACb,0EAA0E,CAC3E,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5D,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB;QAC5B,+DAA+D;QAC/D,MAAM,cAAc,GAAG,MAAM,yBAAyB,EAAE,CAAC;QACzD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,kDAAkD;gBAChD,8CAA8C,CACjD,CAAC;QACJ,CAAC;QAED,IAAI,SAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,qBAAqB,EAAE,OAAO,EAAE,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxB,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,IAAI,OAAO,GAAG,qBAAqB,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,KAAK,GAAG,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBAC7D,WAAW,CAAC,GAAG,CACb,sBAAsB,OAAO,GAAG,CAAC,wBAAwB,KAAK,OAAO,CACtE,CAAC;oBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,SAAU,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,yBAAyB;QACzB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,CACf,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;QAED,gDAAgD;QAChD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,WAAW,CAAC,KAAK,CACf,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACzF,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,WAAW,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QAE5E,wDAAwD;QACxD,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAC5B;YACE,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE,EAAE;SACjB,CACF,CAAC;QAEF,qCAAqC;QACrC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC1D,IAAI,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC;QAEzE,8BAA8B;QAC9B,uEAAuE;QACvE,iEAAiE;QACjE,mEAAmE;QACnE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,kBAAkB,GACtB,CAAC,CAAC,WAAW;YACb,WAAW,KAAK,cAAc;YAC9B,WAAW,KAAK,cAAc,CAAC;QACjC,MAAM,iBAAiB,GACrB,WAAW,KAAK,cAAc,IAAI,WAAW,KAAK,UAAU,CAAC;QAE/D,4EAA4E;QAC5E,uEAAuE;QACvE,sEAAsE;QACtE,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,WAAW,GAAG,UAAU,CAAC;gBACzB,UAAU,CAAC,YAAY,CACrB,MAAM,EACN,+DAA+D,CAChE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAE1C,sDAAsD;QACtD,oEAAoE;QACpE,iFAAiF;QACjF,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YACtC,IAAI,kBAAkB,EAAE,CAAC;gBACvB,qEAAqE;gBACrE,iEAAiE;gBACjE,uEAAuE;gBACvE,kEAAkE;gBAClE,8CAA8C;gBAC9C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACrC,IAAI,WAAW,GAAG,sBAAsB,CAAC;gBACzC,IAAI,CAAC;oBACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC3D,WAAW,GAAG,OAAO,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,uDAAuD;oBACvD,WAAW,CAAC,GAAG,CACb,iEAAiE,CAClE,CAAC;gBACJ,CAAC;gBACD,MAAM,UAAU,GAAG,UAAU,WAAW,OAAO,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;gBAC1C,UAAU,CAAC,YAAY,CACrB,MAAM,EACN,kDAAkD,WAAW,QAAQ,CACtE,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC9B,MAAM,OAAO,GACX,yGAAyG,CAAC;gBAC5G,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACzC,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,yEAAyE;QACzE,yEAAyE;QACzE,IAAI,aAAa,CAAC,YAAY,CAAC,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACxC,uEAAuE;YACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAClC,OAAO,CAAC,kBAAkB,EAAE,EAC5B,mBAAmB,CACpB,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QACpD,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,CAAC;QACjE,CAAC;QAED,IACE,aAAa,CAAC,YAAY,CAAC,cAAc;YACzC,aAAa,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EACpD,CAAC;YACD,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,cAAc;iBAC7D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACd,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC7D,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,EAAE,CAAC,CAAC;gBACjE,CAAC;gBACD,OAAO,WAAW,MAAM,EAAE,CAAC;YAC7B,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,CAAC,IAAI,CACV,8CAA8C,cAAc,GAAG,CAChE,CAAC;QACJ,CAAC;QAED,WAAW,CAAC,GAAG,CACb,0CAA0C,WAAW,qBAAqB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC9F,CAAC;QAEF,6DAA6D;QAC7D,oEAAoE;QACpE,4DAA4D;QAC5D,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAC9B,SAAS,EACT,iCAAiC,CAClC,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,aAAa,GAAG,IAAI,CAAC,OAAO,CAC1B,SAAS,EACT,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC9C,CAAC,CAAC,0CAA0C;gBAC5C,CAAC,CAAC,+CAA+C,CACpD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,oBAAoB,CAAC;YAC3C,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC;YACjC,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QAEH,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC9C,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxC,WAAW,CAAC,GAAG,CACb,gCAAgC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAC7D,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,WAAW,CAAC,KAAK,CACf,qDAAqD;gBACnD,0CAA0C,CAC7C,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;YAC3C,WAAW,CAAC,KAAK,CACf,wCAAwC,KAAK,CAAC,OAAO,EAAE,CACxD,CAAC;QACJ,CAAC,CAAC;QAEF,oEAAoE;QACpE,kEAAkE;QAClE,MAAM,gBAAgB,GACpB,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;QAEvD,IAAI,SAAoD,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,CAAC,KAAK,IAAI,EAAE;oBACV,MAAM,IAAI,CAAC,YAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAa,CAAC,CAAC;oBACrD,WAAW,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;oBAC/D,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC3B,+CAA+C;oBAC/C,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACzB,CAAC,CAAC,EAAE;gBACJ,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAC/B,SAAS,GAAG,UAAU,CACpB,GAAG,EAAE,CACH,MAAM,CACJ,IAAI,KAAK,CACP,gDAAgD,gBAAgB,KAAK,CACtE,CACF,EACH,gBAAgB,CACjB,CAAC;gBACJ,CAAC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YAEnB,yDAAyD;YACzD,MAAM,IAAI,CAAC,qBAAqB,CAC9B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,WAAW,CACZ,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,OAAe,EAAE,WAAmB;QAChE,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAE3C,2EAA2E;QAC3E,IAAI,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC7C,IAAI,WAAW,KAAK,YAAY,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/D,OAAO,IAAI,KAAK,CACd,gCAAgC,OAAO,MAAM;oBAC3C,6DAA6D;oBAC7D,gBAAgB;oBAChB,wDAAwD;oBACxD,sFAAsF;oBACtF,4EAA4E,CAC/E,CAAC;YACJ,CAAC;YACD,qEAAqE;YACrE,OAAO,IAAI,KAAK,CACd,gCAAgC,OAAO,MAAM;gBAC3C,iCAAiC;gBACjC,6CAA6C,CAChD,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;gBAC/B,OAAO,IAAI,KAAK,CACd,mCAAmC,OAAO,MAAM;oBAC9C,4CAA4C;oBAC5C,mCAAmC;oBACnC,uDAAuD;oBACvD,kCAAkC;oBAClC,0GAA0G,CAC7G,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,KAAK,CACd,mCAAmC,OAAO,MAAM;gBAC9C,oBAAoB;gBACpB,+CAA+C;gBAC/C,2EAA2E,CAC9E,CAAC;QACJ,CAAC;QAED,8DAA8D;QAC9D,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAC/B,OAAO,IAAI,KAAK,CACd,kDAAkD,OAAO,MAAM;gBAC7D,4CAA4C;gBAC5C,mCAAmC;gBACnC,uDAAuD;gBACvD,kCAAkC;gBAClC,0GAA0G,CAC7G,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,OAAO,IAAI,KAAK,CACd,6CAA6C,WAAW,MAAM,OAAO,EAAE,CACxE,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEtC,WAAW,CAAC,GAAG,CACb,cAAc,IAAI,CAAC,eAAe,CAAC,MAAM,mCAAmC;YAC1E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACrD,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,2BAA2B,CACjC,QAAgB,EAChB,IAA6B;QAE7B,MAAM,mBAAmB,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAE1D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;QAClE,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,oCAAoC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC;gBACvD,OAAO,sEAAsE,CAAC;YAChF,CAAC;YAED,oEAAoE;YACpE,mFAAmF;YACnF,MAAM,aAAa,GAAG;gBACpB,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE;gBAClC,6DAA6D;gBAC7D,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;aAClE,CAAC;YACF,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxC,IACE,WAAW,CAAC,QAAQ,KAAK,OAAO;wBAChC,WAAW,CAAC,QAAQ,KAAK,QAAQ,EACjC,CAAC;wBACD,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,CAAC;4BAC5D,OAAO,+DAA+D,CAAC;wBACzE,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;gBAC3B,CAAC;YACH,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,oCAAoC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAgB,EAAE,cAAwB;QAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC9C,IACE,UAAU,KAAK,UAAU;oBACzB,UAAU,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,EACrC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;oBACjC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,6BAA6B;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC"}