@office-ai/aioncli-core 0.30.0 → 0.30.1

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 (325) hide show
  1. package/dist/docs/assets/theme-ansi-dark.png +0 -0
  2. package/dist/docs/assets/theme-atom-one-dark.png +0 -0
  3. package/dist/docs/assets/theme-ayu-dark.png +0 -0
  4. package/dist/docs/assets/theme-default-dark.png +0 -0
  5. package/dist/docs/assets/theme-dracula-dark.png +0 -0
  6. package/dist/docs/assets/theme-github-dark.png +0 -0
  7. package/dist/docs/assets/theme-holiday-dark.png +0 -0
  8. package/dist/docs/assets/theme-shades-of-purple-dark.png +0 -0
  9. package/dist/docs/assets/theme-solarized-dark.png +0 -0
  10. package/dist/docs/assets/theme-solarized-light.png +0 -0
  11. package/dist/docs/cli/notifications.md +58 -0
  12. package/dist/docs/redirects.json +20 -0
  13. package/dist/docs/reference/commands.md +563 -0
  14. package/dist/docs/reference/configuration.md +1804 -0
  15. package/dist/docs/reference/keyboard-shortcuts.md +168 -0
  16. package/dist/docs/reference/memport.md +246 -0
  17. package/dist/docs/reference/policy-engine.md +386 -0
  18. package/dist/docs/reference/tools.md +106 -0
  19. package/dist/docs/resources/faq.md +175 -0
  20. package/dist/docs/resources/quota-and-pricing.md +199 -0
  21. package/dist/docs/resources/tos-privacy.md +102 -0
  22. package/dist/docs/resources/troubleshooting.md +176 -0
  23. package/dist/docs/resources/uninstall.md +56 -0
  24. package/dist/src/agents/a2a-errors.d.ts +65 -0
  25. package/dist/src/agents/a2a-errors.js +164 -0
  26. package/dist/src/agents/a2a-errors.js.map +1 -0
  27. package/dist/src/agents/a2a-errors.test.d.ts +6 -0
  28. package/dist/src/agents/a2a-errors.test.js +183 -0
  29. package/dist/src/agents/a2a-errors.test.js.map +1 -0
  30. package/dist/src/agents/auth-provider/api-key-provider.d.ts +30 -0
  31. package/dist/src/agents/auth-provider/api-key-provider.js +66 -0
  32. package/dist/src/agents/auth-provider/api-key-provider.js.map +1 -0
  33. package/dist/src/agents/auth-provider/api-key-provider.test.d.ts +6 -0
  34. package/dist/src/agents/auth-provider/api-key-provider.test.js +130 -0
  35. package/dist/src/agents/auth-provider/api-key-provider.test.js.map +1 -0
  36. package/dist/src/agents/auth-provider/http-provider.d.ts +28 -0
  37. package/dist/src/agents/auth-provider/http-provider.js +73 -0
  38. package/dist/src/agents/auth-provider/http-provider.js.map +1 -0
  39. package/dist/src/agents/auth-provider/http-provider.test.d.ts +6 -0
  40. package/dist/src/agents/auth-provider/http-provider.test.js +112 -0
  41. package/dist/src/agents/auth-provider/http-provider.test.js.map +1 -0
  42. package/dist/src/agents/auth-provider/oauth2-provider.d.ts +65 -0
  43. package/dist/src/agents/auth-provider/oauth2-provider.js +233 -0
  44. package/dist/src/agents/auth-provider/oauth2-provider.js.map +1 -0
  45. package/dist/src/agents/auth-provider/oauth2-provider.test.d.ts +6 -0
  46. package/dist/src/agents/auth-provider/oauth2-provider.test.js +490 -0
  47. package/dist/src/agents/auth-provider/oauth2-provider.test.js.map +1 -0
  48. package/dist/src/agents/browser/analyzeScreenshot.d.ts +35 -0
  49. package/dist/src/agents/browser/analyzeScreenshot.js +183 -0
  50. package/dist/src/agents/browser/analyzeScreenshot.js.map +1 -0
  51. package/dist/src/agents/browser/analyzeScreenshot.test.d.ts +6 -0
  52. package/dist/src/agents/browser/analyzeScreenshot.test.js +161 -0
  53. package/dist/src/agents/browser/analyzeScreenshot.test.js.map +1 -0
  54. package/dist/src/agents/browser/automationOverlay.d.ts +26 -0
  55. package/dist/src/agents/browser/automationOverlay.js +100 -0
  56. package/dist/src/agents/browser/automationOverlay.js.map +1 -0
  57. package/dist/src/agents/browser/browserAgentDefinition.d.ts +50 -0
  58. package/dist/src/agents/browser/browserAgentDefinition.js +141 -0
  59. package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -0
  60. package/dist/src/agents/browser/browserAgentFactory.d.ts +42 -0
  61. package/dist/src/agents/browser/browserAgentFactory.js +116 -0
  62. package/dist/src/agents/browser/browserAgentFactory.js.map +1 -0
  63. package/dist/src/agents/browser/browserAgentFactory.test.d.ts +6 -0
  64. package/dist/src/agents/browser/browserAgentFactory.test.js +240 -0
  65. package/dist/src/agents/browser/browserAgentFactory.test.js.map +1 -0
  66. package/dist/src/agents/browser/browserAgentInvocation.d.ts +34 -0
  67. package/dist/src/agents/browser/browserAgentInvocation.js +386 -0
  68. package/dist/src/agents/browser/browserAgentInvocation.js.map +1 -0
  69. package/dist/src/agents/browser/browserAgentInvocation.test.d.ts +6 -0
  70. package/dist/src/agents/browser/browserAgentInvocation.test.js +382 -0
  71. package/dist/src/agents/browser/browserAgentInvocation.test.js.map +1 -0
  72. package/dist/src/agents/browser/browserManager.d.ts +115 -0
  73. package/dist/src/agents/browser/browserManager.js +370 -0
  74. package/dist/src/agents/browser/browserManager.js.map +1 -0
  75. package/dist/src/agents/browser/browserManager.test.d.ts +6 -0
  76. package/dist/src/agents/browser/browserManager.test.js +382 -0
  77. package/dist/src/agents/browser/browserManager.test.js.map +1 -0
  78. package/dist/src/agents/browser/mcpToolWrapper.d.ts +45 -0
  79. package/dist/src/agents/browser/mcpToolWrapper.js +358 -0
  80. package/dist/src/agents/browser/mcpToolWrapper.js.map +1 -0
  81. package/dist/src/agents/browser/mcpToolWrapper.test.d.ts +6 -0
  82. package/dist/src/agents/browser/mcpToolWrapper.test.js +126 -0
  83. package/dist/src/agents/browser/mcpToolWrapper.test.js.map +1 -0
  84. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.d.ts +6 -0
  85. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js +59 -0
  86. package/dist/src/agents/browser/mcpToolWrapperConfirmation.test.js.map +1 -0
  87. package/dist/src/agents/browser/modelAvailability.d.ts +23 -0
  88. package/dist/src/agents/browser/modelAvailability.js +23 -0
  89. package/dist/src/agents/browser/modelAvailability.js.map +1 -0
  90. package/dist/src/agents/cli-help-agent.d.ts +2 -2
  91. package/dist/src/billing/billing.d.ts +80 -0
  92. package/dist/src/billing/billing.js +128 -0
  93. package/dist/src/billing/billing.js.map +1 -0
  94. package/dist/src/billing/billing.test.d.ts +6 -0
  95. package/dist/src/billing/billing.test.js +182 -0
  96. package/dist/src/billing/billing.test.js.map +1 -0
  97. package/dist/src/billing/index.d.ts +6 -0
  98. package/dist/src/billing/index.js +7 -0
  99. package/dist/src/billing/index.js.map +1 -0
  100. package/dist/src/code_assist/oauth2.d.ts +1 -1
  101. package/dist/src/code_assist/types.d.ts +26 -26
  102. package/dist/src/config/agent-loop-context.d.ts +22 -0
  103. package/dist/src/config/agent-loop-context.js +7 -0
  104. package/dist/src/config/agent-loop-context.js.map +1 -0
  105. package/dist/src/config/trackerFeatureFlag.test.d.ts +6 -0
  106. package/dist/src/config/trackerFeatureFlag.test.js +43 -0
  107. package/dist/src/config/trackerFeatureFlag.test.js.map +1 -0
  108. package/dist/src/config/userHintService.d.ts +46 -0
  109. package/dist/src/config/userHintService.js +81 -0
  110. package/dist/src/config/userHintService.js.map +1 -0
  111. package/dist/src/config/userHintService.test.d.ts +6 -0
  112. package/dist/src/config/userHintService.test.js +62 -0
  113. package/dist/src/config/userHintService.test.js.map +1 -0
  114. package/dist/src/core/localLiteRtLmClient.d.ts +24 -0
  115. package/dist/src/core/localLiteRtLmClient.js +77 -0
  116. package/dist/src/core/localLiteRtLmClient.js.map +1 -0
  117. package/dist/src/core/localLiteRtLmClient.test.d.ts +6 -0
  118. package/dist/src/core/localLiteRtLmClient.test.js +87 -0
  119. package/dist/src/core/localLiteRtLmClient.test.js.map +1 -0
  120. package/dist/src/core/openaiContentGenerator.d.ts +1 -0
  121. package/dist/src/core/openaiContentGenerator.js +13 -13
  122. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  123. package/dist/src/hooks/runtimeHooks.test.d.ts +6 -0
  124. package/dist/src/hooks/runtimeHooks.test.js +100 -0
  125. package/dist/src/hooks/runtimeHooks.test.js.map +1 -0
  126. package/dist/src/ide/types.d.ts +6 -6
  127. package/dist/src/mcp/mcp-oauth-provider.d.ts +43 -0
  128. package/dist/src/mcp/mcp-oauth-provider.js +67 -0
  129. package/dist/src/mcp/mcp-oauth-provider.js.map +1 -0
  130. package/dist/src/mcp/mcp-oauth-provider.test.d.ts +6 -0
  131. package/dist/src/mcp/mcp-oauth-provider.test.js +63 -0
  132. package/dist/src/mcp/mcp-oauth-provider.test.js.map +1 -0
  133. package/dist/src/policy/integrity.d.ts +45 -0
  134. package/dist/src/policy/integrity.js +121 -0
  135. package/dist/src/policy/integrity.js.map +1 -0
  136. package/dist/src/policy/integrity.test.d.ts +6 -0
  137. package/dist/src/policy/integrity.test.js +132 -0
  138. package/dist/src/policy/integrity.test.js.map +1 -0
  139. package/dist/src/policy/policies/conseca.toml +6 -0
  140. package/dist/src/policy/workspace-policy.test.js +231 -0
  141. package/dist/src/policy/workspace-policy.test.js.map +1 -0
  142. package/dist/src/routing/strategies/approvalModeStrategy.d.ts +18 -0
  143. package/dist/src/routing/strategies/approvalModeStrategy.js +59 -0
  144. package/dist/src/routing/strategies/approvalModeStrategy.js.map +1 -0
  145. package/dist/src/routing/strategies/approvalModeStrategy.test.d.ts +6 -0
  146. package/dist/src/routing/strategies/approvalModeStrategy.test.js +140 -0
  147. package/dist/src/routing/strategies/approvalModeStrategy.test.js.map +1 -0
  148. package/dist/src/routing/strategies/gemmaClassifierStrategy.d.ts +14 -0
  149. package/dist/src/routing/strategies/gemmaClassifierStrategy.js +182 -0
  150. package/dist/src/routing/strategies/gemmaClassifierStrategy.js.map +1 -0
  151. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.d.ts +6 -0
  152. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js +218 -0
  153. package/dist/src/routing/strategies/gemmaClassifierStrategy.test.js.map +1 -0
  154. package/dist/src/safety/conseca/conseca.d.ts +31 -0
  155. package/dist/src/safety/conseca/conseca.js +105 -0
  156. package/dist/src/safety/conseca/conseca.js.map +1 -0
  157. package/dist/src/safety/conseca/conseca.test.js +226 -0
  158. package/dist/src/safety/conseca/conseca.test.js.map +1 -0
  159. package/dist/src/safety/conseca/integration.test.js +19 -0
  160. package/dist/src/safety/conseca/integration.test.js.map +1 -0
  161. package/dist/src/safety/conseca/policy-enforcer.d.ts +13 -0
  162. package/dist/src/safety/conseca/policy-enforcer.js +135 -0
  163. package/dist/src/safety/conseca/policy-enforcer.js.map +1 -0
  164. package/dist/src/safety/conseca/policy-enforcer.test.js +141 -0
  165. package/dist/src/safety/conseca/policy-enforcer.test.js.map +1 -0
  166. package/dist/src/safety/conseca/policy-generator.d.ts +15 -0
  167. package/dist/src/safety/conseca/policy-generator.js +144 -0
  168. package/dist/src/safety/conseca/policy-generator.js.map +1 -0
  169. package/dist/src/safety/conseca/policy-generator.test.d.ts +6 -0
  170. package/dist/src/safety/conseca/policy-generator.test.js +84 -0
  171. package/dist/src/safety/conseca/policy-generator.test.js.map +1 -0
  172. package/dist/src/safety/conseca/types.d.ts +15 -0
  173. package/dist/src/safety/conseca/types.js +7 -0
  174. package/dist/src/safety/conseca/types.js.map +1 -0
  175. package/dist/src/scheduler/scheduler_parallel.test.d.ts +6 -0
  176. package/dist/src/scheduler/scheduler_parallel.test.js +401 -0
  177. package/dist/src/scheduler/scheduler_parallel.test.js.map +1 -0
  178. package/dist/src/services/FolderTrustDiscoveryService.d.ts +32 -0
  179. package/dist/src/services/FolderTrustDiscoveryService.js +169 -0
  180. package/dist/src/services/FolderTrustDiscoveryService.js.map +1 -0
  181. package/dist/src/services/FolderTrustDiscoveryService.test.d.ts +6 -0
  182. package/dist/src/services/FolderTrustDiscoveryService.test.js +118 -0
  183. package/dist/src/services/FolderTrustDiscoveryService.test.js.map +1 -0
  184. package/dist/src/services/fileKeychain.d.ts +24 -0
  185. package/dist/src/services/fileKeychain.js +123 -0
  186. package/dist/src/services/fileKeychain.js.map +1 -0
  187. package/dist/src/services/keychainService.d.ts +51 -0
  188. package/dist/src/services/keychainService.js +133 -0
  189. package/dist/src/services/keychainService.js.map +1 -0
  190. package/dist/src/services/keychainService.test.d.ts +6 -0
  191. package/dist/src/services/keychainService.test.js +150 -0
  192. package/dist/src/services/keychainService.test.js.map +1 -0
  193. package/dist/src/services/keychainTypes.d.ts +41 -0
  194. package/dist/src/services/keychainTypes.js +18 -0
  195. package/dist/src/services/keychainTypes.js.map +1 -0
  196. package/dist/src/services/trackerService.d.ts +49 -0
  197. package/dist/src/services/trackerService.js +193 -0
  198. package/dist/src/services/trackerService.js.map +1 -0
  199. package/dist/src/services/trackerService.test.d.ts +6 -0
  200. package/dist/src/services/trackerService.test.js +117 -0
  201. package/dist/src/services/trackerService.test.js.map +1 -0
  202. package/dist/src/services/trackerTypes.d.ts +51 -0
  203. package/dist/src/services/trackerTypes.js +33 -0
  204. package/dist/src/services/trackerTypes.js.map +1 -0
  205. package/dist/src/telemetry/billingEvents.d.ts +75 -0
  206. package/dist/src/telemetry/billingEvents.js +181 -0
  207. package/dist/src/telemetry/billingEvents.js.map +1 -0
  208. package/dist/src/telemetry/billingEvents.test.d.ts +6 -0
  209. package/dist/src/telemetry/billingEvents.test.js +139 -0
  210. package/dist/src/telemetry/billingEvents.test.js.map +1 -0
  211. package/dist/src/telemetry/conseca-logger.d.ts +9 -0
  212. package/dist/src/telemetry/conseca-logger.js +91 -0
  213. package/dist/src/telemetry/conseca-logger.js.map +1 -0
  214. package/dist/src/telemetry/conseca-logger.test.d.ts +6 -0
  215. package/dist/src/telemetry/conseca-logger.test.js +90 -0
  216. package/dist/src/telemetry/conseca-logger.test.js.map +1 -0
  217. package/dist/src/telemetry/trace.test.d.ts +6 -0
  218. package/dist/src/telemetry/trace.test.js +116 -0
  219. package/dist/src/telemetry/trace.test.js.map +1 -0
  220. package/dist/src/tools/definitions/trackerTools.d.ts +12 -0
  221. package/dist/src/tools/definitions/trackerTools.js +146 -0
  222. package/dist/src/tools/definitions/trackerTools.js.map +1 -0
  223. package/dist/src/tools/diff-utils.d.ts +9 -0
  224. package/dist/src/tools/diff-utils.js +66 -0
  225. package/dist/src/tools/diff-utils.js.map +1 -0
  226. package/dist/src/tools/diff-utils.test.d.ts +6 -0
  227. package/dist/src/tools/diff-utils.test.js +53 -0
  228. package/dist/src/tools/diff-utils.test.js.map +1 -0
  229. package/dist/src/tools/grep-utils.d.ts +49 -0
  230. package/dist/src/tools/grep-utils.js +147 -0
  231. package/dist/src/tools/grep-utils.js.map +1 -0
  232. package/dist/src/tools/omissionPlaceholderDetector.d.ts +15 -0
  233. package/dist/src/tools/omissionPlaceholderDetector.js +90 -0
  234. package/dist/src/tools/omissionPlaceholderDetector.js.map +1 -0
  235. package/dist/src/tools/omissionPlaceholderDetector.test.d.ts +6 -0
  236. package/dist/src/tools/omissionPlaceholderDetector.test.js +49 -0
  237. package/dist/src/tools/omissionPlaceholderDetector.test.js.map +1 -0
  238. package/dist/src/tools/trackerTools.d.ts +122 -0
  239. package/dist/src/tools/trackerTools.js +365 -0
  240. package/dist/src/tools/trackerTools.js.map +1 -0
  241. package/dist/src/tools/trackerTools.test.d.ts +6 -0
  242. package/dist/src/tools/trackerTools.test.js +97 -0
  243. package/dist/src/tools/trackerTools.test.js.map +1 -0
  244. package/dist/src/utils/approvalModeUtils.d.ts +14 -0
  245. package/dist/src/utils/approvalModeUtils.js +35 -0
  246. package/dist/src/utils/approvalModeUtils.js.map +1 -0
  247. package/dist/src/utils/approvalModeUtils.test.d.ts +6 -0
  248. package/dist/src/utils/approvalModeUtils.test.js +36 -0
  249. package/dist/src/utils/approvalModeUtils.test.js.map +1 -0
  250. package/dist/src/utils/cache.d.ts +63 -0
  251. package/dist/src/utils/cache.js +103 -0
  252. package/dist/src/utils/cache.js.map +1 -0
  253. package/dist/src/utils/cache.test.d.ts +6 -0
  254. package/dist/src/utils/cache.test.js +158 -0
  255. package/dist/src/utils/cache.test.js.map +1 -0
  256. package/dist/src/utils/checkpointUtils.d.ts +2 -2
  257. package/dist/src/utils/compatibility.d.ts +41 -0
  258. package/dist/src/utils/compatibility.js +112 -0
  259. package/dist/src/utils/compatibility.js.map +1 -0
  260. package/dist/src/utils/compatibility.test.d.ts +6 -0
  261. package/dist/src/utils/compatibility.test.js +233 -0
  262. package/dist/src/utils/compatibility.test.js.map +1 -0
  263. package/dist/src/utils/envExpansion.d.ts +18 -0
  264. package/dist/src/utils/envExpansion.js +46 -0
  265. package/dist/src/utils/envExpansion.js.map +1 -0
  266. package/dist/src/utils/envExpansion.test.d.ts +6 -0
  267. package/dist/src/utils/envExpansion.test.js +110 -0
  268. package/dist/src/utils/envExpansion.test.js.map +1 -0
  269. package/dist/src/utils/errors_timeout.test.d.ts +6 -0
  270. package/dist/src/utils/errors_timeout.test.js +40 -0
  271. package/dist/src/utils/errors_timeout.test.js.map +1 -0
  272. package/dist/src/utils/fetch.test.d.ts +6 -0
  273. package/dist/src/utils/fetch.test.js +206 -0
  274. package/dist/src/utils/fetch.test.js.map +1 -0
  275. package/dist/src/utils/markdownUtils.d.ts +22 -0
  276. package/dist/src/utils/markdownUtils.js +126 -0
  277. package/dist/src/utils/markdownUtils.js.map +1 -0
  278. package/dist/src/utils/markdownUtils.test.d.ts +6 -0
  279. package/dist/src/utils/markdownUtils.test.js +107 -0
  280. package/dist/src/utils/markdownUtils.test.js.map +1 -0
  281. package/dist/src/utils/oauth-flow.d.ts +105 -0
  282. package/dist/src/utils/oauth-flow.js +370 -0
  283. package/dist/src/utils/oauth-flow.js.map +1 -0
  284. package/dist/src/utils/oauth-flow.test.d.ts +6 -0
  285. package/dist/src/utils/oauth-flow.test.js +360 -0
  286. package/dist/src/utils/oauth-flow.test.js.map +1 -0
  287. package/dist/src/utils/sessionUtils.d.ts +14 -0
  288. package/dist/src/utils/sessionUtils.js +122 -0
  289. package/dist/src/utils/sessionUtils.js.map +1 -0
  290. package/dist/src/utils/sessionUtils.test.d.ts +1 -0
  291. package/dist/src/utils/sessionUtils.test.js +171 -0
  292. package/dist/src/utils/sessionUtils.test.js.map +1 -0
  293. package/dist/src/voice/responseFormatter.d.ts +38 -0
  294. package/dist/src/voice/responseFormatter.js +130 -0
  295. package/dist/src/voice/responseFormatter.js.map +1 -0
  296. package/dist/src/voice/responseFormatter.test.d.ts +6 -0
  297. package/dist/src/voice/responseFormatter.test.js +214 -0
  298. package/dist/src/voice/responseFormatter.test.js.map +1 -0
  299. package/dist/tsconfig.tsbuildinfo +1 -1
  300. package/package.json +1 -1
  301. package/dist/docs/CONTRIBUTING.md +0 -555
  302. package/dist/src/agents/executor.d.ts +0 -114
  303. package/dist/src/agents/executor.js +0 -779
  304. package/dist/src/agents/executor.js.map +0 -1
  305. package/dist/src/agents/executor.test.js +0 -1362
  306. package/dist/src/agents/executor.test.js.map +0 -1
  307. package/dist/src/agents/invocation.d.ts +0 -46
  308. package/dist/src/agents/invocation.js +0 -102
  309. package/dist/src/agents/invocation.js.map +0 -1
  310. package/dist/src/agents/invocation.test.js +0 -215
  311. package/dist/src/agents/invocation.test.js.map +0 -1
  312. package/dist/src/core/subagent.d.ts +0 -236
  313. package/dist/src/core/subagent.js +0 -482
  314. package/dist/src/core/subagent.js.map +0 -1
  315. package/dist/src/core/subagent.test.js +0 -530
  316. package/dist/src/core/subagent.test.js.map +0 -1
  317. package/dist/src/tools/smart-edit.d.ts +0 -78
  318. package/dist/src/tools/smart-edit.js +0 -717
  319. package/dist/src/tools/smart-edit.js.map +0 -1
  320. package/dist/src/tools/smart-edit.test.js +0 -592
  321. package/dist/src/tools/smart-edit.test.js.map +0 -1
  322. /package/dist/src/{agents/executor.test.d.ts → policy/workspace-policy.test.d.ts} +0 -0
  323. /package/dist/src/{agents/invocation.test.d.ts → safety/conseca/conseca.test.d.ts} +0 -0
  324. /package/dist/src/{core/subagent.test.d.ts → safety/conseca/integration.test.d.ts} +0 -0
  325. /package/dist/src/{tools/smart-edit.test.d.ts → safety/conseca/policy-enforcer.test.d.ts} +0 -0
@@ -0,0 +1,382 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { BrowserManager } from './browserManager.js';
8
+ import { makeFakeConfig } from '../../test-utils/config.js';
9
+ import { injectAutomationOverlay } from './automationOverlay.js';
10
+ // Mock the MCP SDK
11
+ vi.mock('@modelcontextprotocol/sdk/client/index.js', () => ({
12
+ Client: vi.fn().mockImplementation(() => ({
13
+ connect: vi.fn().mockResolvedValue(undefined),
14
+ close: vi.fn().mockResolvedValue(undefined),
15
+ listTools: vi.fn().mockResolvedValue({
16
+ tools: [
17
+ { name: 'take_snapshot', description: 'Take a snapshot' },
18
+ { name: 'click', description: 'Click an element' },
19
+ { name: 'click_at', description: 'Click at coordinates' },
20
+ { name: 'take_screenshot', description: 'Take a screenshot' },
21
+ ],
22
+ }),
23
+ callTool: vi.fn().mockResolvedValue({
24
+ content: [{ type: 'text', text: 'Tool result' }],
25
+ }),
26
+ })),
27
+ }));
28
+ vi.mock('@modelcontextprotocol/sdk/client/stdio.js', () => ({
29
+ StdioClientTransport: vi.fn().mockImplementation(() => ({
30
+ close: vi.fn().mockResolvedValue(undefined),
31
+ stderr: null,
32
+ })),
33
+ }));
34
+ vi.mock('../../utils/debugLogger.js', () => ({
35
+ debugLogger: {
36
+ log: vi.fn(),
37
+ error: vi.fn(),
38
+ },
39
+ }));
40
+ vi.mock('./automationOverlay.js', () => ({
41
+ injectAutomationOverlay: vi.fn().mockResolvedValue(undefined),
42
+ }));
43
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
44
+ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
45
+ describe('BrowserManager', () => {
46
+ let mockConfig;
47
+ beforeEach(() => {
48
+ vi.resetAllMocks();
49
+ vi.mocked(injectAutomationOverlay).mockClear();
50
+ // Setup mock config
51
+ mockConfig = makeFakeConfig({
52
+ agents: {
53
+ overrides: {
54
+ browser_agent: {
55
+ enabled: true,
56
+ },
57
+ },
58
+ browser: {
59
+ headless: false,
60
+ },
61
+ },
62
+ });
63
+ // Re-setup Client mock after reset
64
+ vi.mocked(Client).mockImplementation(() => ({
65
+ connect: vi.fn().mockResolvedValue(undefined),
66
+ close: vi.fn().mockResolvedValue(undefined),
67
+ listTools: vi.fn().mockResolvedValue({
68
+ tools: [
69
+ { name: 'take_snapshot', description: 'Take a snapshot' },
70
+ { name: 'click', description: 'Click an element' },
71
+ { name: 'click_at', description: 'Click at coordinates' },
72
+ { name: 'take_screenshot', description: 'Take a screenshot' },
73
+ ],
74
+ }),
75
+ callTool: vi.fn().mockResolvedValue({
76
+ content: [{ type: 'text', text: 'Tool result' }],
77
+ }),
78
+ }));
79
+ });
80
+ afterEach(() => {
81
+ vi.restoreAllMocks();
82
+ });
83
+ describe('getRawMcpClient', () => {
84
+ it('should ensure connection and return raw MCP client', async () => {
85
+ const manager = new BrowserManager(mockConfig);
86
+ const client = await manager.getRawMcpClient();
87
+ expect(client).toBeDefined();
88
+ expect(Client).toHaveBeenCalled();
89
+ });
90
+ it('should return cached client if already connected', async () => {
91
+ const manager = new BrowserManager(mockConfig);
92
+ // First call
93
+ const client1 = await manager.getRawMcpClient();
94
+ // Second call should use cache
95
+ const client2 = await manager.getRawMcpClient();
96
+ expect(client1).toBe(client2);
97
+ // Client constructor should only be called once
98
+ expect(Client).toHaveBeenCalledTimes(1);
99
+ });
100
+ });
101
+ describe('getDiscoveredTools', () => {
102
+ it('should return tools discovered from MCP server including visual tools', async () => {
103
+ const manager = new BrowserManager(mockConfig);
104
+ const tools = await manager.getDiscoveredTools();
105
+ expect(tools).toHaveLength(4);
106
+ expect(tools.map((t) => t.name)).toContain('take_snapshot');
107
+ expect(tools.map((t) => t.name)).toContain('click');
108
+ expect(tools.map((t) => t.name)).toContain('click_at');
109
+ expect(tools.map((t) => t.name)).toContain('take_screenshot');
110
+ });
111
+ });
112
+ describe('callTool', () => {
113
+ it('should call tool on MCP client and return result', async () => {
114
+ const manager = new BrowserManager(mockConfig);
115
+ const result = await manager.callTool('take_snapshot', { verbose: true });
116
+ expect(result).toEqual({
117
+ content: [{ type: 'text', text: 'Tool result' }],
118
+ isError: false,
119
+ });
120
+ });
121
+ });
122
+ describe('MCP connection', () => {
123
+ it('should spawn npx chrome-devtools-mcp with --experimental-vision (persistent mode by default)', async () => {
124
+ const manager = new BrowserManager(mockConfig);
125
+ await manager.ensureConnection();
126
+ // Verify StdioClientTransport was created with correct args
127
+ expect(StdioClientTransport).toHaveBeenCalledWith(expect.objectContaining({
128
+ command: process.platform === 'win32' ? 'npx.cmd' : 'npx',
129
+ args: expect.arrayContaining([
130
+ '-y',
131
+ expect.stringMatching(/chrome-devtools-mcp@/),
132
+ '--experimental-vision',
133
+ ]),
134
+ }));
135
+ // Persistent mode should NOT include --isolated or --autoConnect
136
+ const args = vi.mocked(StdioClientTransport).mock.calls[0]?.[0]
137
+ ?.args;
138
+ expect(args).not.toContain('--isolated');
139
+ expect(args).not.toContain('--autoConnect');
140
+ // Persistent mode should set the default --userDataDir under ~/.gemini
141
+ expect(args).toContain('--userDataDir');
142
+ const userDataDirIndex = args.indexOf('--userDataDir');
143
+ expect(args[userDataDirIndex + 1]).toMatch(/cli-browser-profile$/);
144
+ });
145
+ it('should pass headless flag when configured', async () => {
146
+ const headlessConfig = makeFakeConfig({
147
+ agents: {
148
+ overrides: {
149
+ browser_agent: {
150
+ enabled: true,
151
+ },
152
+ },
153
+ browser: {
154
+ headless: true,
155
+ },
156
+ },
157
+ });
158
+ const manager = new BrowserManager(headlessConfig);
159
+ await manager.ensureConnection();
160
+ expect(StdioClientTransport).toHaveBeenCalledWith(expect.objectContaining({
161
+ command: process.platform === 'win32' ? 'npx.cmd' : 'npx',
162
+ args: expect.arrayContaining(['--headless']),
163
+ }));
164
+ });
165
+ it('should pass profilePath as --userDataDir when configured', async () => {
166
+ const profileConfig = makeFakeConfig({
167
+ agents: {
168
+ overrides: {
169
+ browser_agent: {
170
+ enabled: true,
171
+ },
172
+ },
173
+ browser: {
174
+ profilePath: '/path/to/profile',
175
+ },
176
+ },
177
+ });
178
+ const manager = new BrowserManager(profileConfig);
179
+ await manager.ensureConnection();
180
+ expect(StdioClientTransport).toHaveBeenCalledWith(expect.objectContaining({
181
+ command: process.platform === 'win32' ? 'npx.cmd' : 'npx',
182
+ args: expect.arrayContaining(['--userDataDir', '/path/to/profile']),
183
+ }));
184
+ });
185
+ it('should pass --isolated when sessionMode is isolated', async () => {
186
+ const isolatedConfig = makeFakeConfig({
187
+ agents: {
188
+ overrides: {
189
+ browser_agent: {
190
+ enabled: true,
191
+ },
192
+ },
193
+ browser: {
194
+ sessionMode: 'isolated',
195
+ },
196
+ },
197
+ });
198
+ const manager = new BrowserManager(isolatedConfig);
199
+ await manager.ensureConnection();
200
+ const args = vi.mocked(StdioClientTransport).mock.calls[0]?.[0]
201
+ ?.args;
202
+ expect(args).toContain('--isolated');
203
+ expect(args).not.toContain('--autoConnect');
204
+ });
205
+ it('should pass --autoConnect when sessionMode is existing', async () => {
206
+ const existingConfig = makeFakeConfig({
207
+ agents: {
208
+ overrides: {
209
+ browser_agent: {
210
+ enabled: true,
211
+ },
212
+ },
213
+ browser: {
214
+ sessionMode: 'existing',
215
+ },
216
+ },
217
+ });
218
+ const manager = new BrowserManager(existingConfig);
219
+ await manager.ensureConnection();
220
+ const args = vi.mocked(StdioClientTransport).mock.calls[0]?.[0]
221
+ ?.args;
222
+ expect(args).toContain('--autoConnect');
223
+ expect(args).not.toContain('--isolated');
224
+ });
225
+ it('should throw actionable error when existing mode connection fails', async () => {
226
+ // Make the Client mock's connect method reject
227
+ vi.mocked(Client).mockImplementation(() => ({
228
+ connect: vi.fn().mockRejectedValue(new Error('Connection refused')),
229
+ close: vi.fn().mockResolvedValue(undefined),
230
+ listTools: vi.fn(),
231
+ callTool: vi.fn(),
232
+ }));
233
+ const existingConfig = makeFakeConfig({
234
+ agents: {
235
+ overrides: {
236
+ browser_agent: {
237
+ enabled: true,
238
+ },
239
+ },
240
+ browser: {
241
+ sessionMode: 'existing',
242
+ },
243
+ },
244
+ });
245
+ const manager = new BrowserManager(existingConfig);
246
+ await expect(manager.ensureConnection()).rejects.toThrow(/Failed to connect to existing Chrome instance/);
247
+ // Create a fresh manager to verify the error message includes remediation steps
248
+ const manager2 = new BrowserManager(existingConfig);
249
+ await expect(manager2.ensureConnection()).rejects.toThrow(/chrome:\/\/inspect\/#remote-debugging/);
250
+ });
251
+ it('should throw profile-lock remediation when persistent mode hits "already running"', async () => {
252
+ vi.mocked(Client).mockImplementation(() => ({
253
+ connect: vi
254
+ .fn()
255
+ .mockRejectedValue(new Error('Could not connect to Chrome. The browser is already running for the current profile.')),
256
+ close: vi.fn().mockResolvedValue(undefined),
257
+ listTools: vi.fn(),
258
+ callTool: vi.fn(),
259
+ }));
260
+ // Default config = persistent mode
261
+ const manager = new BrowserManager(mockConfig);
262
+ await expect(manager.ensureConnection()).rejects.toThrow(/Close all Chrome windows using this profile/);
263
+ const manager2 = new BrowserManager(mockConfig);
264
+ await expect(manager2.ensureConnection()).rejects.toThrow(/Set sessionMode to "isolated"/);
265
+ });
266
+ it('should throw timeout-specific remediation for persistent mode', async () => {
267
+ vi.mocked(Client).mockImplementation(() => ({
268
+ connect: vi
269
+ .fn()
270
+ .mockRejectedValue(new Error('Timed out connecting to chrome-devtools-mcp')),
271
+ close: vi.fn().mockResolvedValue(undefined),
272
+ listTools: vi.fn(),
273
+ callTool: vi.fn(),
274
+ }));
275
+ const manager = new BrowserManager(mockConfig);
276
+ await expect(manager.ensureConnection()).rejects.toThrow(/Chrome is not installed/);
277
+ });
278
+ it('should include sessionMode in generic fallback error', async () => {
279
+ vi.mocked(Client).mockImplementation(() => ({
280
+ connect: vi
281
+ .fn()
282
+ .mockRejectedValue(new Error('Some unexpected error')),
283
+ close: vi.fn().mockResolvedValue(undefined),
284
+ listTools: vi.fn(),
285
+ callTool: vi.fn(),
286
+ }));
287
+ const manager = new BrowserManager(mockConfig);
288
+ await expect(manager.ensureConnection()).rejects.toThrow(/sessionMode: persistent/);
289
+ });
290
+ });
291
+ describe('MCP isolation', () => {
292
+ it('should use raw MCP SDK Client, not McpClient wrapper', async () => {
293
+ const manager = new BrowserManager(mockConfig);
294
+ await manager.ensureConnection();
295
+ // Verify we're using the raw Client from MCP SDK
296
+ expect(Client).toHaveBeenCalledWith(expect.objectContaining({
297
+ name: 'gemini-cli-browser-agent',
298
+ }), expect.any(Object));
299
+ });
300
+ it('should not use McpClientManager from config', async () => {
301
+ // Spy on config method to verify isolation
302
+ const getMcpClientManagerSpy = vi.spyOn(mockConfig, 'getMcpClientManager');
303
+ const manager = new BrowserManager(mockConfig);
304
+ await manager.ensureConnection();
305
+ // Config's getMcpClientManager should NOT be called
306
+ // This ensures isolation from main registry
307
+ expect(getMcpClientManagerSpy).not.toHaveBeenCalled();
308
+ });
309
+ });
310
+ describe('close', () => {
311
+ it('should close MCP connections', async () => {
312
+ const manager = new BrowserManager(mockConfig);
313
+ const client = await manager.getRawMcpClient();
314
+ await manager.close();
315
+ expect(client.close).toHaveBeenCalled();
316
+ });
317
+ });
318
+ describe('overlay re-injection in callTool', () => {
319
+ it('should re-inject overlay after click in non-headless mode', async () => {
320
+ const manager = new BrowserManager(mockConfig);
321
+ await manager.callTool('click', { uid: '1_2' });
322
+ expect(injectAutomationOverlay).toHaveBeenCalledWith(manager, undefined);
323
+ });
324
+ it('should re-inject overlay after navigate_page in non-headless mode', async () => {
325
+ const manager = new BrowserManager(mockConfig);
326
+ await manager.callTool('navigate_page', { url: 'https://example.com' });
327
+ expect(injectAutomationOverlay).toHaveBeenCalledWith(manager, undefined);
328
+ });
329
+ it('should re-inject overlay after click_at, new_page, press_key, handle_dialog', async () => {
330
+ const manager = new BrowserManager(mockConfig);
331
+ for (const tool of [
332
+ 'click_at',
333
+ 'new_page',
334
+ 'press_key',
335
+ 'handle_dialog',
336
+ ]) {
337
+ vi.mocked(injectAutomationOverlay).mockClear();
338
+ await manager.callTool(tool, {});
339
+ expect(injectAutomationOverlay).toHaveBeenCalledTimes(1);
340
+ }
341
+ });
342
+ it('should NOT re-inject overlay after read-only tools', async () => {
343
+ const manager = new BrowserManager(mockConfig);
344
+ for (const tool of [
345
+ 'take_snapshot',
346
+ 'take_screenshot',
347
+ 'get_console_message',
348
+ 'fill',
349
+ ]) {
350
+ vi.mocked(injectAutomationOverlay).mockClear();
351
+ await manager.callTool(tool, {});
352
+ expect(injectAutomationOverlay).not.toHaveBeenCalled();
353
+ }
354
+ });
355
+ it('should NOT re-inject overlay when headless is true', async () => {
356
+ const headlessConfig = makeFakeConfig({
357
+ agents: {
358
+ overrides: { browser_agent: { enabled: true } },
359
+ browser: { headless: true },
360
+ },
361
+ });
362
+ const manager = new BrowserManager(headlessConfig);
363
+ await manager.callTool('click', { uid: '1_2' });
364
+ expect(injectAutomationOverlay).not.toHaveBeenCalled();
365
+ });
366
+ it('should NOT re-inject overlay when tool returns an error result', async () => {
367
+ vi.mocked(Client).mockImplementation(() => ({
368
+ connect: vi.fn().mockResolvedValue(undefined),
369
+ close: vi.fn().mockResolvedValue(undefined),
370
+ listTools: vi.fn().mockResolvedValue({ tools: [] }),
371
+ callTool: vi.fn().mockResolvedValue({
372
+ content: [{ type: 'text', text: 'Element not found' }],
373
+ isError: true,
374
+ }),
375
+ }));
376
+ const manager = new BrowserManager(mockConfig);
377
+ await manager.callTool('click', { uid: 'bad' });
378
+ expect(injectAutomationOverlay).not.toHaveBeenCalled();
379
+ });
380
+ });
381
+ });
382
+ //# sourceMappingURL=browserManager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserManager.test.js","sourceRoot":"","sources":["../../../../src/agents/browser/browserManager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DeclarativeTool, type ToolResult, type ToolInvocation } from '../../tools/tools.js';
7
+ import type { MessageBus } from '../../confirmation-bus/message-bus.js';
8
+ import type { BrowserManager } from './browserManager.js';
9
+ /**
10
+ * DeclarativeTool wrapper for an MCP tool.
11
+ */
12
+ declare class McpDeclarativeTool extends DeclarativeTool<Record<string, unknown>, ToolResult> {
13
+ protected readonly browserManager: BrowserManager;
14
+ constructor(browserManager: BrowserManager, name: string, description: string, parameterSchema: unknown, messageBus: MessageBus);
15
+ build(params: Record<string, unknown>): ToolInvocation<Record<string, unknown>, ToolResult>;
16
+ }
17
+ /**
18
+ * DeclarativeTool for the custom type_text composite tool.
19
+ */
20
+ declare class TypeTextDeclarativeTool extends DeclarativeTool<Record<string, unknown>, ToolResult> {
21
+ private readonly browserManager;
22
+ constructor(browserManager: BrowserManager, messageBus: MessageBus);
23
+ build(params: Record<string, unknown>): ToolInvocation<Record<string, unknown>, ToolResult>;
24
+ }
25
+ /**
26
+ * Creates DeclarativeTool instances from dynamically discovered MCP tools,
27
+ * plus custom composite tools (like type_text).
28
+ *
29
+ * These tools are registered in the browser agent's isolated ToolRegistry,
30
+ * NOT in the main agent's registry.
31
+ *
32
+ * Tool definitions are fetched dynamically from the MCP server at runtime.
33
+ *
34
+ * @param browserManager The browser manager with isolated MCP client
35
+ * @param messageBus Message bus for tool invocations
36
+ * @returns Array of DeclarativeTools that dispatch to the isolated MCP client
37
+ */
38
+ export declare function createMcpDeclarativeTools(browserManager: BrowserManager, messageBus: MessageBus): Promise<Array<McpDeclarativeTool | TypeTextDeclarativeTool>>;
39
+ /**
40
+ * Post-processes tool results to add contextual hints for common error patterns.
41
+ * This helps the agent recover from overlay blocking, element not found, etc.
42
+ * Also strips embedded snapshots to prevent token bloat.
43
+ */
44
+ export declare function postProcessToolResult(toolName: string, result: string): string;
45
+ export {};