@google/gemini-cli-core 0.22.2 → 0.23.0-preview.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 (350) hide show
  1. package/dist/docs/CONTRIBUTING.md +546 -0
  2. package/dist/docs/architecture.md +80 -0
  3. package/dist/docs/assets/connected_devtools.png +0 -0
  4. package/dist/docs/assets/gemini-screenshot.png +0 -0
  5. package/dist/docs/assets/release_patch.png +0 -0
  6. package/dist/docs/assets/theme-ansi-light.png +0 -0
  7. package/dist/docs/assets/theme-ansi.png +0 -0
  8. package/dist/docs/assets/theme-atom-one.png +0 -0
  9. package/dist/docs/assets/theme-ayu-light.png +0 -0
  10. package/dist/docs/assets/theme-ayu.png +0 -0
  11. package/dist/docs/assets/theme-custom.png +0 -0
  12. package/dist/docs/assets/theme-default-light.png +0 -0
  13. package/dist/docs/assets/theme-default.png +0 -0
  14. package/dist/docs/assets/theme-dracula.png +0 -0
  15. package/dist/docs/assets/theme-github-light.png +0 -0
  16. package/dist/docs/assets/theme-github.png +0 -0
  17. package/dist/docs/assets/theme-google-light.png +0 -0
  18. package/dist/docs/assets/theme-xcode-light.png +0 -0
  19. package/dist/docs/changelogs/index.md +592 -0
  20. package/dist/docs/changelogs/latest.md +225 -0
  21. package/dist/docs/changelogs/preview.md +129 -0
  22. package/dist/docs/changelogs/releases.md +896 -0
  23. package/dist/docs/cli/authentication.md +3 -0
  24. package/dist/docs/cli/checkpointing.md +94 -0
  25. package/dist/docs/cli/commands.md +354 -0
  26. package/dist/docs/cli/configuration.md +780 -0
  27. package/dist/docs/cli/custom-commands.md +315 -0
  28. package/dist/docs/cli/enterprise.md +565 -0
  29. package/dist/docs/cli/gemini-ignore.md +71 -0
  30. package/dist/docs/cli/gemini-md.md +108 -0
  31. package/dist/docs/cli/generation-settings.md +210 -0
  32. package/dist/docs/cli/headless.md +388 -0
  33. package/dist/docs/cli/index.md +63 -0
  34. package/dist/docs/cli/keyboard-shortcuts.md +143 -0
  35. package/dist/docs/cli/model-routing.md +37 -0
  36. package/dist/docs/cli/model.md +62 -0
  37. package/dist/docs/cli/sandbox.md +171 -0
  38. package/dist/docs/cli/session-management.md +158 -0
  39. package/dist/docs/cli/settings.md +112 -0
  40. package/dist/docs/cli/system-prompt.md +93 -0
  41. package/dist/docs/cli/telemetry.md +791 -0
  42. package/dist/docs/cli/themes.md +237 -0
  43. package/dist/docs/cli/token-caching.md +20 -0
  44. package/dist/docs/cli/trusted-folders.md +95 -0
  45. package/dist/docs/cli/tutorials.md +83 -0
  46. package/dist/docs/cli/uninstall.md +47 -0
  47. package/dist/docs/core/index.md +101 -0
  48. package/dist/docs/core/memport.md +244 -0
  49. package/dist/docs/core/policy-engine.md +267 -0
  50. package/dist/docs/core/tools-api.md +131 -0
  51. package/dist/docs/examples/proxy-script.md +83 -0
  52. package/dist/docs/extensions/extension-releasing.md +183 -0
  53. package/dist/docs/extensions/getting-started-extensions.md +245 -0
  54. package/dist/docs/extensions/index.md +293 -0
  55. package/dist/docs/faq.md +154 -0
  56. package/dist/docs/get-started/authentication.md +321 -0
  57. package/dist/docs/get-started/configuration-v1.md +888 -0
  58. package/dist/docs/get-started/configuration.md +1444 -0
  59. package/dist/docs/get-started/deployment.md +143 -0
  60. package/dist/docs/get-started/examples.md +219 -0
  61. package/dist/docs/get-started/gemini-3.md +116 -0
  62. package/dist/docs/get-started/index.md +71 -0
  63. package/dist/docs/get-started/installation.md +141 -0
  64. package/dist/docs/hooks/best-practices.md +806 -0
  65. package/dist/docs/hooks/index.md +665 -0
  66. package/dist/docs/hooks/reference.md +168 -0
  67. package/dist/docs/hooks/writing-hooks.md +1026 -0
  68. package/dist/docs/ide-integration/ide-companion-spec.md +267 -0
  69. package/dist/docs/ide-integration/index.md +202 -0
  70. package/dist/docs/index.md +147 -0
  71. package/dist/docs/integration-tests.md +211 -0
  72. package/dist/docs/issue-and-pr-automation.md +134 -0
  73. package/dist/docs/local-development.md +128 -0
  74. package/dist/docs/mermaid/context.mmd +103 -0
  75. package/dist/docs/mermaid/render-path.mmd +64 -0
  76. package/dist/docs/npm.md +62 -0
  77. package/dist/docs/quota-and-pricing.md +158 -0
  78. package/dist/docs/release-confidence.md +164 -0
  79. package/dist/docs/releases.md +540 -0
  80. package/dist/docs/sidebar.json +297 -0
  81. package/dist/docs/tools/file-system.md +217 -0
  82. package/dist/docs/tools/index.md +95 -0
  83. package/dist/docs/tools/mcp-server.md +1044 -0
  84. package/dist/docs/tools/memory.md +54 -0
  85. package/dist/docs/tools/shell.md +260 -0
  86. package/dist/docs/tools/todos.md +57 -0
  87. package/dist/docs/tools/web-fetch.md +59 -0
  88. package/dist/docs/tools/web-search.md +42 -0
  89. package/dist/docs/tos-privacy.md +96 -0
  90. package/dist/docs/troubleshooting.md +158 -0
  91. package/dist/google-gemini-cli-core-0.23.0-preview.0.tgz +0 -0
  92. package/dist/src/agents/codebase-investigator.d.ts +2 -2
  93. package/dist/src/agents/codebase-investigator.js +4 -3
  94. package/dist/src/agents/codebase-investigator.js.map +1 -1
  95. package/dist/src/agents/delegate-to-agent-tool.js +8 -4
  96. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  97. package/dist/src/agents/delegate-to-agent-tool.test.js +6 -4
  98. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  99. package/dist/src/agents/introspection-agent.d.ts +23 -0
  100. package/dist/src/agents/introspection-agent.js +72 -0
  101. package/dist/src/agents/introspection-agent.js.map +1 -0
  102. package/dist/src/agents/introspection-agent.test.js +47 -0
  103. package/dist/src/agents/introspection-agent.test.js.map +1 -0
  104. package/dist/src/agents/{executor.d.ts → local-executor.d.ts} +5 -11
  105. package/dist/src/agents/{executor.js → local-executor.js} +79 -53
  106. package/dist/src/agents/local-executor.js.map +1 -0
  107. package/dist/src/agents/{executor.test.js → local-executor.test.js} +64 -45
  108. package/dist/src/agents/local-executor.test.js.map +1 -0
  109. package/dist/src/agents/{invocation.d.ts → local-invocation.d.ts} +5 -6
  110. package/dist/src/agents/{invocation.js → local-invocation.js} +8 -9
  111. package/dist/src/agents/local-invocation.js.map +1 -0
  112. package/dist/src/agents/local-invocation.test.d.ts +6 -0
  113. package/dist/src/agents/{invocation.test.js → local-invocation.test.js} +18 -17
  114. package/dist/src/agents/local-invocation.test.js.map +1 -0
  115. package/dist/src/agents/registry.d.ts +1 -0
  116. package/dist/src/agents/registry.js +68 -20
  117. package/dist/src/agents/registry.js.map +1 -1
  118. package/dist/src/agents/registry.test.js +113 -1
  119. package/dist/src/agents/registry.test.js.map +1 -1
  120. package/dist/src/agents/remote-invocation.d.ts +21 -0
  121. package/dist/src/agents/remote-invocation.js +31 -0
  122. package/dist/src/agents/remote-invocation.js.map +1 -0
  123. package/dist/src/agents/remote-invocation.test.d.ts +6 -0
  124. package/dist/src/agents/remote-invocation.test.js +35 -0
  125. package/dist/src/agents/remote-invocation.test.js.map +1 -0
  126. package/dist/src/agents/subagent-tool-wrapper.js +7 -3
  127. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  128. package/dist/src/agents/subagent-tool-wrapper.test.js +10 -9
  129. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  130. package/dist/src/agents/toml-loader.d.ts +65 -0
  131. package/dist/src/agents/toml-loader.js +176 -0
  132. package/dist/src/agents/toml-loader.js.map +1 -0
  133. package/dist/src/agents/toml-loader.test.d.ts +6 -0
  134. package/dist/src/agents/toml-loader.test.js +190 -0
  135. package/dist/src/agents/toml-loader.test.js.map +1 -0
  136. package/dist/src/agents/types.d.ts +12 -4
  137. package/dist/src/availability/modelAvailabilityService.d.ts +2 -1
  138. package/dist/src/availability/policyHelpers.d.ts +4 -3
  139. package/dist/src/availability/policyHelpers.js +13 -20
  140. package/dist/src/availability/policyHelpers.js.map +1 -1
  141. package/dist/src/availability/policyHelpers.test.js +28 -18
  142. package/dist/src/availability/policyHelpers.test.js.map +1 -1
  143. package/dist/src/code_assist/oauth2.js +1 -1
  144. package/dist/src/code_assist/oauth2.js.map +1 -1
  145. package/dist/src/code_assist/oauth2.test.js +6 -8
  146. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  147. package/dist/src/code_assist/server.d.ts +4 -1
  148. package/dist/src/code_assist/server.js +50 -7
  149. package/dist/src/code_assist/server.js.map +1 -1
  150. package/dist/src/code_assist/server.test.js +177 -27
  151. package/dist/src/code_assist/server.test.js.map +1 -1
  152. package/dist/src/code_assist/telemetry.d.ts +14 -0
  153. package/dist/src/code_assist/telemetry.js +156 -0
  154. package/dist/src/code_assist/telemetry.js.map +1 -0
  155. package/dist/src/code_assist/telemetry.test.d.ts +6 -0
  156. package/dist/src/code_assist/telemetry.test.js +300 -0
  157. package/dist/src/code_assist/telemetry.test.js.map +1 -0
  158. package/dist/src/code_assist/types.d.ts +52 -1
  159. package/dist/src/code_assist/types.js +21 -0
  160. package/dist/src/code_assist/types.js.map +1 -1
  161. package/dist/src/config/config.d.ts +11 -13
  162. package/dist/src/config/config.js +37 -38
  163. package/dist/src/config/config.js.map +1 -1
  164. package/dist/src/config/config.test.js +72 -19
  165. package/dist/src/config/config.test.js.map +1 -1
  166. package/dist/src/config/flashFallback.test.js +0 -37
  167. package/dist/src/config/flashFallback.test.js.map +1 -1
  168. package/dist/src/config/storage.d.ts +2 -0
  169. package/dist/src/config/storage.js +6 -0
  170. package/dist/src/config/storage.js.map +1 -1
  171. package/dist/src/config/storage.test.js +8 -0
  172. package/dist/src/config/storage.test.js.map +1 -1
  173. package/dist/src/core/baseLlmClient.js +44 -43
  174. package/dist/src/core/baseLlmClient.js.map +1 -1
  175. package/dist/src/core/baseLlmClient.test.js +12 -19
  176. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  177. package/dist/src/core/client.js +23 -35
  178. package/dist/src/core/client.js.map +1 -1
  179. package/dist/src/core/client.test.js +32 -65
  180. package/dist/src/core/client.test.js.map +1 -1
  181. package/dist/src/core/clientHookTriggers.js +2 -2
  182. package/dist/src/core/clientHookTriggers.js.map +1 -1
  183. package/dist/src/core/contentGenerator.test.js +0 -6
  184. package/dist/src/core/contentGenerator.test.js.map +1 -1
  185. package/dist/src/core/coreToolHookTriggers.js +3 -3
  186. package/dist/src/core/coreToolHookTriggers.js.map +1 -1
  187. package/dist/src/core/geminiChat.js +21 -71
  188. package/dist/src/core/geminiChat.js.map +1 -1
  189. package/dist/src/core/geminiChat.test.js +16 -92
  190. package/dist/src/core/geminiChat.test.js.map +1 -1
  191. package/dist/src/core/geminiChatHookTriggers.js +3 -3
  192. package/dist/src/core/geminiChatHookTriggers.js.map +1 -1
  193. package/dist/src/core/geminiChat_network_retry.test.js +4 -6
  194. package/dist/src/core/geminiChat_network_retry.test.js.map +1 -1
  195. package/dist/src/core/prompts.test.js +0 -2
  196. package/dist/src/core/prompts.test.js.map +1 -1
  197. package/dist/src/core/sessionHookTriggers.js +3 -3
  198. package/dist/src/core/sessionHookTriggers.js.map +1 -1
  199. package/dist/src/core/turn.d.ts +1 -0
  200. package/dist/src/core/turn.js +4 -12
  201. package/dist/src/core/turn.js.map +1 -1
  202. package/dist/src/core/turn.test.js +0 -5
  203. package/dist/src/core/turn.test.js.map +1 -1
  204. package/dist/src/fallback/handler.test.js +0 -21
  205. package/dist/src/fallback/handler.test.js.map +1 -1
  206. package/dist/src/generated/git-commit.d.ts +2 -2
  207. package/dist/src/generated/git-commit.js +2 -2
  208. package/dist/src/generated/git-commit.js.map +1 -1
  209. package/dist/src/hooks/hookEventHandler.js +10 -4
  210. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  211. package/dist/src/hooks/hookEventHandler.test.js +47 -0
  212. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  213. package/dist/src/hooks/hookPlanner.js +3 -1
  214. package/dist/src/hooks/hookPlanner.js.map +1 -1
  215. package/dist/src/hooks/hookPlanner.test.js +61 -0
  216. package/dist/src/hooks/hookPlanner.test.js.map +1 -1
  217. package/dist/src/hooks/hookRegistry.d.ts +1 -1
  218. package/dist/src/hooks/hookRegistry.js +2 -2
  219. package/dist/src/hooks/hookRegistry.js.map +1 -1
  220. package/dist/src/hooks/hookRegistry.test.js +73 -0
  221. package/dist/src/hooks/hookRegistry.test.js.map +1 -1
  222. package/dist/src/hooks/hookRunner.js +14 -10
  223. package/dist/src/hooks/hookRunner.js.map +1 -1
  224. package/dist/src/hooks/hookRunner.test.js +81 -33
  225. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  226. package/dist/src/hooks/types.d.ts +2 -0
  227. package/dist/src/hooks/types.js.map +1 -1
  228. package/dist/src/index.d.ts +2 -0
  229. package/dist/src/index.js +2 -0
  230. package/dist/src/index.js.map +1 -1
  231. package/dist/src/mcp/oauth-provider.js +6 -2
  232. package/dist/src/mcp/oauth-provider.js.map +1 -1
  233. package/dist/src/mcp/oauth-provider.test.js +4 -1
  234. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  235. package/dist/src/mcp/oauth-utils.d.ts +8 -1
  236. package/dist/src/mcp/oauth-utils.js +30 -1
  237. package/dist/src/mcp/oauth-utils.js.map +1 -1
  238. package/dist/src/mcp/oauth-utils.test.js +42 -0
  239. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  240. package/dist/src/policy/config.js +1 -2
  241. package/dist/src/policy/config.js.map +1 -1
  242. package/dist/src/policy/persistence.test.js +1 -6
  243. package/dist/src/policy/persistence.test.js.map +1 -1
  244. package/dist/src/policy/policy-engine.d.ts +1 -10
  245. package/dist/src/policy/policy-engine.js +4 -24
  246. package/dist/src/policy/policy-engine.js.map +1 -1
  247. package/dist/src/policy/policy-engine.test.js +2 -26
  248. package/dist/src/policy/policy-engine.test.js.map +1 -1
  249. package/dist/src/policy/shell-safety.test.js +1 -2
  250. package/dist/src/policy/shell-safety.test.js.map +1 -1
  251. package/dist/src/policy/toml-loader.d.ts +5 -3
  252. package/dist/src/policy/toml-loader.js +20 -35
  253. package/dist/src/policy/toml-loader.js.map +1 -1
  254. package/dist/src/policy/toml-loader.test.js +7 -28
  255. package/dist/src/policy/toml-loader.test.js.map +1 -1
  256. package/dist/src/policy/types.d.ts +0 -15
  257. package/dist/src/routing/strategies/fallbackStrategy.js +0 -3
  258. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -1
  259. package/dist/src/routing/strategies/fallbackStrategy.test.js +0 -6
  260. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -1
  261. package/dist/src/services/contextManager.d.ts +5 -11
  262. package/dist/src/services/contextManager.js +20 -17
  263. package/dist/src/services/contextManager.js.map +1 -1
  264. package/dist/src/services/contextManager.test.js +40 -41
  265. package/dist/src/services/contextManager.test.js.map +1 -1
  266. package/dist/src/services/loopDetectionService.js +2 -1
  267. package/dist/src/services/loopDetectionService.js.map +1 -1
  268. package/dist/src/services/loopDetectionService.test.js +14 -8
  269. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  270. package/dist/src/services/modelConfig.integration.test.js +1 -1
  271. package/dist/src/services/modelConfig.integration.test.js.map +1 -1
  272. package/dist/src/services/shellExecutionService.js +18 -2
  273. package/dist/src/services/shellExecutionService.js.map +1 -1
  274. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +4 -2
  275. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +25 -0
  276. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  277. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +32 -1
  278. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  279. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
  280. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +12 -1
  281. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  282. package/dist/src/telemetry/loggers.js +1 -0
  283. package/dist/src/telemetry/loggers.js.map +1 -1
  284. package/dist/src/telemetry/loggers.test.js +37 -2
  285. package/dist/src/telemetry/loggers.test.js.map +1 -1
  286. package/dist/src/telemetry/sdk.js +2 -2
  287. package/dist/src/telemetry/sdk.js.map +1 -1
  288. package/dist/src/tools/get-internal-docs.d.ts +27 -0
  289. package/dist/src/tools/get-internal-docs.js +129 -0
  290. package/dist/src/tools/get-internal-docs.js.map +1 -0
  291. package/dist/src/tools/get-internal-docs.test.d.ts +6 -0
  292. package/dist/src/tools/get-internal-docs.test.js +56 -0
  293. package/dist/src/tools/get-internal-docs.test.js.map +1 -0
  294. package/dist/src/tools/ripGrep.d.ts +1 -0
  295. package/dist/src/tools/ripGrep.js +16 -4
  296. package/dist/src/tools/ripGrep.js.map +1 -1
  297. package/dist/src/tools/ripGrep.test.js +55 -0
  298. package/dist/src/tools/ripGrep.test.js.map +1 -1
  299. package/dist/src/tools/tool-names.d.ts +14 -0
  300. package/dist/src/tools/tool-names.js +55 -0
  301. package/dist/src/tools/tool-names.js.map +1 -1
  302. package/dist/src/tools/tool-names.test.d.ts +6 -0
  303. package/dist/src/tools/tool-names.test.js +43 -0
  304. package/dist/src/tools/tool-names.test.js.map +1 -0
  305. package/dist/src/tools/tool-registry.d.ts +0 -1
  306. package/dist/src/tools/tool-registry.js +1 -1
  307. package/dist/src/tools/tool-registry.js.map +1 -1
  308. package/dist/src/tools/tool-registry.test.js +2 -1
  309. package/dist/src/tools/tool-registry.test.js.map +1 -1
  310. package/dist/src/utils/checkpointUtils.js +1 -1
  311. package/dist/src/utils/checkpointUtils.js.map +1 -1
  312. package/dist/src/utils/checkpointUtils.test.js +1 -1
  313. package/dist/src/utils/checkpointUtils.test.js.map +1 -1
  314. package/dist/src/utils/editCorrector.js +1 -1
  315. package/dist/src/utils/editCorrector.js.map +1 -1
  316. package/dist/src/utils/editCorrector.test.js +2 -2
  317. package/dist/src/utils/editCorrector.test.js.map +1 -1
  318. package/dist/src/utils/environmentContext.d.ts +1 -0
  319. package/dist/src/utils/environmentContext.js +4 -0
  320. package/dist/src/utils/environmentContext.js.map +1 -1
  321. package/dist/src/utils/environmentContext.test.js +2 -0
  322. package/dist/src/utils/environmentContext.test.js.map +1 -1
  323. package/dist/src/utils/events.d.ts +3 -18
  324. package/dist/src/utils/events.js +0 -9
  325. package/dist/src/utils/events.js.map +1 -1
  326. package/dist/src/utils/geminiIgnoreParser.d.ts +11 -0
  327. package/dist/src/utils/geminiIgnoreParser.js +20 -0
  328. package/dist/src/utils/geminiIgnoreParser.js.map +1 -1
  329. package/dist/src/utils/geminiIgnoreParser.test.js +48 -0
  330. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -1
  331. package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -0
  332. package/dist/src/utils/generateContentResponseUtilities.js +10 -0
  333. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  334. package/dist/src/utils/generateContentResponseUtilities.test.js +59 -2
  335. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  336. package/dist/src/utils/memoryDiscovery.js +1 -1
  337. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  338. package/dist/src/utils/memoryDiscovery.test.js +3 -1
  339. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  340. package/dist/src/utils/shell-utils.js +25 -4
  341. package/dist/src/utils/shell-utils.js.map +1 -1
  342. package/dist/tsconfig.tsbuildinfo +1 -1
  343. package/package.json +1 -6
  344. package/dist/google-gemini-cli-core-0.22.0-preview.3.tgz +0 -0
  345. package/dist/src/agents/executor.js.map +0 -1
  346. package/dist/src/agents/executor.test.js.map +0 -1
  347. package/dist/src/agents/invocation.js.map +0 -1
  348. package/dist/src/agents/invocation.test.js.map +0 -1
  349. /package/dist/src/agents/{executor.test.d.ts → introspection-agent.test.d.ts} +0 -0
  350. /package/dist/src/agents/{invocation.test.d.ts → local-executor.test.d.ts} +0 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,300 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { createConversationOffered, formatProtoJsonDuration, recordConversationOffered, recordToolCallInteractions, } from './telemetry.js';
8
+ import { ActionStatus, ConversationInteractionInteraction, } from './types.js';
9
+ import { FinishReason, GenerateContentResponse, } from '@google/genai';
10
+ import * as codeAssist from './codeAssist.js';
11
+ import { ToolConfirmationOutcome, } from '../tools/tools.js';
12
+ function createMockResponse(candidates = [], ok = true, functionCalls = undefined) {
13
+ const response = new GenerateContentResponse();
14
+ response.candidates = candidates;
15
+ response.sdkHttpResponse = {
16
+ responseInternal: {
17
+ ok,
18
+ },
19
+ json: async () => ({}),
20
+ };
21
+ // If functionCalls is explicitly provided, mock the getter.
22
+ // Otherwise, let the default behavior (if any) or undefined prevail.
23
+ // In the real SDK, functionCalls is a getter derived from candidates.
24
+ // For testing `createConversationOffered` which guards on functionCalls,
25
+ // we often need to force it to be present.
26
+ if (functionCalls !== undefined) {
27
+ Object.defineProperty(response, 'functionCalls', {
28
+ get: () => functionCalls,
29
+ configurable: true,
30
+ });
31
+ }
32
+ return response;
33
+ }
34
+ describe('telemetry', () => {
35
+ describe('createConversationOffered', () => {
36
+ it('should create a ConversationOffered object with correct values', () => {
37
+ const response = createMockResponse([
38
+ {
39
+ index: 0,
40
+ content: {
41
+ role: 'model',
42
+ parts: [{ text: 'response with ```code```' }],
43
+ },
44
+ citationMetadata: {
45
+ citations: [
46
+ { uri: 'https://example.com', startIndex: 0, endIndex: 10 },
47
+ ],
48
+ },
49
+ finishReason: FinishReason.STOP,
50
+ },
51
+ ], true, [{ name: 'someTool', args: {} }]);
52
+ const traceId = 'test-trace-id';
53
+ const streamingLatency = { totalLatency: '1s' };
54
+ const result = createConversationOffered(response, traceId, undefined, streamingLatency);
55
+ expect(result).toEqual({
56
+ citationCount: '1',
57
+ includedCode: true,
58
+ status: ActionStatus.ACTION_STATUS_NO_ERROR,
59
+ traceId,
60
+ streamingLatency,
61
+ isAgentic: true,
62
+ });
63
+ });
64
+ it('should return undefined if no function calls', () => {
65
+ const response = createMockResponse([
66
+ {
67
+ index: 0,
68
+ content: {
69
+ role: 'model',
70
+ parts: [{ text: 'response without function calls' }],
71
+ },
72
+ },
73
+ ], true, []);
74
+ const result = createConversationOffered(response, 'trace-id', undefined, {});
75
+ expect(result).toBeUndefined();
76
+ });
77
+ it('should set status to CANCELLED if signal is aborted', () => {
78
+ const response = createMockResponse([], true, [
79
+ { name: 'tool', args: {} },
80
+ ]);
81
+ const signal = new AbortController().signal;
82
+ vi.spyOn(signal, 'aborted', 'get').mockReturnValue(true);
83
+ const result = createConversationOffered(response, 'trace-id', signal, {});
84
+ expect(result?.status).toBe(ActionStatus.ACTION_STATUS_CANCELLED);
85
+ });
86
+ it('should set status to ERROR_UNKNOWN if response has error (non-OK SDK response)', () => {
87
+ const response = createMockResponse([], false, [
88
+ { name: 'tool', args: {} },
89
+ ]);
90
+ const result = createConversationOffered(response, 'trace-id', undefined, {});
91
+ expect(result?.status).toBe(ActionStatus.ACTION_STATUS_ERROR_UNKNOWN);
92
+ });
93
+ it('should set status to ERROR_UNKNOWN if finishReason is not STOP or MAX_TOKENS', () => {
94
+ const response = createMockResponse([
95
+ {
96
+ index: 0,
97
+ finishReason: FinishReason.SAFETY,
98
+ },
99
+ ], true, [{ name: 'tool', args: {} }]);
100
+ const result = createConversationOffered(response, 'trace-id', undefined, {});
101
+ expect(result?.status).toBe(ActionStatus.ACTION_STATUS_ERROR_UNKNOWN);
102
+ });
103
+ it('should set status to EMPTY if candidates is empty', () => {
104
+ // We force functionCalls to be present to bypass the guard,
105
+ // simulating a state where we want to test the candidates check.
106
+ const response = createMockResponse([], true, [
107
+ { name: 'tool', args: {} },
108
+ ]);
109
+ const result = createConversationOffered(response, 'trace-id', undefined, {});
110
+ expect(result?.status).toBe(ActionStatus.ACTION_STATUS_EMPTY);
111
+ });
112
+ it('should detect code in response', () => {
113
+ const response = createMockResponse([
114
+ {
115
+ index: 0,
116
+ content: {
117
+ parts: [
118
+ { text: 'Here is some code:\n```js\nconsole.log("hi")\n```' },
119
+ ],
120
+ },
121
+ },
122
+ ], true, [{ name: 'tool', args: {} }]);
123
+ const result = createConversationOffered(response, 'id', undefined, {});
124
+ expect(result?.includedCode).toBe(true);
125
+ });
126
+ it('should not detect code if no backticks', () => {
127
+ const response = createMockResponse([
128
+ {
129
+ index: 0,
130
+ content: {
131
+ parts: [{ text: 'Here is some text.' }],
132
+ },
133
+ },
134
+ ], true, [{ name: 'tool', args: {} }]);
135
+ const result = createConversationOffered(response, 'id', undefined, {});
136
+ expect(result?.includedCode).toBe(false);
137
+ });
138
+ });
139
+ describe('formatProtoJsonDuration', () => {
140
+ it('should format milliseconds to seconds string', () => {
141
+ expect(formatProtoJsonDuration(1500)).toBe('1.5s');
142
+ expect(formatProtoJsonDuration(100)).toBe('0.1s');
143
+ });
144
+ });
145
+ describe('recordConversationOffered', () => {
146
+ it('should call server.recordConversationOffered if traceId is present', async () => {
147
+ const serverMock = {
148
+ recordConversationOffered: vi.fn(),
149
+ };
150
+ const response = createMockResponse([], true, [
151
+ { name: 'tool', args: {} },
152
+ ]);
153
+ const streamingLatency = {};
154
+ await recordConversationOffered(serverMock, 'trace-id', response, streamingLatency, undefined);
155
+ expect(serverMock.recordConversationOffered).toHaveBeenCalledWith(expect.objectContaining({
156
+ traceId: 'trace-id',
157
+ }));
158
+ });
159
+ it('should not call server.recordConversationOffered if traceId is undefined', async () => {
160
+ const serverMock = {
161
+ recordConversationOffered: vi.fn(),
162
+ };
163
+ const response = createMockResponse([], true, [
164
+ { name: 'tool', args: {} },
165
+ ]);
166
+ await recordConversationOffered(serverMock, undefined, response, {}, undefined);
167
+ expect(serverMock.recordConversationOffered).not.toHaveBeenCalled();
168
+ });
169
+ });
170
+ describe('recordToolCallInteractions', () => {
171
+ let mockServer;
172
+ beforeEach(() => {
173
+ mockServer = {
174
+ recordConversationInteraction: vi.fn(),
175
+ };
176
+ vi.spyOn(codeAssist, 'getCodeAssistServer').mockReturnValue(mockServer);
177
+ });
178
+ afterEach(() => {
179
+ vi.restoreAllMocks();
180
+ });
181
+ it('should record ACCEPT_FILE interaction for accepted edit tools', async () => {
182
+ const toolCalls = [
183
+ {
184
+ request: {
185
+ name: 'replace', // in EDIT_TOOL_NAMES
186
+ args: {},
187
+ callId: 'call-1',
188
+ isClientInitiated: false,
189
+ prompt_id: 'p1',
190
+ traceId: 'trace-1',
191
+ },
192
+ outcome: ToolConfirmationOutcome.ProceedOnce,
193
+ status: 'success',
194
+ },
195
+ ];
196
+ await recordToolCallInteractions({}, toolCalls);
197
+ expect(mockServer.recordConversationInteraction).toHaveBeenCalledWith({
198
+ traceId: 'trace-1',
199
+ status: ActionStatus.ACTION_STATUS_NO_ERROR,
200
+ interaction: ConversationInteractionInteraction.ACCEPT_FILE,
201
+ isAgentic: true,
202
+ });
203
+ });
204
+ it('should record UNKNOWN interaction for other accepted tools', async () => {
205
+ const toolCalls = [
206
+ {
207
+ request: {
208
+ name: 'read_file', // NOT in EDIT_TOOL_NAMES
209
+ args: {},
210
+ callId: 'call-2',
211
+ isClientInitiated: false,
212
+ prompt_id: 'p2',
213
+ traceId: 'trace-2',
214
+ },
215
+ outcome: ToolConfirmationOutcome.ProceedOnce,
216
+ status: 'success',
217
+ },
218
+ ];
219
+ await recordToolCallInteractions({}, toolCalls);
220
+ expect(mockServer.recordConversationInteraction).toHaveBeenCalledWith({
221
+ traceId: 'trace-2',
222
+ status: ActionStatus.ACTION_STATUS_NO_ERROR,
223
+ interaction: ConversationInteractionInteraction.UNKNOWN,
224
+ isAgentic: true,
225
+ });
226
+ });
227
+ it('should not record interaction for cancelled status', async () => {
228
+ const toolCalls = [
229
+ {
230
+ request: {
231
+ name: 'tool',
232
+ args: {},
233
+ callId: 'call-3',
234
+ isClientInitiated: false,
235
+ prompt_id: 'p3',
236
+ traceId: 'trace-3',
237
+ },
238
+ status: 'cancelled',
239
+ response: {},
240
+ tool: {},
241
+ invocation: {},
242
+ },
243
+ ];
244
+ await recordToolCallInteractions({}, toolCalls);
245
+ expect(mockServer.recordConversationInteraction).not.toHaveBeenCalled();
246
+ });
247
+ it('should not record interaction for error status', async () => {
248
+ const toolCalls = [
249
+ {
250
+ request: {
251
+ name: 'tool',
252
+ args: {},
253
+ callId: 'call-4',
254
+ isClientInitiated: false,
255
+ prompt_id: 'p4',
256
+ traceId: 'trace-4',
257
+ },
258
+ status: 'error',
259
+ response: {
260
+ error: new Error('fail'),
261
+ },
262
+ },
263
+ ];
264
+ await recordToolCallInteractions({}, toolCalls);
265
+ expect(mockServer.recordConversationInteraction).not.toHaveBeenCalled();
266
+ });
267
+ it('should not record interaction if tool calls are mixed or not 100% accepted', async () => {
268
+ // Logic: traceId && acceptedToolCalls / toolCalls.length >= 1
269
+ const toolCalls = [
270
+ {
271
+ request: {
272
+ name: 't1',
273
+ args: {},
274
+ callId: 'c1',
275
+ isClientInitiated: false,
276
+ prompt_id: 'p1',
277
+ traceId: 't1',
278
+ },
279
+ outcome: ToolConfirmationOutcome.ProceedOnce,
280
+ status: 'success',
281
+ },
282
+ {
283
+ request: {
284
+ name: 't2',
285
+ args: {},
286
+ callId: 'c2',
287
+ isClientInitiated: false,
288
+ prompt_id: 'p1',
289
+ traceId: 't1',
290
+ },
291
+ outcome: ToolConfirmationOutcome.Cancel, // Rejected
292
+ status: 'success',
293
+ },
294
+ ];
295
+ await recordToolCallInteractions({}, toolCalls);
296
+ expect(mockServer.recordConversationInteraction).not.toHaveBeenCalled();
297
+ });
298
+ });
299
+ });
300
+ //# sourceMappingURL=telemetry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.test.js","sourceRoot":"","sources":["../../../src/code_assist/telemetry.test.ts"],"names":[],"mappings":"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"}
@@ -140,7 +140,7 @@ export interface HelpLinkUrl {
140
140
  }
141
141
  export interface SetCodeAssistGlobalUserSettingRequest {
142
142
  cloudaicompanionProject?: string;
143
- freeTierDataCollectionOptin: boolean;
143
+ freeTierDataCollectionOptin?: boolean;
144
144
  }
145
145
  export interface CodeAssistGlobalUserSettingResponse {
146
146
  cloudaicompanionProject?: string;
@@ -174,4 +174,55 @@ export interface BucketInfo {
174
174
  export interface RetrieveUserQuotaResponse {
175
175
  buckets?: BucketInfo[];
176
176
  }
177
+ export interface RecordCodeAssistMetricsRequest {
178
+ project: string;
179
+ requestId?: string;
180
+ metadata?: ClientMetadata;
181
+ metrics?: CodeAssistMetric[];
182
+ }
183
+ export interface CodeAssistMetric {
184
+ timestamp?: string;
185
+ metricMetadata?: Map<string, string>;
186
+ conversationOffered?: ConversationOffered;
187
+ conversationInteraction?: ConversationInteraction;
188
+ }
189
+ export declare enum ConversationInteractionInteraction {
190
+ UNKNOWN = 0,
191
+ THUMBSUP = 1,
192
+ THUMBSDOWN = 2,
193
+ COPY = 3,
194
+ INSERT = 4,
195
+ ACCEPT_CODE_BLOCK = 5,
196
+ ACCEPT_ALL = 6,
197
+ ACCEPT_FILE = 7,
198
+ DIFF = 8,
199
+ ACCEPT_RANGE = 9
200
+ }
201
+ export declare enum ActionStatus {
202
+ ACTION_STATUS_UNSPECIFIED = 0,
203
+ ACTION_STATUS_NO_ERROR = 1,
204
+ ACTION_STATUS_ERROR_UNKNOWN = 2,
205
+ ACTION_STATUS_CANCELLED = 3,
206
+ ACTION_STATUS_EMPTY = 4
207
+ }
208
+ export interface ConversationOffered {
209
+ citationCount?: string;
210
+ includedCode?: boolean;
211
+ status?: ActionStatus;
212
+ traceId?: string;
213
+ streamingLatency?: StreamingLatency;
214
+ isAgentic?: boolean;
215
+ }
216
+ export interface StreamingLatency {
217
+ firstMessageLatency?: string;
218
+ totalLatency?: string;
219
+ }
220
+ export interface ConversationInteraction {
221
+ traceId: string;
222
+ status?: ActionStatus;
223
+ interaction?: ConversationInteractionInteraction;
224
+ acceptedLines?: string;
225
+ language?: string;
226
+ isAgentic?: boolean;
227
+ }
177
228
  export {};
@@ -43,4 +43,25 @@ export var OnboardUserStatusCode;
43
43
  OnboardUserStatusCode["Warning"] = "WARNING";
44
44
  OnboardUserStatusCode["Error"] = "ERROR";
45
45
  })(OnboardUserStatusCode || (OnboardUserStatusCode = {}));
46
+ export var ConversationInteractionInteraction;
47
+ (function (ConversationInteractionInteraction) {
48
+ ConversationInteractionInteraction[ConversationInteractionInteraction["UNKNOWN"] = 0] = "UNKNOWN";
49
+ ConversationInteractionInteraction[ConversationInteractionInteraction["THUMBSUP"] = 1] = "THUMBSUP";
50
+ ConversationInteractionInteraction[ConversationInteractionInteraction["THUMBSDOWN"] = 2] = "THUMBSDOWN";
51
+ ConversationInteractionInteraction[ConversationInteractionInteraction["COPY"] = 3] = "COPY";
52
+ ConversationInteractionInteraction[ConversationInteractionInteraction["INSERT"] = 4] = "INSERT";
53
+ ConversationInteractionInteraction[ConversationInteractionInteraction["ACCEPT_CODE_BLOCK"] = 5] = "ACCEPT_CODE_BLOCK";
54
+ ConversationInteractionInteraction[ConversationInteractionInteraction["ACCEPT_ALL"] = 6] = "ACCEPT_ALL";
55
+ ConversationInteractionInteraction[ConversationInteractionInteraction["ACCEPT_FILE"] = 7] = "ACCEPT_FILE";
56
+ ConversationInteractionInteraction[ConversationInteractionInteraction["DIFF"] = 8] = "DIFF";
57
+ ConversationInteractionInteraction[ConversationInteractionInteraction["ACCEPT_RANGE"] = 9] = "ACCEPT_RANGE";
58
+ })(ConversationInteractionInteraction || (ConversationInteractionInteraction = {}));
59
+ export var ActionStatus;
60
+ (function (ActionStatus) {
61
+ ActionStatus[ActionStatus["ACTION_STATUS_UNSPECIFIED"] = 0] = "ACTION_STATUS_UNSPECIFIED";
62
+ ActionStatus[ActionStatus["ACTION_STATUS_NO_ERROR"] = 1] = "ACTION_STATUS_NO_ERROR";
63
+ ActionStatus[ActionStatus["ACTION_STATUS_ERROR_UNKNOWN"] = 2] = "ACTION_STATUS_ERROR_UNKNOWN";
64
+ ActionStatus[ActionStatus["ACTION_STATUS_CANCELLED"] = 3] = "ACTION_STATUS_CANCELLED";
65
+ ActionStatus[ActionStatus["ACTION_STATUS_EMPTY"] = 4] = "ACTION_STATUS_EMPTY";
66
+ })(ActionStatus || (ActionStatus = {}));
46
67
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/code_assist/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgFH;;;GAGG;AACH,MAAM,CAAN,IAAY,wBAWX;AAXD,WAAY,wBAAwB;IAClC,uBAAuB;IACvB,uDAA2B,CAAA;IAC3B,qEAAyC,CAAA;IACzC,iEAAqC,CAAA;IACrC,6DAAiC,CAAA;IACjC,qEAAyC,CAAA;IACzC,+CAAmB,CAAA;IACnB,iEAAqC,CAAA;IACrC,yEAA6C,CAAA;IAC7C,qBAAqB;AACvB,CAAC,EAXW,wBAAwB,KAAxB,wBAAwB,QAWnC;AACD;;;;GAIG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,gCAAkB,CAAA;IAClB,oCAAsB,CAAA;IACtB,wCAA0B,CAAA;AAC5B,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AA0CD;;;;GAIG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;AACjB,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/code_assist/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgFH;;;GAGG;AACH,MAAM,CAAN,IAAY,wBAWX;AAXD,WAAY,wBAAwB;IAClC,uBAAuB;IACvB,uDAA2B,CAAA;IAC3B,qEAAyC,CAAA;IACzC,iEAAqC,CAAA;IACrC,6DAAiC,CAAA;IACjC,qEAAyC,CAAA;IACzC,+CAAmB,CAAA;IACnB,iEAAqC,CAAA;IACrC,yEAA6C,CAAA;IAC7C,qBAAqB;AACvB,CAAC,EAXW,wBAAwB,KAAxB,wBAAwB,QAWnC;AACD;;;;GAIG;AACH,MAAM,CAAN,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,gCAAkB,CAAA;IAClB,oCAAsB,CAAA;IACtB,wCAA0B,CAAA;AAC5B,CAAC,EAJW,UAAU,KAAV,UAAU,QAIrB;AA0CD;;;;GAIG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAAiB,CAAA;IACjB,4CAAmB,CAAA;IACnB,wCAAe,CAAA;AACjB,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AA2ED,MAAM,CAAN,IAAY,kCAWX;AAXD,WAAY,kCAAkC;IAC5C,iGAAW,CAAA;IACX,mGAAY,CAAA;IACZ,uGAAc,CAAA;IACd,2FAAQ,CAAA;IACR,+FAAU,CAAA;IACV,qHAAqB,CAAA;IACrB,uGAAc,CAAA;IACd,yGAAe,CAAA;IACf,2FAAQ,CAAA;IACR,2GAAgB,CAAA;AAClB,CAAC,EAXW,kCAAkC,KAAlC,kCAAkC,QAW7C;AAED,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,yFAA6B,CAAA;IAC7B,mFAA0B,CAAA;IAC1B,6FAA+B,CAAA;IAC/B,qFAA2B,CAAA;IAC3B,6EAAuB,CAAA;AACzB,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB"}
@@ -70,6 +70,9 @@ export interface CodebaseInvestigatorSettings {
70
70
  thinkingBudget?: number;
71
71
  model?: string;
72
72
  }
73
+ export interface IntrospectionAgentSettings {
74
+ enabled?: boolean;
75
+ }
73
76
  /**
74
77
  * All information required in CLI to handle an extension. Defined in Core so
75
78
  * that the collection of loaded, active, and inactive extensions can be passed
@@ -210,6 +213,7 @@ export interface ConfigParameters {
210
213
  enableMessageBusIntegration?: boolean;
211
214
  disableModelRouterForAuth?: AuthType[];
212
215
  codebaseInvestigatorSettings?: CodebaseInvestigatorSettings;
216
+ introspectionAgentSettings?: IntrospectionAgentSettings;
213
217
  continueOnFailedApiCall?: boolean;
214
218
  retryFetchErrors?: boolean;
215
219
  enableShellOutputEfficiency?: boolean;
@@ -230,7 +234,6 @@ export interface ConfigParameters {
230
234
  });
231
235
  previewFeatures?: boolean;
232
236
  enableAgents?: boolean;
233
- enableModelAvailabilityService?: boolean;
234
237
  experimentalJitContext?: boolean;
235
238
  }
236
239
  export declare class Config {
@@ -262,6 +265,7 @@ export declare class Config {
262
265
  private userMemory;
263
266
  private geminiMdFileCount;
264
267
  private geminiMdFilePaths;
268
+ private approvalMode;
265
269
  private readonly showMemoryUsage;
266
270
  private readonly accessibility;
267
271
  private readonly telemetrySettings;
@@ -283,7 +287,6 @@ export declare class Config {
283
287
  private readonly noBrowser;
284
288
  private readonly folderTrust;
285
289
  private ideMode;
286
- private inFallbackMode;
287
290
  private _activeModel;
288
291
  private readonly maxSessionTurns;
289
292
  private readonly listSessions;
@@ -323,6 +326,7 @@ export declare class Config {
323
326
  private readonly outputSettings;
324
327
  private readonly enableMessageBusIntegration;
325
328
  private readonly codebaseInvestigatorSettings;
329
+ private readonly introspectionAgentSettings;
326
330
  private readonly continueOnFailedApiCall;
327
331
  private readonly retryFetchErrors;
328
332
  private readonly enableShellOutputEfficiency;
@@ -337,12 +341,10 @@ export declare class Config {
337
341
  private experiments;
338
342
  private experimentsPromise;
339
343
  private hookSystem?;
340
- private previewModelFallbackMode;
341
- private previewModelBypassMode;
342
- private readonly enableModelAvailabilityService;
343
344
  private readonly enableAgents;
344
345
  private readonly experimentalJitContext;
345
346
  private contextManager?;
347
+ private terminalBackground;
346
348
  constructor(params: ConfigParameters);
347
349
  /**
348
350
  * Must only be called once, throws if called again.
@@ -358,6 +360,8 @@ export declare class Config {
358
360
  getBaseLlmClient(): BaseLlmClient;
359
361
  getSessionId(): string;
360
362
  setSessionId(sessionId: string): void;
363
+ setTerminalBackground(terminalBackground: string | undefined): void;
364
+ getTerminalBackground(): string | undefined;
361
365
  shouldLoadMemoryFromIncludeDirectories(): boolean;
362
366
  getImportFormat(): 'tree' | 'flat';
363
367
  getDiscoveryMaxDirs(): number;
@@ -366,15 +370,9 @@ export declare class Config {
366
370
  setModel(newModel: string): void;
367
371
  getActiveModel(): string;
368
372
  setActiveModel(model: string): void;
369
- resetTurn(): void;
370
- isInFallbackMode(): boolean;
371
- setFallbackMode(active: boolean): void;
372
373
  setFallbackModelHandler(handler: FallbackModelHandler): void;
373
374
  getFallbackModelHandler(): FallbackModelHandler | undefined;
374
- isPreviewModelFallbackMode(): boolean;
375
- setPreviewModelFallbackMode(active: boolean): void;
376
- isPreviewModelBypassMode(): boolean;
377
- setPreviewModelBypassMode(active: boolean): void;
375
+ resetTurn(): void;
378
376
  getMaxSessionTurns(): number;
379
377
  setQuotaErrorOccurred(value: boolean): void;
380
378
  getQuotaErrorOccurred(): boolean;
@@ -476,7 +474,6 @@ export declare class Config {
476
474
  getExtensionLoader(): ExtensionLoader;
477
475
  getEnabledExtensions(): string[];
478
476
  getEnableExtensionReloading(): boolean;
479
- isModelAvailabilityServiceEnabled(): boolean;
480
477
  isAgentsEnabled(): boolean;
481
478
  getNoBrowser(): boolean;
482
479
  isBrowserLaunchSuppressed(): boolean;
@@ -531,6 +528,7 @@ export declare class Config {
531
528
  getEnableMessageBusIntegration(): boolean;
532
529
  getEnableHooks(): boolean;
533
530
  getCodebaseInvestigatorSettings(): CodebaseInvestigatorSettings;
531
+ getIntrospectionAgentSettings(): IntrospectionAgentSettings;
534
532
  createToolRegistry(): Promise<ToolRegistry>;
535
533
  /**
536
534
  * Get the hook system instance