@machina.ai/cell-cli-core 1.36.0-rc1 → 1.38.1-rc2

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 (733) hide show
  1. package/dist/docs/AFTER_MERGE_PROMPT.md +3 -10
  2. package/dist/docs/assets/theme-tokyonight-dark.png +0 -0
  3. package/dist/docs/changelogs/index.md +49 -0
  4. package/dist/docs/changelogs/latest.md +355 -458
  5. package/dist/docs/changelogs/preview.md +402 -363
  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 +26 -10
  10. package/dist/docs/cli/sandbox.md +53 -1
  11. package/dist/docs/cli/settings.md +52 -48
  12. package/dist/docs/cli/themes.md +5 -0
  13. package/dist/docs/core/index.md +2 -2
  14. package/dist/docs/core/remote-agents.md +14 -18
  15. package/dist/docs/core/subagents.md +194 -47
  16. package/dist/docs/get-started/authentication.md +2 -2
  17. package/dist/docs/get-started/gemini-3.md +1 -1
  18. package/dist/docs/get-started/index.md +127 -1
  19. package/dist/docs/get-started/installation.md +7 -0
  20. package/dist/docs/hooks/index.md +6 -6
  21. package/dist/docs/ide-integration/index.md +99 -24
  22. package/dist/docs/index.md +0 -2
  23. package/dist/docs/redirects.json +1 -0
  24. package/dist/docs/reference/commands.md +1 -3
  25. package/dist/docs/reference/configuration.md +220 -99
  26. package/dist/docs/reference/keyboard-shortcuts.md +21 -8
  27. package/dist/docs/reference/policy-engine.md +36 -31
  28. package/dist/docs/reference/tools.md +56 -23
  29. package/dist/docs/release-confidence.md +0 -6
  30. package/dist/docs/releases.md +4 -0
  31. package/dist/docs/resources/quota-and-pricing.md +23 -9
  32. package/dist/docs/sidebar.json +11 -4
  33. package/dist/docs/tools/mcp-server.md +3 -3
  34. package/dist/docs/tools/planning.md +6 -4
  35. package/dist/docs/tools/web-fetch.md +3 -0
  36. package/dist/package.json +2 -1
  37. package/dist/src/agent/agent-session.test.js +14 -6
  38. package/dist/src/agent/agent-session.test.js.map +1 -1
  39. package/dist/src/agent/event-translator.js +2 -1
  40. package/dist/src/agent/event-translator.js.map +1 -1
  41. package/dist/src/agent/event-translator.test.js +1 -0
  42. package/dist/src/agent/event-translator.test.js.map +1 -1
  43. package/dist/src/agent/legacy-agent-session.d.ts +47 -4
  44. package/dist/src/agent/legacy-agent-session.js +38 -15
  45. package/dist/src/agent/legacy-agent-session.js.map +1 -1
  46. package/dist/src/agent/legacy-agent-session.test.js +60 -73
  47. package/dist/src/agent/legacy-agent-session.test.js.map +1 -1
  48. package/dist/src/agent/mock.js +7 -1
  49. package/dist/src/agent/mock.js.map +1 -1
  50. package/dist/src/agent/mock.test.js +1 -1
  51. package/dist/src/agent/mock.test.js.map +1 -1
  52. package/dist/src/agent/types.d.ts +34 -1
  53. package/dist/src/agents/a2a-client-manager.js +3 -3
  54. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  55. package/dist/src/agents/agent-scheduler.js +6 -1
  56. package/dist/src/agents/agent-scheduler.js.map +1 -1
  57. package/dist/src/agents/agent-scheduler.test.js +38 -0
  58. package/dist/src/agents/agent-scheduler.test.js.map +1 -1
  59. package/dist/src/agents/agentLoader.d.ts +12 -12
  60. package/dist/src/agents/agentLoader.js +1 -0
  61. package/dist/src/agents/agentLoader.js.map +1 -1
  62. package/dist/src/agents/auth-provider/api-key-provider.test.js +18 -2
  63. package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -1
  64. package/dist/src/agents/auth-provider/value-resolver.test.js +30 -0
  65. package/dist/src/agents/auth-provider/value-resolver.test.js.map +1 -1
  66. package/dist/src/agents/browser/analyzeScreenshot.js +36 -6
  67. package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -1
  68. package/dist/src/agents/browser/analyzeScreenshot.test.js +35 -3
  69. package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -1
  70. package/dist/src/agents/browser/automationOverlay.js +2 -10
  71. package/dist/src/agents/browser/automationOverlay.js.map +1 -1
  72. package/dist/src/agents/browser/browserAgentDefinition.js +10 -3
  73. package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -1
  74. package/dist/src/agents/browser/browserAgentFactory.d.ts +11 -3
  75. package/dist/src/agents/browser/browserAgentFactory.js +171 -129
  76. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -1
  77. package/dist/src/agents/browser/browserAgentFactory.test.js +99 -13
  78. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -1
  79. package/dist/src/agents/browser/browserAgentInvocation.d.ts +1 -0
  80. package/dist/src/agents/browser/browserAgentInvocation.js +87 -27
  81. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -1
  82. package/dist/src/agents/browser/browserAgentInvocation.test.js +107 -7
  83. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -1
  84. package/dist/src/agents/browser/browserManager.d.ts +89 -8
  85. package/dist/src/agents/browser/browserManager.js +357 -74
  86. package/dist/src/agents/browser/browserManager.js.map +1 -1
  87. package/dist/src/agents/browser/browserManager.test.js +540 -19
  88. package/dist/src/agents/browser/browserManager.test.js.map +1 -1
  89. package/dist/src/agents/browser/inputBlocker.d.ts +4 -4
  90. package/dist/src/agents/browser/inputBlocker.js +8 -18
  91. package/dist/src/agents/browser/inputBlocker.js.map +1 -1
  92. package/dist/src/agents/browser/inputBlocker.test.js +31 -3
  93. package/dist/src/agents/browser/inputBlocker.test.js.map +1 -1
  94. package/dist/src/agents/browser/mcpToolWrapper.d.ts +1 -1
  95. package/dist/src/agents/browser/mcpToolWrapper.js +9 -6
  96. package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -1
  97. package/dist/src/agents/browser/mcpToolWrapper.test.js +2 -2
  98. package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -1
  99. package/dist/src/agents/browser/modelAvailability.d.ts +5 -0
  100. package/dist/src/agents/browser/modelAvailability.js +12 -0
  101. package/dist/src/agents/browser/modelAvailability.js.map +1 -1
  102. package/dist/src/agents/browser/snapshotSuperseder.d.ts +31 -0
  103. package/dist/src/agents/browser/snapshotSuperseder.js +101 -0
  104. package/dist/src/agents/browser/snapshotSuperseder.js.map +1 -0
  105. package/dist/src/agents/browser/snapshotSuperseder.test.js +158 -0
  106. package/dist/src/agents/browser/snapshotSuperseder.test.js.map +1 -0
  107. package/dist/src/agents/local-executor.d.ts +9 -0
  108. package/dist/src/agents/local-executor.js +144 -200
  109. package/dist/src/agents/local-executor.js.map +1 -1
  110. package/dist/src/agents/local-executor.test.js +500 -115
  111. package/dist/src/agents/local-executor.test.js.map +1 -1
  112. package/dist/src/agents/local-invocation.d.ts +1 -0
  113. package/dist/src/agents/local-invocation.js +19 -9
  114. package/dist/src/agents/local-invocation.js.map +1 -1
  115. package/dist/src/agents/local-invocation.test.js +24 -0
  116. package/dist/src/agents/local-invocation.test.js.map +1 -1
  117. package/dist/src/agents/memory-manager-agent.js +1 -0
  118. package/dist/src/agents/memory-manager-agent.js.map +1 -1
  119. package/dist/src/agents/memory-manager-agent.test.js +6 -0
  120. package/dist/src/agents/memory-manager-agent.test.js.map +1 -1
  121. package/dist/src/agents/registry.js +19 -11
  122. package/dist/src/agents/registry.js.map +1 -1
  123. package/dist/src/agents/registry.test.js +67 -0
  124. package/dist/src/agents/registry.test.js.map +1 -1
  125. package/dist/src/agents/skill-extraction-agent.d.ts +24 -0
  126. package/dist/src/agents/skill-extraction-agent.js +269 -0
  127. package/dist/src/agents/skill-extraction-agent.js.map +1 -0
  128. package/dist/src/agents/types.d.ts +20 -0
  129. package/dist/src/agents/types.js.map +1 -1
  130. package/dist/src/availability/policyCatalog.d.ts +2 -1
  131. package/dist/src/availability/policyCatalog.js +1 -1
  132. package/dist/src/availability/policyCatalog.js.map +1 -1
  133. package/dist/src/availability/policyHelpers.js +43 -32
  134. package/dist/src/availability/policyHelpers.js.map +1 -1
  135. package/dist/src/availability/policyHelpers.test.js +12 -1
  136. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  137. package/dist/src/code_assist/admin/admin_controls.js +1 -1
  138. package/dist/src/code_assist/admin/admin_controls.js.map +1 -1
  139. package/dist/src/code_assist/experiments/flagNames.d.ts +1 -0
  140. package/dist/src/code_assist/experiments/flagNames.js +1 -0
  141. package/dist/src/code_assist/experiments/flagNames.js.map +1 -1
  142. package/dist/src/code_assist/oauth2.js +8 -3
  143. package/dist/src/code_assist/oauth2.js.map +1 -1
  144. package/dist/src/code_assist/oauth2.test.js +57 -0
  145. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  146. package/dist/src/code_assist/server.js +1 -1
  147. package/dist/src/code_assist/server.js.map +1 -1
  148. package/dist/src/code_assist/setup.js +5 -2
  149. package/dist/src/code_assist/setup.js.map +1 -1
  150. package/dist/src/code_assist/setup.test.js +27 -1
  151. package/dist/src/code_assist/setup.test.js.map +1 -1
  152. package/dist/src/code_assist/types.d.ts +80 -80
  153. package/dist/src/commands/memory.js +1 -1
  154. package/dist/src/commands/memory.js.map +1 -1
  155. package/dist/src/config/agent-loop-context.d.ts +2 -0
  156. package/dist/src/config/config.d.ts +91 -23
  157. package/dist/src/config/config.js +238 -79
  158. package/dist/src/config/config.js.map +1 -1
  159. package/dist/src/config/config.test.js +189 -15
  160. package/dist/src/config/config.test.js.map +1 -1
  161. package/dist/src/config/defaultModelConfigs.js +9 -0
  162. package/dist/src/config/defaultModelConfigs.js.map +1 -1
  163. package/dist/src/config/extensions/integrity.js +1 -1
  164. package/dist/src/config/extensions/integrity.js.map +1 -1
  165. package/dist/src/config/memory.d.ts +1 -0
  166. package/dist/src/config/memory.js +6 -0
  167. package/dist/src/config/memory.js.map +1 -1
  168. package/dist/src/config/projectRegistry.js +5 -3
  169. package/dist/src/config/projectRegistry.js.map +1 -1
  170. package/dist/src/config/scoped-config.d.ts +30 -0
  171. package/dist/src/config/scoped-config.js +69 -0
  172. package/dist/src/config/scoped-config.js.map +1 -0
  173. package/dist/src/config/scoped-config.test.d.ts +6 -0
  174. package/dist/src/config/scoped-config.test.js +161 -0
  175. package/dist/src/config/scoped-config.test.js.map +1 -0
  176. package/dist/src/config/storage.d.ts +3 -0
  177. package/dist/src/config/storage.js +9 -0
  178. package/dist/src/config/storage.js.map +1 -1
  179. package/dist/src/config/storage.test.js +10 -5
  180. package/dist/src/config/storage.test.js.map +1 -1
  181. package/dist/src/config/topicState.d.ts +21 -0
  182. package/dist/src/config/topicState.js +41 -0
  183. package/dist/src/config/topicState.js.map +1 -0
  184. package/dist/src/confirmation-bus/types.d.ts +13 -4
  185. package/dist/src/confirmation-bus/types.js +2 -0
  186. package/dist/src/confirmation-bus/types.js.map +1 -1
  187. package/dist/src/context/agentHistoryProvider.d.ts +45 -0
  188. package/dist/src/context/agentHistoryProvider.js +294 -0
  189. package/dist/src/context/agentHistoryProvider.js.map +1 -0
  190. package/dist/src/context/agentHistoryProvider.test.d.ts +6 -0
  191. package/dist/src/context/agentHistoryProvider.test.js +357 -0
  192. package/dist/src/context/agentHistoryProvider.test.js.map +1 -0
  193. package/dist/src/context/chatCompressionService.js.map +1 -0
  194. package/dist/src/context/chatCompressionService.test.js.map +1 -0
  195. package/dist/src/context/contextCompressionService.d.ts +30 -0
  196. package/dist/src/context/contextCompressionService.js +405 -0
  197. package/dist/src/context/contextCompressionService.js.map +1 -0
  198. package/dist/src/context/contextCompressionService.test.js +253 -0
  199. package/dist/src/context/contextCompressionService.test.js.map +1 -0
  200. package/dist/src/{services/contextManager.d.ts → context/memoryContextManager.d.ts} +3 -1
  201. package/dist/src/{services/contextManager.js → context/memoryContextManager.js} +20 -11
  202. package/dist/src/context/memoryContextManager.js.map +1 -0
  203. package/dist/src/{services/contextManager.test.js → context/memoryContextManager.test.js} +42 -33
  204. package/dist/src/context/memoryContextManager.test.js.map +1 -0
  205. package/dist/src/context/profiles.d.ts +7 -0
  206. package/dist/src/context/profiles.js +21 -0
  207. package/dist/src/context/profiles.js.map +1 -0
  208. package/dist/src/context/toolDistillationService.d.ts +38 -0
  209. package/dist/src/context/toolDistillationService.js +170 -0
  210. package/dist/src/context/toolDistillationService.js.map +1 -0
  211. package/dist/src/context/toolDistillationService.test.d.ts +6 -0
  212. package/dist/src/context/toolDistillationService.test.js +86 -0
  213. package/dist/src/context/toolDistillationService.test.js.map +1 -0
  214. package/dist/src/{services → context}/toolOutputMaskingService.d.ts +2 -2
  215. package/dist/src/{services → context}/toolOutputMaskingService.js +7 -7
  216. package/dist/src/context/toolOutputMaskingService.js.map +1 -0
  217. package/dist/src/context/toolOutputMaskingService.test.d.ts +6 -0
  218. package/dist/src/{services → context}/toolOutputMaskingService.test.js +4 -5
  219. package/dist/src/context/toolOutputMaskingService.test.js.map +1 -0
  220. package/dist/src/context/truncation.d.ts +26 -0
  221. package/dist/src/context/truncation.js +102 -0
  222. package/dist/src/context/truncation.js.map +1 -0
  223. package/dist/src/context/types.d.ts +36 -0
  224. package/dist/src/context/types.js +7 -0
  225. package/dist/src/context/types.js.map +1 -0
  226. package/dist/src/core/AuthenticatedContentGenerator.js +9 -1
  227. package/dist/src/core/AuthenticatedContentGenerator.js.map +1 -1
  228. package/dist/src/core/baseLlmClient.js +1 -1
  229. package/dist/src/core/baseLlmClient.js.map +1 -1
  230. package/dist/src/core/baseLlmClient.test.js +1 -0
  231. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  232. package/dist/src/core/client.d.ts +3 -1
  233. package/dist/src/core/client.js +24 -14
  234. package/dist/src/core/client.js.map +1 -1
  235. package/dist/src/core/client.test.js +36 -40
  236. package/dist/src/core/client.test.js.map +1 -1
  237. package/dist/src/core/contentGenerator.d.ts +0 -1
  238. package/dist/src/core/contentGenerator.js +2 -28
  239. package/dist/src/core/contentGenerator.js.map +1 -1
  240. package/dist/src/core/contentGenerator.test.js +1 -101
  241. package/dist/src/core/contentGenerator.test.js.map +1 -1
  242. package/dist/src/core/geminiChat.js +12 -5
  243. package/dist/src/core/geminiChat.js.map +1 -1
  244. package/dist/src/core/geminiChat.test.js +72 -18
  245. package/dist/src/core/geminiChat.test.js.map +1 -1
  246. package/dist/src/core/geminiChat_network_retry.test.js +1 -0
  247. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  248. package/dist/src/core/logger.js +4 -4
  249. package/dist/src/core/logger.js.map +1 -1
  250. package/dist/src/core/logger.test.js +1 -1
  251. package/dist/src/core/logger.test.js.map +1 -1
  252. package/dist/src/core/loggingContentGenerator.js +1 -1
  253. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  254. package/dist/src/core/prompts-substitution.test.js +5 -0
  255. package/dist/src/core/prompts-substitution.test.js.map +1 -1
  256. package/dist/src/core/prompts.test.js +3 -0
  257. package/dist/src/core/prompts.test.js.map +1 -1
  258. package/dist/src/generated/git-commit.d.ts +2 -2
  259. package/dist/src/generated/git-commit.js +2 -2
  260. package/dist/src/hooks/hookEventHandler.js +8 -0
  261. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  262. package/dist/src/hooks/hookRunner.js +9 -5
  263. package/dist/src/hooks/hookRunner.js.map +1 -1
  264. package/dist/src/hooks/hookRunner.test.js +20 -3
  265. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  266. package/dist/src/hooks/hookSystem.d.ts +2 -0
  267. package/dist/src/hooks/hookSystem.js +1 -0
  268. package/dist/src/hooks/hookSystem.js.map +1 -1
  269. package/dist/src/hooks/hookTranslator.js +20 -13
  270. package/dist/src/hooks/hookTranslator.js.map +1 -1
  271. package/dist/src/hooks/hookTranslator.test.js +36 -0
  272. package/dist/src/hooks/hookTranslator.test.js.map +1 -1
  273. package/dist/src/hooks/types.d.ts +2 -0
  274. package/dist/src/ide/ide-client.js +3 -3
  275. package/dist/src/ide/ide-client.js.map +1 -1
  276. package/dist/src/ide/ide-connection-utils.js +1 -1
  277. package/dist/src/ide/ide-connection-utils.js.map +1 -1
  278. package/dist/src/ide/ide-installer.js +5 -4
  279. package/dist/src/ide/ide-installer.js.map +1 -1
  280. package/dist/src/ide/process-utils.js +3 -3
  281. package/dist/src/ide/process-utils.js.map +1 -1
  282. package/dist/src/index.d.ts +10 -3
  283. package/dist/src/index.js +13 -5
  284. package/dist/src/index.js.map +1 -1
  285. package/dist/src/mcp/mcpLauncher.js +1 -1
  286. package/dist/src/output/json-formatter.js +2 -1
  287. package/dist/src/output/json-formatter.js.map +1 -1
  288. package/dist/src/policy/config.d.ts +1 -1
  289. package/dist/src/policy/config.js +61 -24
  290. package/dist/src/policy/config.js.map +1 -1
  291. package/dist/src/policy/config.test.js +21 -20
  292. package/dist/src/policy/config.test.js.map +1 -1
  293. package/dist/src/policy/persistence.test.js +42 -0
  294. package/dist/src/policy/persistence.test.js.map +1 -1
  295. package/dist/src/policy/policies/discovered.toml +7 -0
  296. package/dist/src/policy/policies/memory-manager.toml +11 -1
  297. package/dist/src/policy/policies/non-interactive.toml +7 -0
  298. package/dist/src/policy/policies/plan.toml +36 -2
  299. package/dist/src/policy/policies/read-only.toml +12 -0
  300. package/dist/src/policy/policies/sandbox-default.toml +4 -4
  301. package/dist/src/policy/policies/write.toml +21 -0
  302. package/dist/src/policy/policies/yolo.toml +1 -1
  303. package/dist/src/policy/policy-engine.d.ts +2 -4
  304. package/dist/src/policy/policy-engine.js +47 -37
  305. package/dist/src/policy/policy-engine.js.map +1 -1
  306. package/dist/src/policy/policy-engine.test.js +236 -30
  307. package/dist/src/policy/policy-engine.test.js.map +1 -1
  308. package/dist/src/policy/sandboxPolicyManager.d.ts +26 -1
  309. package/dist/src/policy/sandboxPolicyManager.js +41 -12
  310. package/dist/src/policy/sandboxPolicyManager.js.map +1 -1
  311. package/dist/src/policy/sandboxPolicyManager.test.d.ts +6 -0
  312. package/dist/src/policy/sandboxPolicyManager.test.js +61 -0
  313. package/dist/src/policy/sandboxPolicyManager.test.js.map +1 -0
  314. package/dist/src/policy/topic-policy.test.d.ts +6 -0
  315. package/dist/src/policy/topic-policy.test.js +48 -0
  316. package/dist/src/policy/topic-policy.test.js.map +1 -0
  317. package/dist/src/policy/types.d.ts +9 -6
  318. package/dist/src/policy/types.js +11 -0
  319. package/dist/src/policy/types.js.map +1 -1
  320. package/dist/src/policy/workspace-policy.test.js +18 -15
  321. package/dist/src/policy/workspace-policy.test.js.map +1 -1
  322. package/dist/src/prompts/promptProvider.js +20 -4
  323. package/dist/src/prompts/promptProvider.js.map +1 -1
  324. package/dist/src/prompts/promptProvider.test.js +84 -1
  325. package/dist/src/prompts/promptProvider.test.js.map +1 -1
  326. package/dist/src/prompts/snippets-memory-manager.test.js +1 -1
  327. package/dist/src/prompts/snippets-memory-manager.test.js.map +1 -1
  328. package/dist/src/prompts/snippets.d.ts +3 -4
  329. package/dist/src/prompts/snippets.js +37 -52
  330. package/dist/src/prompts/snippets.js.map +1 -1
  331. package/dist/src/prompts/snippets.legacy.d.ts +6 -4
  332. package/dist/src/prompts/snippets.legacy.js +36 -7
  333. package/dist/src/prompts/snippets.legacy.js.map +1 -1
  334. package/dist/src/prompts/utils.test.js +7 -5
  335. package/dist/src/prompts/utils.test.js.map +1 -1
  336. package/dist/src/safety/built-in.js +1 -1
  337. package/dist/src/safety/built-in.js.map +1 -1
  338. package/dist/src/sandbox/linux/LinuxSandboxManager.d.ts +11 -1
  339. package/dist/src/sandbox/linux/LinuxSandboxManager.js +131 -41
  340. package/dist/src/sandbox/linux/LinuxSandboxManager.js.map +1 -1
  341. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js +82 -139
  342. package/dist/src/sandbox/linux/LinuxSandboxManager.test.js.map +1 -1
  343. package/dist/src/sandbox/linux/bwrapArgsBuilder.d.ts +24 -0
  344. package/dist/src/sandbox/linux/bwrapArgsBuilder.js +200 -0
  345. package/dist/src/sandbox/linux/bwrapArgsBuilder.js.map +1 -0
  346. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.d.ts +6 -0
  347. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js +247 -0
  348. package/dist/src/sandbox/linux/bwrapArgsBuilder.test.js.map +1 -0
  349. package/dist/src/sandbox/macos/MacOsSandboxManager.d.ts +10 -22
  350. package/dist/src/sandbox/macos/MacOsSandboxManager.js +67 -59
  351. package/dist/src/sandbox/macos/MacOsSandboxManager.js.map +1 -1
  352. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js +168 -103
  353. package/dist/src/sandbox/macos/MacOsSandboxManager.test.js.map +1 -1
  354. package/dist/src/sandbox/macos/baseProfile.d.ts +1 -1
  355. package/dist/src/sandbox/macos/baseProfile.js +26 -8
  356. package/dist/src/sandbox/macos/baseProfile.js.map +1 -1
  357. package/dist/src/sandbox/macos/seatbeltArgsBuilder.d.ts +10 -10
  358. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js +81 -93
  359. package/dist/src/sandbox/macos/seatbeltArgsBuilder.js.map +1 -1
  360. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js +136 -99
  361. package/dist/src/sandbox/macos/seatbeltArgsBuilder.test.js.map +1 -1
  362. package/dist/src/sandbox/{macos → utils}/commandSafety.d.ts +11 -0
  363. package/dist/src/sandbox/{macos → utils}/commandSafety.js +47 -14
  364. package/dist/src/sandbox/utils/commandSafety.js.map +1 -0
  365. package/dist/src/sandbox/utils/commandUtils.d.ts +9 -0
  366. package/dist/src/sandbox/utils/commandUtils.js +57 -0
  367. package/dist/src/sandbox/utils/commandUtils.js.map +1 -0
  368. package/dist/src/sandbox/utils/fsUtils.d.ts +11 -0
  369. package/dist/src/sandbox/utils/fsUtils.js +84 -0
  370. package/dist/src/sandbox/utils/fsUtils.js.map +1 -0
  371. package/dist/src/sandbox/utils/fsUtils.test.d.ts +6 -0
  372. package/dist/src/sandbox/utils/fsUtils.test.js +43 -0
  373. package/dist/src/sandbox/utils/fsUtils.test.js.map +1 -0
  374. package/dist/src/sandbox/utils/proactivePermissions.d.ts +19 -0
  375. package/dist/src/sandbox/utils/proactivePermissions.js +163 -0
  376. package/dist/src/sandbox/utils/proactivePermissions.js.map +1 -0
  377. package/dist/src/sandbox/utils/proactivePermissions.test.d.ts +6 -0
  378. package/dist/src/sandbox/utils/proactivePermissions.test.js +145 -0
  379. package/dist/src/sandbox/utils/proactivePermissions.test.js.map +1 -0
  380. package/dist/src/sandbox/utils/sandboxDenialUtils.d.ts +27 -0
  381. package/dist/src/sandbox/utils/sandboxDenialUtils.js +142 -0
  382. package/dist/src/sandbox/utils/sandboxDenialUtils.js.map +1 -0
  383. package/dist/src/sandbox/utils/sandboxDenialUtils.test.d.ts +6 -0
  384. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js +188 -0
  385. package/dist/src/sandbox/utils/sandboxDenialUtils.test.js.map +1 -0
  386. package/dist/src/sandbox/utils/sandboxReadWriteUtils.d.ts +5 -0
  387. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js +64 -0
  388. package/dist/src/sandbox/utils/sandboxReadWriteUtils.js.map +1 -0
  389. package/dist/src/sandbox/windows/GeminiSandbox.cs +312 -223
  390. package/dist/src/sandbox/windows/WindowsSandboxManager.d.ts +16 -2
  391. package/dist/src/sandbox/windows/WindowsSandboxManager.js +261 -44
  392. package/dist/src/sandbox/windows/WindowsSandboxManager.js.map +1 -1
  393. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js +379 -17
  394. package/dist/src/sandbox/windows/WindowsSandboxManager.test.js.map +1 -1
  395. package/dist/src/sandbox/windows/commandSafety.d.ts +19 -0
  396. package/dist/src/sandbox/windows/commandSafety.js +128 -0
  397. package/dist/src/sandbox/windows/commandSafety.js.map +1 -0
  398. package/dist/src/sandbox/windows/commandSafety.test.d.ts +6 -0
  399. package/dist/src/sandbox/windows/commandSafety.test.js +42 -0
  400. package/dist/src/sandbox/windows/commandSafety.test.js.map +1 -0
  401. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.d.ts +13 -0
  402. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js +69 -0
  403. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.js.map +1 -0
  404. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.d.ts +6 -0
  405. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js +68 -0
  406. package/dist/src/sandbox/windows/windowsSandboxDenialUtils.test.js.map +1 -0
  407. package/dist/src/scheduler/policy.js +20 -5
  408. package/dist/src/scheduler/policy.js.map +1 -1
  409. package/dist/src/scheduler/policy.test.js +80 -0
  410. package/dist/src/scheduler/policy.test.js.map +1 -1
  411. package/dist/src/scheduler/scheduler.js +13 -3
  412. package/dist/src/scheduler/scheduler.js.map +1 -1
  413. package/dist/src/scheduler/scheduler.test.js +52 -0
  414. package/dist/src/scheduler/scheduler.test.js.map +1 -1
  415. package/dist/src/scheduler/scheduler_hooks.test.js +1 -0
  416. package/dist/src/scheduler/scheduler_hooks.test.js.map +1 -1
  417. package/dist/src/scheduler/state-manager.js +1 -1
  418. package/dist/src/scheduler/state-manager.js.map +1 -1
  419. package/dist/src/scheduler/state-manager.test.js +10 -0
  420. package/dist/src/scheduler/state-manager.test.js.map +1 -1
  421. package/dist/src/scheduler/tool-executor.js +7 -2
  422. package/dist/src/scheduler/tool-executor.js.map +1 -1
  423. package/dist/src/scheduler/tool-executor.test.js +38 -0
  424. package/dist/src/scheduler/tool-executor.test.js.map +1 -1
  425. package/dist/src/scheduler/types.d.ts +4 -2
  426. package/dist/src/services/chatRecordingService.d.ts +1 -13
  427. package/dist/src/services/chatRecordingService.js +45 -46
  428. package/dist/src/services/chatRecordingService.js.map +1 -1
  429. package/dist/src/services/chatRecordingService.test.js +79 -10
  430. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  431. package/dist/src/services/executionLifecycleService.d.ts +44 -6
  432. package/dist/src/services/executionLifecycleService.js +52 -12
  433. package/dist/src/services/executionLifecycleService.js.map +1 -1
  434. package/dist/src/services/executionLifecycleService.test.js +157 -3
  435. package/dist/src/services/executionLifecycleService.test.js.map +1 -1
  436. package/dist/src/services/fileDiscoveryService.d.ts +17 -2
  437. package/dist/src/services/fileDiscoveryService.js +84 -20
  438. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  439. package/dist/src/services/fileDiscoveryService.test.js +67 -1
  440. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  441. package/dist/src/services/gitService.js +1 -1
  442. package/dist/src/services/gitService.js.map +1 -1
  443. package/dist/src/services/memoryService.d.ts +65 -0
  444. package/dist/src/services/memoryService.js +511 -0
  445. package/dist/src/services/memoryService.js.map +1 -0
  446. package/dist/src/services/memoryService.test.d.ts +6 -0
  447. package/dist/src/services/memoryService.test.js +563 -0
  448. package/dist/src/services/memoryService.test.js.map +1 -0
  449. package/dist/src/services/modelConfigService.d.ts +11 -0
  450. package/dist/src/services/modelConfigService.js +67 -0
  451. package/dist/src/services/modelConfigService.js.map +1 -1
  452. package/dist/src/services/modelConfigService.test.js +30 -0
  453. package/dist/src/services/modelConfigService.test.js.map +1 -1
  454. package/dist/src/services/sandboxManager.d.ts +107 -8
  455. package/dist/src/services/sandboxManager.integration.test.d.ts +1 -0
  456. package/dist/src/services/sandboxManager.integration.test.js +445 -0
  457. package/dist/src/services/sandboxManager.integration.test.js.map +1 -0
  458. package/dist/src/services/sandboxManager.js +176 -13
  459. package/dist/src/services/sandboxManager.js.map +1 -1
  460. package/dist/src/services/sandboxManager.test.js +401 -117
  461. package/dist/src/services/sandboxManager.test.js.map +1 -1
  462. package/dist/src/services/sandboxManagerFactory.d.ts +2 -3
  463. package/dist/src/services/sandboxManagerFactory.js +12 -22
  464. package/dist/src/services/sandboxManagerFactory.js.map +1 -1
  465. package/dist/src/services/sandboxedFileSystemService.d.ts +1 -0
  466. package/dist/src/services/sandboxedFileSystemService.js +43 -3
  467. package/dist/src/services/sandboxedFileSystemService.js.map +1 -1
  468. package/dist/src/services/sandboxedFileSystemService.test.js +97 -11
  469. package/dist/src/services/sandboxedFileSystemService.test.js.map +1 -1
  470. package/dist/src/services/shellExecutionService.d.ts +18 -1
  471. package/dist/src/services/shellExecutionService.js +115 -26
  472. package/dist/src/services/shellExecutionService.js.map +1 -1
  473. package/dist/src/services/shellExecutionService.test.js +70 -8
  474. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  475. package/dist/src/services/test-data/resolved-aliases-retry.golden.json +4 -0
  476. package/dist/src/services/test-data/resolved-aliases.golden.json +4 -0
  477. package/dist/src/services/worktreeService.test.js +7 -7
  478. package/dist/src/services/worktreeService.test.js.map +1 -1
  479. package/dist/src/skills/skillLoader.d.ts +8 -0
  480. package/dist/src/skills/skillLoader.js +1 -1
  481. package/dist/src/skills/skillLoader.js.map +1 -1
  482. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +29 -1
  483. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +107 -0
  484. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  485. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +172 -1
  486. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  487. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +10 -1
  488. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +22 -1
  489. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  490. package/dist/src/telemetry/loggers.d.ts +22 -0
  491. package/dist/src/telemetry/loggers.js +41 -2
  492. package/dist/src/telemetry/loggers.js.map +1 -1
  493. package/dist/src/telemetry/loggers.test.js +8 -3
  494. package/dist/src/telemetry/loggers.test.js.map +1 -1
  495. package/dist/src/telemetry/metrics.d.ts +118 -1
  496. package/dist/src/telemetry/metrics.js +196 -4
  497. package/dist/src/telemetry/metrics.js.map +1 -1
  498. package/dist/src/telemetry/metrics.test.js +298 -0
  499. package/dist/src/telemetry/metrics.test.js.map +1 -1
  500. package/dist/src/telemetry/types.d.ts +3 -3
  501. package/dist/src/telemetry/types.js +9 -4
  502. package/dist/src/telemetry/types.js.map +1 -1
  503. package/dist/src/test-utils/mock-message-bus.d.ts +1 -1
  504. package/dist/src/test-utils/mock-message-bus.js +1 -1
  505. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  506. package/dist/src/tools/complete-task.d.ts +29 -0
  507. package/dist/src/tools/complete-task.js +123 -0
  508. package/dist/src/tools/complete-task.js.map +1 -0
  509. package/dist/src/tools/complete-task.test.d.ts +6 -0
  510. package/dist/src/tools/complete-task.test.js +114 -0
  511. package/dist/src/tools/complete-task.test.js.map +1 -0
  512. package/dist/src/tools/definitions/base-declarations.d.ts +8 -0
  513. package/dist/src/tools/definitions/base-declarations.js +10 -0
  514. package/dist/src/tools/definitions/base-declarations.js.map +1 -1
  515. package/dist/src/tools/definitions/coreTools.d.ts +2 -1
  516. package/dist/src/tools/definitions/coreTools.js +9 -3
  517. package/dist/src/tools/definitions/coreTools.js.map +1 -1
  518. package/dist/src/tools/definitions/dynamic-declaration-helpers.d.ts +4 -0
  519. package/dist/src/tools/definitions/dynamic-declaration-helpers.js +33 -2
  520. package/dist/src/tools/definitions/dynamic-declaration-helpers.js.map +1 -1
  521. package/dist/src/tools/definitions/model-family-sets/default-legacy.js +14 -9
  522. package/dist/src/tools/definitions/model-family-sets/default-legacy.js.map +1 -1
  523. package/dist/src/tools/definitions/model-family-sets/gemini-3.js +13 -7
  524. package/dist/src/tools/definitions/model-family-sets/gemini-3.js.map +1 -1
  525. package/dist/src/tools/definitions/trackerTools.js +3 -3
  526. package/dist/src/tools/definitions/trackerTools.js.map +1 -1
  527. package/dist/src/tools/definitions/types.d.ts +1 -0
  528. package/dist/src/tools/enter-plan-mode.js +15 -0
  529. package/dist/src/tools/enter-plan-mode.js.map +1 -1
  530. package/dist/src/tools/enter-plan-mode.test.js +25 -0
  531. package/dist/src/tools/enter-plan-mode.test.js.map +1 -1
  532. package/dist/src/tools/grep-utils.d.ts +2 -1
  533. package/dist/src/tools/grep-utils.js +22 -3
  534. package/dist/src/tools/grep-utils.js.map +1 -1
  535. package/dist/src/tools/grep.js +16 -3
  536. package/dist/src/tools/grep.js.map +1 -1
  537. package/dist/src/tools/grep.test.js +36 -8
  538. package/dist/src/tools/grep.test.js.map +1 -1
  539. package/dist/src/tools/jit-context.js +3 -3
  540. package/dist/src/tools/jit-context.js.map +1 -1
  541. package/dist/src/tools/jit-context.test.js +15 -13
  542. package/dist/src/tools/jit-context.test.js.map +1 -1
  543. package/dist/src/tools/ls.js +6 -4
  544. package/dist/src/tools/ls.js.map +1 -1
  545. package/dist/src/tools/ls.test.js +22 -7
  546. package/dist/src/tools/ls.test.js.map +1 -1
  547. package/dist/src/tools/mcp-client-manager.js +6 -3
  548. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  549. package/dist/src/tools/mcp-client-manager.test.js +35 -0
  550. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  551. package/dist/src/tools/mcp-client.js +1 -1
  552. package/dist/src/tools/mcp-client.js.map +1 -1
  553. package/dist/src/tools/mcp-tool.test.js +1 -1
  554. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  555. package/dist/src/tools/memoryTool.d.ts +9 -2
  556. package/dist/src/tools/memoryTool.js +39 -15
  557. package/dist/src/tools/memoryTool.js.map +1 -1
  558. package/dist/src/tools/memoryTool.test.js +61 -2
  559. package/dist/src/tools/memoryTool.test.js.map +1 -1
  560. package/dist/src/tools/read-many-files.js +12 -4
  561. package/dist/src/tools/read-many-files.js.map +1 -1
  562. package/dist/src/tools/read-many-files.test.js +17 -17
  563. package/dist/src/tools/read-many-files.test.js.map +1 -1
  564. package/dist/src/tools/ripGrep.js +14 -1
  565. package/dist/src/tools/ripGrep.js.map +1 -1
  566. package/dist/src/tools/ripGrep.test.js +10 -10
  567. package/dist/src/tools/ripGrep.test.js.map +1 -1
  568. package/dist/src/tools/shell.d.ts +17 -4
  569. package/dist/src/tools/shell.js +342 -151
  570. package/dist/src/tools/shell.js.map +1 -1
  571. package/dist/src/tools/shell.test.js +204 -11
  572. package/dist/src/tools/shell.test.js.map +1 -1
  573. package/dist/src/tools/shellBackgroundTools.d.ts +38 -0
  574. package/dist/src/tools/shellBackgroundTools.integration.test.d.ts +6 -0
  575. package/dist/src/tools/shellBackgroundTools.integration.test.js +86 -0
  576. package/dist/src/tools/shellBackgroundTools.integration.test.js.map +1 -0
  577. package/dist/src/tools/shellBackgroundTools.js +186 -0
  578. package/dist/src/tools/shellBackgroundTools.js.map +1 -0
  579. package/dist/src/tools/shellBackgroundTools.test.d.ts +6 -0
  580. package/dist/src/tools/shellBackgroundTools.test.js +230 -0
  581. package/dist/src/tools/shellBackgroundTools.test.js.map +1 -0
  582. package/dist/src/tools/shell_proactive.test.d.ts +6 -0
  583. package/dist/src/tools/shell_proactive.test.js +122 -0
  584. package/dist/src/tools/shell_proactive.test.js.map +1 -0
  585. package/dist/src/tools/tool-names.d.ts +4 -4
  586. package/dist/src/tools/tool-names.js +6 -3
  587. package/dist/src/tools/tool-names.js.map +1 -1
  588. package/dist/src/tools/tool-registry.js +11 -1
  589. package/dist/src/tools/tool-registry.js.map +1 -1
  590. package/dist/src/tools/tool-registry.test.js +43 -1
  591. package/dist/src/tools/tool-registry.test.js.map +1 -1
  592. package/dist/src/tools/tools.d.ts +12 -1
  593. package/dist/src/tools/tools.js +16 -1
  594. package/dist/src/tools/tools.js.map +1 -1
  595. package/dist/src/tools/tools.test.js +42 -1
  596. package/dist/src/tools/tools.test.js.map +1 -1
  597. package/dist/src/tools/topicTool.d.ts +29 -0
  598. package/dist/src/tools/topicTool.js +72 -0
  599. package/dist/src/tools/topicTool.js.map +1 -0
  600. package/dist/src/tools/topicTool.test.d.ts +6 -0
  601. package/dist/src/tools/topicTool.test.js +105 -0
  602. package/dist/src/tools/topicTool.test.js.map +1 -0
  603. package/dist/src/tools/web-fetch.js +40 -22
  604. package/dist/src/tools/web-fetch.js.map +1 -1
  605. package/dist/src/tools/web-fetch.test.js +28 -0
  606. package/dist/src/tools/web-fetch.test.js.map +1 -1
  607. package/dist/src/tools/xcode-mcp-fix-transport.js +1 -1
  608. package/dist/src/tools/xcode-mcp-fix-transport.js.map +1 -1
  609. package/dist/src/utils/bfsFileSearch.js +3 -6
  610. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  611. package/dist/src/utils/checkpointUtils.d.ts +4 -4
  612. package/dist/src/utils/checkpointUtils.js +11 -8
  613. package/dist/src/utils/checkpointUtils.js.map +1 -1
  614. package/dist/src/utils/compatibility.js +0 -7
  615. package/dist/src/utils/compatibility.js.map +1 -1
  616. package/dist/src/utils/compatibility.test.js +0 -9
  617. package/dist/src/utils/compatibility.test.js.map +1 -1
  618. package/dist/src/utils/editor.js +3 -0
  619. package/dist/src/utils/editor.js.map +1 -1
  620. package/dist/src/utils/errorParsing.js +2 -2
  621. package/dist/src/utils/errorParsing.js.map +1 -1
  622. package/dist/src/utils/errors.d.ts +3 -0
  623. package/dist/src/utils/errors.js +28 -6
  624. package/dist/src/utils/errors.js.map +1 -1
  625. package/dist/src/utils/errors.test.js +23 -0
  626. package/dist/src/utils/errors.test.js.map +1 -1
  627. package/dist/src/utils/events.d.ts +12 -0
  628. package/dist/src/utils/events.js +7 -0
  629. package/dist/src/utils/events.js.map +1 -1
  630. package/dist/src/utils/fetch.d.ts +1 -0
  631. package/dist/src/utils/fetch.js +22 -6
  632. package/dist/src/utils/fetch.js.map +1 -1
  633. package/dist/src/utils/fetch.test.js +26 -1
  634. package/dist/src/utils/fetch.test.js.map +1 -1
  635. package/dist/src/utils/fileUtils.js +1 -1
  636. package/dist/src/utils/fileUtils.js.map +1 -1
  637. package/dist/src/utils/filesearch/crawler.js +1 -1
  638. package/dist/src/utils/filesearch/crawler.js.map +1 -1
  639. package/dist/src/utils/filesearch/fileSearch.test.js +7 -2
  640. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  641. package/dist/src/utils/getFolderStructure.js +1 -1
  642. package/dist/src/utils/getFolderStructure.js.map +1 -1
  643. package/dist/src/utils/getPty.js +2 -2
  644. package/dist/src/utils/getPty.js.map +1 -1
  645. package/dist/src/utils/gitIgnoreParser.d.ts +2 -2
  646. package/dist/src/utils/gitIgnoreParser.js +30 -52
  647. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  648. package/dist/src/utils/gitIgnoreParser.test.js +51 -185
  649. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  650. package/dist/src/utils/gitUtils.js +2 -2
  651. package/dist/src/utils/gitUtils.js.map +1 -1
  652. package/dist/src/utils/googleErrors.js +5 -5
  653. package/dist/src/utils/googleErrors.js.map +1 -1
  654. package/dist/src/utils/ignoreFileParser.d.ts +2 -2
  655. package/dist/src/utils/ignoreFileParser.js +7 -18
  656. package/dist/src/utils/ignoreFileParser.js.map +1 -1
  657. package/dist/src/utils/ignoreFileParser.test.js +40 -132
  658. package/dist/src/utils/ignoreFileParser.test.js.map +1 -1
  659. package/dist/src/utils/ignorePathUtils.d.ts +11 -0
  660. package/dist/src/utils/ignorePathUtils.js +39 -0
  661. package/dist/src/utils/ignorePathUtils.js.map +1 -0
  662. package/dist/src/utils/ignorePathUtils.test.d.ts +6 -0
  663. package/dist/src/utils/ignorePathUtils.test.js +70 -0
  664. package/dist/src/utils/ignorePathUtils.test.js.map +1 -0
  665. package/dist/src/utils/memoryDiscovery.d.ts +6 -4
  666. package/dist/src/utils/memoryDiscovery.js +69 -48
  667. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  668. package/dist/src/utils/memoryDiscovery.test.js +40 -0
  669. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  670. package/dist/src/utils/memoryImportProcessor.d.ts +1 -1
  671. package/dist/src/utils/memoryImportProcessor.js +24 -15
  672. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  673. package/dist/src/utils/paths.d.ts +8 -0
  674. package/dist/src/utils/paths.js +37 -6
  675. package/dist/src/utils/paths.js.map +1 -1
  676. package/dist/src/utils/paths.test.js +61 -3
  677. package/dist/src/utils/paths.test.js.map +1 -1
  678. package/dist/src/utils/process-utils.js +2 -2
  679. package/dist/src/utils/process-utils.js.map +1 -1
  680. package/dist/src/utils/retry.js +7 -0
  681. package/dist/src/utils/retry.js.map +1 -1
  682. package/dist/src/utils/retry.test.js +41 -0
  683. package/dist/src/utils/retry.test.js.map +1 -1
  684. package/dist/src/utils/secure-browser-launcher.js +1 -1
  685. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  686. package/dist/src/utils/sessionOperations.d.ts +19 -0
  687. package/dist/src/utils/sessionOperations.js +101 -0
  688. package/dist/src/utils/sessionOperations.js.map +1 -0
  689. package/dist/src/utils/sessionOperations.test.d.ts +6 -0
  690. package/dist/src/utils/sessionOperations.test.js +92 -0
  691. package/dist/src/utils/sessionOperations.test.js.map +1 -0
  692. package/dist/src/utils/shell-utils.d.ts +24 -0
  693. package/dist/src/utils/shell-utils.integration.test.js +1 -1
  694. package/dist/src/utils/shell-utils.integration.test.js.map +1 -1
  695. package/dist/src/utils/shell-utils.js +86 -6
  696. package/dist/src/utils/shell-utils.js.map +1 -1
  697. package/dist/src/utils/shell-utils.test.js +13 -1
  698. package/dist/src/utils/shell-utils.test.js.map +1 -1
  699. package/dist/src/utils/systemEncoding.js +1 -1
  700. package/dist/src/utils/systemEncoding.js.map +1 -1
  701. package/dist/src/utils/terminalSerializer.d.ts +1 -0
  702. package/dist/src/utils/terminalSerializer.js +31 -8
  703. package/dist/src/utils/terminalSerializer.js.map +1 -1
  704. package/dist/src/utils/terminalSerializer.test.js +3 -2
  705. package/dist/src/utils/terminalSerializer.test.js.map +1 -1
  706. package/dist/src/utils/textUtils.d.ts +8 -0
  707. package/dist/src/utils/textUtils.js +16 -0
  708. package/dist/src/utils/textUtils.js.map +1 -1
  709. package/dist/src/utils/tokenCalculation.d.ts +2 -0
  710. package/dist/src/utils/tokenCalculation.js +2 -2
  711. package/dist/src/utils/tokenCalculation.js.map +1 -1
  712. package/dist/src/utils/workspaceContext.js +2 -2
  713. package/dist/src/utils/workspaceContext.js.map +1 -1
  714. package/dist/tsconfig.tsbuildinfo +1 -1
  715. package/package.json +2 -1
  716. package/dist/docs/CONTRIBUTING.md +0 -566
  717. package/dist/docs/get-started/examples.md +0 -141
  718. package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js +0 -164
  719. package/dist/src/sandbox/macos/MacOsSandboxManager.integration.test.js.map +0 -1
  720. package/dist/src/sandbox/macos/commandSafety.js.map +0 -1
  721. package/dist/src/services/chatCompressionService.js.map +0 -1
  722. package/dist/src/services/chatCompressionService.test.js.map +0 -1
  723. package/dist/src/services/contextManager.js.map +0 -1
  724. package/dist/src/services/contextManager.test.js.map +0 -1
  725. package/dist/src/services/toolOutputMaskingService.js.map +0 -1
  726. package/dist/src/services/toolOutputMaskingService.test.js.map +0 -1
  727. /package/dist/src/{services/toolOutputMaskingService.test.d.ts → agents/browser/snapshotSuperseder.test.d.ts} +0 -0
  728. /package/dist/src/{services → context}/chatCompressionService.d.ts +0 -0
  729. /package/dist/src/{services → context}/chatCompressionService.js +0 -0
  730. /package/dist/src/{services → context}/chatCompressionService.test.d.ts +0 -0
  731. /package/dist/src/{services → context}/chatCompressionService.test.js +0 -0
  732. /package/dist/src/{sandbox/macos/MacOsSandboxManager.integration.test.d.ts → context/contextCompressionService.test.d.ts} +0 -0
  733. /package/dist/src/{services/contextManager.test.d.ts → context/memoryContextManager.test.d.ts} +0 -0
@@ -13,6 +13,8 @@ import { createAnalyzeScreenshotTool } from './analyzeScreenshot.js';
13
13
  import { injectAutomationOverlay } from './automationOverlay.js';
14
14
  import { injectInputBlocker } from './inputBlocker.js';
15
15
  import { debugLogger } from '../../utils/debugLogger.js';
16
+ import { recordBrowserAgentToolDiscovery } from '../../telemetry/metrics.js';
17
+ import { logBrowserAgentVisionStatus, logBrowserAgentCleanup, } from '../../telemetry/loggers.js';
16
18
  import { PolicyDecision, PRIORITY_SUBAGENT_TOOL, } from '../../policy/types.js';
17
19
  /**
18
20
  * Creates a browser agent definition with MCP tools configured.
@@ -26,161 +28,201 @@ import { PolicyDecision, PRIORITY_SUBAGENT_TOOL, } from '../../policy/types.js';
26
28
  * @param printOutput Optional callback for progress messages
27
29
  * @returns Fully configured LocalAgentDefinition with MCP tools
28
30
  */
29
- export async function createBrowserAgentDefinition(config, messageBus, printOutput) {
31
+ export async function createBrowserAgentDefinition(config, messageBus, _printOutput) {
30
32
  debugLogger.log('Creating browser agent definition with isolated MCP tools...');
31
- // Create and initialize browser manager with isolated MCP client
32
- const browserManager = new BrowserManager(config);
33
- await browserManager.ensureConnection();
34
- if (printOutput) {
35
- printOutput('Browser connected with isolated MCP client.');
36
- }
37
- // Determine if input blocker should be active (non-headless + enabled)
38
- const shouldDisableInput = config.shouldDisableBrowserUserInput();
39
- // Inject automation overlay and input blocker if not in headless mode
40
- const browserConfig = config.getBrowserAgentConfig();
41
- if (!browserConfig?.customConfig?.headless) {
42
- if (printOutput) {
43
- printOutput('Injecting automation overlay...');
33
+ // Get or create browser manager singleton for this session mode/profile
34
+ const browserManager = BrowserManager.getInstance(config);
35
+ browserManager.acquire();
36
+ try {
37
+ await browserManager.ensureConnection();
38
+ debugLogger.log('Browser connected with isolated MCP client.');
39
+ // Determine if input blocker should be active (non-headless + enabled)
40
+ const shouldDisableInput = config.shouldDisableBrowserUserInput();
41
+ // Inject automation overlay and input blocker if not in headless mode
42
+ const browserConfig = config.getBrowserAgentConfig();
43
+ if (!browserConfig?.customConfig?.headless) {
44
+ debugLogger.log('Injecting automation overlay...');
45
+ await injectAutomationOverlay(browserManager);
46
+ if (shouldDisableInput) {
47
+ debugLogger.log('Injecting input blocker...');
48
+ await injectInputBlocker(browserManager);
49
+ }
44
50
  }
45
- await injectAutomationOverlay(browserManager);
46
- if (shouldDisableInput) {
47
- if (printOutput) {
48
- printOutput('Injecting input blocker...');
51
+ // Create declarative tools from dynamically discovered MCP tools
52
+ // These tools dispatch to browserManager's isolated client
53
+ const mcpTools = await createMcpDeclarativeTools(browserManager, messageBus, shouldDisableInput, browserConfig.customConfig.blockFileUploads);
54
+ const availableToolNames = mcpTools.map((t) => t.name);
55
+ // Register high-priority policy rules for sensitive actions which is not
56
+ // able to be overwrite by YOLO mode.
57
+ const policyEngine = config.getPolicyEngine();
58
+ if (policyEngine) {
59
+ const existingRules = policyEngine.getRules();
60
+ const restrictedTools = ['fill', 'fill_form'];
61
+ // ASK_USER for upload_file and evaluate_script when sensitive action
62
+ // need confirmation.
63
+ if (browserConfig.customConfig.confirmSensitiveActions) {
64
+ restrictedTools.push('upload_file', 'evaluate_script');
65
+ }
66
+ for (const toolName of restrictedTools) {
67
+ const rule = generateAskUserRules(toolName);
68
+ if (!existingRules.some((r) => isRuleEqual(r, rule))) {
69
+ policyEngine.addRule(rule);
70
+ }
71
+ }
72
+ // Reduce noise for read-only tools in default mode
73
+ const readOnlyTools = (await browserManager.getDiscoveredTools())
74
+ .filter((t) => !!t.annotations?.readOnlyHint)
75
+ .map((t) => t.name);
76
+ const allowlistedReadonlyTools = ['take_snapshot', 'take_screenshot'];
77
+ for (const toolName of [...readOnlyTools, ...allowlistedReadonlyTools]) {
78
+ if (availableToolNames.includes(toolName)) {
79
+ const rule = generateAllowRules(toolName);
80
+ if (!existingRules.some((r) => isRuleEqual(r, rule))) {
81
+ policyEngine.addRule(rule);
82
+ }
83
+ }
49
84
  }
50
- await injectInputBlocker(browserManager);
51
85
  }
52
- }
53
- // Create declarative tools from dynamically discovered MCP tools
54
- // These tools dispatch to browserManager's isolated client
55
- const mcpTools = await createMcpDeclarativeTools(browserManager, messageBus, shouldDisableInput, browserConfig.customConfig.blockFileUploads);
56
- const availableToolNames = mcpTools.map((t) => t.name);
57
- // Register high-priority policy rules for sensitive actions which is not
58
- // able to be overwrite by YOLO mode.
59
- const policyEngine = config.getPolicyEngine();
60
- if (policyEngine) {
61
- const existingRules = policyEngine.getRules();
62
- const restrictedTools = ['fill', 'fill_form'];
63
- // ASK_USER for upload_file and evaluate_script when sensitive action
64
- // need confirmation.
65
- if (browserConfig.customConfig.confirmSensitiveActions) {
66
- restrictedTools.push('upload_file', 'evaluate_script');
86
+ function generateAskUserRules(toolName) {
87
+ return {
88
+ toolName: `${MCP_TOOL_PREFIX}${BROWSER_AGENT_NAME}_${toolName}`,
89
+ decision: PolicyDecision.ASK_USER,
90
+ priority: 999,
91
+ source: 'BrowserAgent (Sensitive Actions)',
92
+ mcpName: BROWSER_AGENT_NAME,
93
+ };
67
94
  }
68
- for (const toolName of restrictedTools) {
69
- const rule = generateAskUserRules(toolName);
70
- if (!existingRules.some((r) => isRuleEqual(r, rule))) {
71
- policyEngine.addRule(rule);
72
- }
95
+ function generateAllowRules(toolName) {
96
+ return {
97
+ toolName: `${MCP_TOOL_PREFIX}${BROWSER_AGENT_NAME}_${toolName}`,
98
+ decision: PolicyDecision.ALLOW,
99
+ priority: PRIORITY_SUBAGENT_TOOL,
100
+ source: 'BrowserAgent (Read-Only)',
101
+ mcpName: BROWSER_AGENT_NAME,
102
+ };
103
+ }
104
+ // Check if policy rule the same in all the attributes that we care about
105
+ function isRuleEqual(rule1, rule2) {
106
+ return (rule1.toolName === rule2.toolName &&
107
+ rule1.decision === rule2.decision &&
108
+ rule1.priority === rule2.priority &&
109
+ rule1.mcpName === rule2.mcpName);
73
110
  }
74
- // Reduce noise for read-only tools in default mode
75
- const readOnlyTools = [
111
+ // Validate required semantic tools are available
112
+ const requiredSemanticTools = [
113
+ 'click',
114
+ 'fill',
115
+ 'navigate_page',
76
116
  'take_snapshot',
77
- 'take_screenshot',
78
- 'list_pages',
79
- 'list_network_requests',
80
117
  ];
81
- for (const toolName of readOnlyTools) {
82
- if (availableToolNames.includes(toolName)) {
83
- const rule = generateAllowRules(toolName);
84
- if (!existingRules.some((r) => isRuleEqual(r, rule))) {
85
- policyEngine.addRule(rule);
86
- }
118
+ const missingSemanticTools = requiredSemanticTools.filter((t) => !availableToolNames.includes(t));
119
+ const rawSessionMode = browserConfig?.customConfig?.sessionMode;
120
+ const sessionMode = rawSessionMode === 'isolated' || rawSessionMode === 'existing'
121
+ ? rawSessionMode
122
+ : 'persistent';
123
+ recordBrowserAgentToolDiscovery(config, mcpTools.length, missingSemanticTools, sessionMode);
124
+ if (missingSemanticTools.length > 0) {
125
+ debugLogger.warn(`Semantic tools missing (${missingSemanticTools.join(', ')}). ` +
126
+ 'Some browser interactions may not work correctly.');
127
+ }
128
+ // Only click_at is strictly required — text input can use press_key or fill.
129
+ const requiredVisualTools = ['click_at'];
130
+ const missingVisualTools = requiredVisualTools.filter((t) => !availableToolNames.includes(t));
131
+ // Check whether vision can be enabled; returns structured type with code and message.
132
+ function getVisionDisabledReason() {
133
+ const browserConfig = config.getBrowserAgentConfig();
134
+ if (!browserConfig.customConfig.visualModel) {
135
+ return {
136
+ code: 'no_visual_model',
137
+ message: 'No visualModel configured.',
138
+ };
139
+ }
140
+ if (missingVisualTools.length > 0) {
141
+ return {
142
+ code: 'missing_visual_tools',
143
+ message: `Visual tools missing (${missingVisualTools.join(', ')}). ` +
144
+ `The installed chrome-devtools-mcp version may be too old.`,
145
+ };
146
+ }
147
+ const authType = config.getContentGeneratorConfig()?.authType;
148
+ const blockedAuthTypes = new Set([
149
+ AuthType.LOGIN_WITH_GOOGLE,
150
+ AuthType.LEGACY_CLOUD_SHELL,
151
+ AuthType.COMPUTE_ADC,
152
+ ]);
153
+ if (authType && blockedAuthTypes.has(authType)) {
154
+ return {
155
+ code: 'blocked_auth_type',
156
+ message: 'Visual agent model not available for current auth type.',
157
+ };
87
158
  }
159
+ return undefined;
88
160
  }
89
- }
90
- function generateAskUserRules(toolName) {
91
- return {
92
- toolName: `${MCP_TOOL_PREFIX}${BROWSER_AGENT_NAME}_${toolName}`,
93
- decision: PolicyDecision.ASK_USER,
94
- priority: 999,
95
- source: 'BrowserAgent (Sensitive Actions)',
96
- mcpName: BROWSER_AGENT_NAME,
161
+ const allTools = [...mcpTools];
162
+ const visionDisabledReason = getVisionDisabledReason();
163
+ logBrowserAgentVisionStatus(config, {
164
+ enabled: !visionDisabledReason,
165
+ disabled_reason: visionDisabledReason?.code,
166
+ });
167
+ if (visionDisabledReason) {
168
+ debugLogger.log(`Vision disabled: ${visionDisabledReason.message}`);
169
+ }
170
+ else {
171
+ allTools.push(createAnalyzeScreenshotTool(browserManager, config, messageBus));
172
+ }
173
+ debugLogger.log(`Created ${allTools.length} tools for browser agent: ` +
174
+ allTools.map((t) => t.name).join(', '));
175
+ // Create configured definition with tools
176
+ // BrowserAgentDefinition is a factory function - call it with config
177
+ const baseDefinition = BrowserAgentDefinition(config, !visionDisabledReason);
178
+ const definition = {
179
+ ...baseDefinition,
180
+ toolConfig: {
181
+ tools: allTools,
182
+ },
97
183
  };
98
- }
99
- function generateAllowRules(toolName) {
100
184
  return {
101
- toolName: `${MCP_TOOL_PREFIX}${BROWSER_AGENT_NAME}_${toolName}`,
102
- decision: PolicyDecision.ALLOW,
103
- priority: PRIORITY_SUBAGENT_TOOL,
104
- source: 'BrowserAgent (Read-Only)',
105
- mcpName: BROWSER_AGENT_NAME,
185
+ definition,
186
+ browserManager,
187
+ visionEnabled: !visionDisabledReason,
188
+ sessionMode,
106
189
  };
107
190
  }
108
- // Check if policy rule the same in all the attributes that we care about
109
- function isRuleEqual(rule1, rule2) {
110
- return (rule1.toolName === rule2.toolName &&
111
- rule1.decision === rule2.decision &&
112
- rule1.priority === rule2.priority &&
113
- rule1.mcpName === rule2.mcpName);
114
- }
115
- // Validate required semantic tools are available
116
- const requiredSemanticTools = [
117
- 'click',
118
- 'fill',
119
- 'navigate_page',
120
- 'take_snapshot',
121
- ];
122
- const missingSemanticTools = requiredSemanticTools.filter((t) => !availableToolNames.includes(t));
123
- if (missingSemanticTools.length > 0) {
124
- debugLogger.warn(`Semantic tools missing (${missingSemanticTools.join(', ')}). ` +
125
- 'Some browser interactions may not work correctly.');
126
- }
127
- // Only click_at is strictly required — text input can use press_key or fill.
128
- const requiredVisualTools = ['click_at'];
129
- const missingVisualTools = requiredVisualTools.filter((t) => !availableToolNames.includes(t));
130
- // Check whether vision can be enabled; returns undefined if all gates pass.
131
- function getVisionDisabledReason() {
132
- const browserConfig = config.getBrowserAgentConfig();
133
- if (!browserConfig.customConfig.visualModel) {
134
- return 'No visualModel configured.';
135
- }
136
- if (missingVisualTools.length > 0) {
137
- return (`Visual tools missing (${missingVisualTools.join(', ')}). ` +
138
- `The installed chrome-devtools-mcp version may be too old.`);
139
- }
140
- const authType = config.getContentGeneratorConfig()?.authType;
141
- const blockedAuthTypes = new Set([
142
- AuthType.LOGIN_WITH_GOOGLE,
143
- AuthType.LEGACY_CLOUD_SHELL,
144
- AuthType.COMPUTE_ADC,
145
- ]);
146
- if (authType && blockedAuthTypes.has(authType)) {
147
- return 'Visual agent model not available for current auth type.';
148
- }
149
- return undefined;
150
- }
151
- const allTools = [...mcpTools];
152
- const visionDisabledReason = getVisionDisabledReason();
153
- if (visionDisabledReason) {
154
- debugLogger.log(`Vision disabled: ${visionDisabledReason}`);
155
- }
156
- else {
157
- allTools.push(createAnalyzeScreenshotTool(browserManager, config, messageBus));
191
+ catch (error) {
192
+ // Release the browser manager if setup fails, so concurrent tasks can try again.
193
+ browserManager.release();
194
+ throw error;
158
195
  }
159
- debugLogger.log(`Created ${allTools.length} tools for browser agent: ` +
160
- allTools.map((t) => t.name).join(', '));
161
- // Create configured definition with tools
162
- // BrowserAgentDefinition is a factory function - call it with config
163
- const baseDefinition = BrowserAgentDefinition(config, !visionDisabledReason);
164
- const definition = {
165
- ...baseDefinition,
166
- toolConfig: {
167
- tools: allTools,
168
- },
169
- };
170
- return { definition, browserManager };
171
196
  }
172
197
  /**
173
- * Cleans up browser resources after agent execution.
198
+ * Closes all persistent browser sessions and cleans up resources.
174
199
  *
175
200
  * @param browserManager The browser manager to clean up
201
+ * @param config Runtime configuration
202
+ * @param sessionMode The browser session mode
176
203
  */
177
- export async function cleanupBrowserAgent(browserManager) {
204
+ export async function cleanupBrowserAgent(browserManager, config, sessionMode) {
205
+ const startMs = Date.now();
178
206
  try {
179
207
  await browserManager.close();
208
+ logBrowserAgentCleanup(config, Date.now() - startMs, {
209
+ session_mode: sessionMode,
210
+ success: true,
211
+ });
180
212
  debugLogger.log('Browser agent cleanup complete');
181
213
  }
182
214
  catch (error) {
215
+ logBrowserAgentCleanup(config, Date.now() - startMs, {
216
+ session_mode: sessionMode,
217
+ success: false,
218
+ });
183
219
  debugLogger.error(`Error during browser cleanup: ${error instanceof Error ? error.message : String(error)}`);
184
220
  }
185
221
  }
222
+ /**
223
+ * Call this on /clear commands and CLI exit to reset browser state.
224
+ */
225
+ export async function resetBrowserSession() {
226
+ await BrowserManager.resetAll();
227
+ }
186
228
  //# sourceMappingURL=browserAgentFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browserAgentFactory.js","sourceRoot":"","sources":["../../../../src/agents/browser/browserAgentFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EACL,cAAc,EACd,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAc,EACd,UAAsB,EACtB,WAAmC;IAKnC,WAAW,CAAC,GAAG,CACb,8DAA8D,CAC/D,CAAC;IAEF,iEAAiE;IACjE,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,cAAc,CAAC,gBAAgB,EAAE,CAAC;IAExC,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAED,uEAAuE;IACvE,MAAM,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,EAAE,CAAC;IAClE,sEAAsE;IACtE,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACrD,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QAC3C,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,uBAAuB,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,4BAA4B,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAC9C,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAC5C,CAAC;IACF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEvD,yEAAyE;IACzE,qCAAqC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;IAE9C,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAE9C,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE9C,qEAAqE;QACrE,qBAAqB;QACrB,IAAI,aAAa,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;YACvD,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QACzD,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBACrD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,MAAM,aAAa,GAAG;YACpB,eAAe;YACf,iBAAiB;YACjB,YAAY;YACZ,uBAAuB;SACxB,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;oBACrD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,oBAAoB,CAAC,QAAgB;QAC5C,OAAO;YACL,QAAQ,EAAE,GAAG,eAAe,GAAG,kBAAkB,IAAI,QAAQ,EAAE;YAC/D,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,kCAAkC;YAC1C,OAAO,EAAE,kBAAkB;SAC5B,CAAC;IACJ,CAAC;IAED,SAAS,kBAAkB,CAAC,QAAgB;QAC1C,OAAO;YACL,QAAQ,EAAE,GAAG,eAAe,GAAG,kBAAkB,IAAI,QAAQ,EAAE;YAC/D,QAAQ,EAAE,cAAc,CAAC,KAAK;YAC9B,QAAQ,EAAE,sBAAsB;YAChC,MAAM,EAAE,0BAA0B;YAClC,OAAO,EAAE,kBAAkB;SAC5B,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,SAAS,WAAW,CAAC,KAAiB,EAAE,KAAiB;QACvD,OAAO,CACL,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YACjC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YACjC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;YACjC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAChC,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,MAAM,qBAAqB,GAAG;QAC5B,OAAO;QACP,MAAM;QACN,eAAe;QACf,eAAe;KAChB,CAAC;IACF,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACvC,CAAC;IACF,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,WAAW,CAAC,IAAI,CACd,2BAA2B,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAC7D,mDAAmD,CACtD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,mBAAmB,GAAG,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACvC,CAAC;IAEF,4EAA4E;IAC5E,SAAS,uBAAuB;QAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO,4BAA4B,CAAC;QACtC,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CACL,yBAAyB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;gBAC3D,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,yBAAyB,EAAE,EAAE,QAAQ,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;YAC/B,QAAQ,CAAC,iBAAiB;YAC1B,QAAQ,CAAC,kBAAkB;YAC3B,QAAQ,CAAC,WAAW;SACrB,CAAC,CAAC;QACH,IAAI,QAAQ,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,yDAAyD,CAAC;QACnE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAyB,CAAC,GAAG,QAAQ,CAAC,CAAC;IACrD,MAAM,oBAAoB,GAAG,uBAAuB,EAAE,CAAC;IAEvD,IAAI,oBAAoB,EAAE,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,oBAAoB,oBAAoB,EAAE,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CACX,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,GAAG,CACb,WAAW,QAAQ,CAAC,MAAM,4BAA4B;QACpD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC;IAEF,0CAA0C;IAC1C,qEAAqE;IACrE,MAAM,cAAc,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAyD;QACvE,GAAG,cAAc;QACjB,UAAU,EAAE;YACV,KAAK,EAAE,QAAQ;SAChB;KACF,CAAC;IAEF,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,cAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;QAC7B,WAAW,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CACf,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"browserAgentFactory.js","sourceRoot":"","sources":["../../../../src/agents/browser/browserAgentFactory.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
- import { createBrowserAgentDefinition, cleanupBrowserAgent, } from './browserAgentFactory.js';
7
+ import { createBrowserAgentDefinition, cleanupBrowserAgent, resetBrowserSession, } from './browserAgentFactory.js';
8
8
  import { injectAutomationOverlay } from './automationOverlay.js';
9
9
  import { makeFakeConfig } from '../../test-utils/config.js';
10
10
  import { PolicyDecision, PRIORITY_SUBAGENT_TOOL } from '../../policy/types.js';
11
+ import { recordBrowserAgentToolDiscovery, recordBrowserAgentVisionStatus, recordBrowserAgentCleanup, } from '../../telemetry/metrics.js';
11
12
  // Create mock browser manager
12
13
  const mockBrowserManager = {
13
14
  ensureConnection: vi.fn().mockResolvedValue(undefined),
@@ -23,11 +24,21 @@ const mockBrowserManager = {
23
24
  ]),
24
25
  callTool: vi.fn().mockResolvedValue({ content: [] }),
25
26
  close: vi.fn().mockResolvedValue(undefined),
27
+ acquire: vi.fn(),
28
+ release: vi.fn(),
26
29
  };
27
30
  // Mock dependencies
28
- vi.mock('./browserManager.js', () => ({
29
- BrowserManager: vi.fn(() => mockBrowserManager),
30
- }));
31
+ vi.mock('./browserManager.js', () => {
32
+ const instancesMap = new Map();
33
+ const MockBrowserManager = vi.fn();
34
+ // Add static methods — use mockImplementation for lazy eval (hoisting-safe)
35
+ MockBrowserManager['getInstance'] = vi.fn();
36
+ MockBrowserManager['resetAll'] = vi.fn().mockResolvedValue(undefined);
37
+ MockBrowserManager['instances'] = instancesMap;
38
+ return {
39
+ BrowserManager: MockBrowserManager,
40
+ };
41
+ });
31
42
  vi.mock('./automationOverlay.js', () => ({
32
43
  injectAutomationOverlay: vi.fn().mockResolvedValue(undefined),
33
44
  }));
@@ -38,12 +49,21 @@ vi.mock('../../utils/debugLogger.js', () => ({
38
49
  error: vi.fn(),
39
50
  },
40
51
  }));
52
+ vi.mock('../../telemetry/metrics.js', () => ({
53
+ recordBrowserAgentToolDiscovery: vi.fn(),
54
+ recordBrowserAgentVisionStatus: vi.fn(),
55
+ recordBrowserAgentCleanup: vi.fn(),
56
+ }));
41
57
  import { buildBrowserSystemPrompt, BROWSER_AGENT_NAME, } from './browserAgentDefinition.js';
42
58
  describe('browserAgentFactory', () => {
43
59
  let mockConfig;
44
60
  let mockMessageBus;
45
- beforeEach(() => {
61
+ beforeEach(async () => {
46
62
  vi.clearAllMocks();
63
+ // Set up getInstance to return mockBrowserManager
64
+ // (Can't do this in vi.mock factory due to hoisting)
65
+ const { BrowserManager: MockBM } = await import('./browserManager.js');
66
+ MockBM['getInstance'].mockReturnValue(mockBrowserManager);
47
67
  vi.mocked(injectAutomationOverlay).mockClear();
48
68
  // Reset mock implementations
49
69
  mockBrowserManager.ensureConnection.mockResolvedValue(undefined);
@@ -76,7 +96,7 @@ describe('browserAgentFactory', () => {
76
96
  unsubscribe: vi.fn(),
77
97
  };
78
98
  });
79
- afterEach(() => {
99
+ afterEach(async () => {
80
100
  vi.restoreAllMocks();
81
101
  });
82
102
  describe('createBrowserAgentDefinition', () => {
@@ -114,10 +134,10 @@ describe('browserAgentFactory', () => {
114
134
  const { browserManager } = await createBrowserAgentDefinition(mockConfig, mockMessageBus);
115
135
  expect(browserManager).toBeDefined();
116
136
  });
117
- it('should call printOutput when provided', async () => {
137
+ it('should not call printOutput for internal setup messages', async () => {
118
138
  const printOutput = vi.fn();
119
139
  await createBrowserAgentDefinition(mockConfig, mockMessageBus, printOutput);
120
- expect(printOutput).toHaveBeenCalled();
140
+ expect(printOutput).not.toHaveBeenCalled();
121
141
  });
122
142
  it('should create definition with correct structure', async () => {
123
143
  const { definition } = await createBrowserAgentDefinition(mockConfig, mockMessageBus);
@@ -150,6 +170,7 @@ describe('browserAgentFactory', () => {
150
170
  const systemPrompt = definition.promptConfig?.systemPrompt ?? '';
151
171
  expect(systemPrompt).toContain('analyze_screenshot');
152
172
  expect(systemPrompt).toContain('VISUAL IDENTIFICATION');
173
+ expect(recordBrowserAgentVisionStatus).toHaveBeenCalledWith(configWithVision, { enabled: true, disabled_reason: undefined });
153
174
  });
154
175
  it('should include analyze_screenshot tool when visualModel is configured', async () => {
155
176
  const configWithVision = makeFakeConfig({
@@ -215,6 +236,40 @@ describe('browserAgentFactory', () => {
215
236
  // Total: 9 MCP + 1 type_text (no analyze_screenshot without visualModel)
216
237
  expect(definition.toolConfig?.tools).toHaveLength(10);
217
238
  });
239
+ it('should trigger telemetry recording for tool discovery', async () => {
240
+ const configWithVision = makeFakeConfig({
241
+ agents: {
242
+ overrides: { browser_agent: { enabled: true } },
243
+ browser: { headless: false, visualModel: 'gemini-2.5-flash-preview' },
244
+ },
245
+ });
246
+ await createBrowserAgentDefinition(configWithVision, mockMessageBus);
247
+ expect(recordBrowserAgentToolDiscovery).toHaveBeenCalledWith(configWithVision, 6, // 6 mock tools from getDiscoveredTools
248
+ [], // Empty because all required semantic tools present
249
+ 'persistent');
250
+ });
251
+ it('should trigger telemetry recording for missing semantic tools', async () => {
252
+ mockBrowserManager.getDiscoveredTools.mockResolvedValueOnce([
253
+ { name: 'take_snapshot', description: 'Take snapshot' },
254
+ // 'click', 'fill', 'navigate_page' are missing
255
+ ]);
256
+ const configWithVision = makeFakeConfig({
257
+ agents: {
258
+ overrides: { browser_agent: { enabled: true } },
259
+ browser: { headless: false, visualModel: 'gemini-2.5-flash-preview' },
260
+ },
261
+ });
262
+ await createBrowserAgentDefinition(configWithVision, mockMessageBus);
263
+ expect(recordBrowserAgentToolDiscovery).toHaveBeenCalledWith(configWithVision, 1, // 1 mock tool from getDiscoveredTools
264
+ ['click', 'fill', 'navigate_page'], 'persistent');
265
+ });
266
+ });
267
+ describe('resetBrowserSession', () => {
268
+ it('should delegate to BrowserManager.resetAll', async () => {
269
+ const { BrowserManager: MockBrowserManager } = await import('./browserManager.js');
270
+ await resetBrowserSession();
271
+ expect(MockBrowserManager['resetAll']).toHaveBeenCalled();
272
+ });
218
273
  });
219
274
  describe('Policy Registration', () => {
220
275
  let mockPolicyEngine;
@@ -264,9 +319,19 @@ describe('browserAgentFactory', () => {
264
319
  });
265
320
  it('should register ALLOW rules for read-only tools', async () => {
266
321
  mockBrowserManager.getDiscoveredTools.mockResolvedValue([
267
- { name: 'take_snapshot', description: 'Take snapshot' },
268
- { name: 'take_screenshot', description: 'Take screenshot' },
269
- { name: 'list_pages', description: 'list all pages' },
322
+ {
323
+ name: 'take_snapshot',
324
+ description: 'Take snapshot',
325
+ },
326
+ {
327
+ name: 'take_screenshot',
328
+ description: 'Take screenshot',
329
+ },
330
+ {
331
+ name: 'list_pages',
332
+ description: 'list all pages',
333
+ annotations: { readOnlyHint: true },
334
+ },
270
335
  ]);
271
336
  await createBrowserAgentDefinition(mockConfig, mockMessageBus);
272
337
  expect(mockPolicyEngine.addRule).toHaveBeenCalledWith(expect.objectContaining({
@@ -288,15 +353,35 @@ describe('browserAgentFactory', () => {
288
353
  });
289
354
  describe('cleanupBrowserAgent', () => {
290
355
  it('should call close on browser manager', async () => {
291
- await cleanupBrowserAgent(mockBrowserManager);
356
+ const mockConfig = makeFakeConfig({});
357
+ await cleanupBrowserAgent(mockBrowserManager, mockConfig, 'persistent');
292
358
  expect(mockBrowserManager.close).toHaveBeenCalled();
293
359
  });
294
360
  it('should handle errors during cleanup gracefully', async () => {
295
361
  const errorManager = {
296
362
  close: vi.fn().mockRejectedValue(new Error('Close failed')),
297
363
  };
364
+ const mockConfig = makeFakeConfig({});
298
365
  // Should not throw
299
- await expect(cleanupBrowserAgent(errorManager)).resolves.toBeUndefined();
366
+ await expect(cleanupBrowserAgent(errorManager, mockConfig, 'persistent')).resolves.toBeUndefined();
367
+ });
368
+ it('should record successful cleanup metrics', async () => {
369
+ const mockConfig = makeFakeConfig({});
370
+ await cleanupBrowserAgent(mockBrowserManager, mockConfig, 'isolated');
371
+ expect(mockBrowserManager.close).toHaveBeenCalled();
372
+ expect(recordBrowserAgentCleanup).toHaveBeenCalledWith(mockConfig, expect.any(Number), {
373
+ session_mode: 'isolated',
374
+ success: true,
375
+ });
376
+ });
377
+ it('should record failed cleanup metrics when browserManager.close() throws', async () => {
378
+ const mockConfig = makeFakeConfig({});
379
+ mockBrowserManager.close.mockRejectedValueOnce(new Error('Failed to close'));
380
+ await cleanupBrowserAgent(mockBrowserManager, mockConfig, 'existing');
381
+ expect(recordBrowserAgentCleanup).toHaveBeenCalledWith(mockConfig, expect.any(Number), {
382
+ session_mode: 'existing',
383
+ success: false,
384
+ });
300
385
  });
301
386
  });
302
387
  });
@@ -332,6 +417,7 @@ describe('buildBrowserSystemPrompt', () => {
332
417
  expect(prompt).toContain('SECURITY DOMAIN RESTRICTION - CRITICAL:');
333
418
  expect(prompt).toContain('- github.com');
334
419
  expect(prompt).toContain('- *.google.com');
420
+ expect(prompt).toContain('Do NOT use proxy services');
335
421
  });
336
422
  it('should exclude allowed domains restriction when not provided or empty', () => {
337
423
  let prompt = buildBrowserSystemPrompt(false);