@google/gemini-cli-core 0.24.0-nightly.20251231.05049b5ab → 0.24.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/dist/docs/cli/settings.md +1 -0
  2. package/dist/docs/cli/skills.md +156 -0
  3. package/dist/docs/cli/telemetry.md +3 -3
  4. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  5. package/dist/docs/cli/tutorials.md +4 -0
  6. package/dist/docs/get-started/configuration.md +32 -11
  7. package/dist/docs/hooks/best-practices.md +177 -127
  8. package/dist/docs/hooks/index.md +22 -0
  9. package/dist/docs/sidebar.json +4 -0
  10. package/dist/src/agents/a2a-client-manager.d.ts +5 -0
  11. package/dist/src/agents/a2a-client-manager.js +130 -0
  12. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  13. package/dist/src/agents/a2a-client-manager.test.js +27 -1
  14. package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
  15. package/dist/src/agents/a2aUtils.d.ts +28 -0
  16. package/dist/src/agents/a2aUtils.js +111 -0
  17. package/dist/src/agents/a2aUtils.js.map +1 -0
  18. package/dist/src/agents/a2aUtils.test.js +147 -0
  19. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  20. package/dist/src/agents/delegate-to-agent-tool.d.ts +2 -2
  21. package/dist/src/agents/delegate-to-agent-tool.js +6 -6
  22. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  23. package/dist/src/agents/delegate-to-agent-tool.test.js +37 -7
  24. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  25. package/dist/src/agents/introspection-agent.js +2 -2
  26. package/dist/src/agents/introspection-agent.js.map +1 -1
  27. package/dist/src/agents/introspection-agent.test.js +2 -2
  28. package/dist/src/agents/introspection-agent.test.js.map +1 -1
  29. package/dist/src/agents/local-executor.js +1 -1
  30. package/dist/src/agents/local-executor.js.map +1 -1
  31. package/dist/src/agents/local-executor.test.js +2 -2
  32. package/dist/src/agents/local-executor.test.js.map +1 -1
  33. package/dist/src/agents/local-invocation.d.ts +2 -2
  34. package/dist/src/agents/local-invocation.js +3 -3
  35. package/dist/src/agents/local-invocation.js.map +1 -1
  36. package/dist/src/agents/local-invocation.test.js +7 -5
  37. package/dist/src/agents/local-invocation.test.js.map +1 -1
  38. package/dist/src/agents/remote-invocation.d.ts +17 -3
  39. package/dist/src/agents/remote-invocation.js +104 -6
  40. package/dist/src/agents/remote-invocation.js.map +1 -1
  41. package/dist/src/agents/remote-invocation.test.js +184 -18
  42. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  43. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  44. package/dist/src/agents/subagent-tool-wrapper.js +6 -5
  45. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  46. package/dist/src/agents/subagent-tool-wrapper.test.js +17 -10
  47. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  48. package/dist/src/agents/types.d.ts +6 -0
  49. package/dist/src/code_assist/oauth2.js +31 -1
  50. package/dist/src/code_assist/oauth2.js.map +1 -1
  51. package/dist/src/code_assist/oauth2.test.js +75 -3
  52. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  53. package/dist/src/code_assist/server.d.ts +5 -0
  54. package/dist/src/code_assist/server.js +19 -4
  55. package/dist/src/code_assist/server.js.map +1 -1
  56. package/dist/src/code_assist/server.test.js +19 -0
  57. package/dist/src/code_assist/server.test.js.map +1 -1
  58. package/dist/src/code_assist/setup.js +6 -4
  59. package/dist/src/code_assist/setup.js.map +1 -1
  60. package/dist/src/code_assist/setup.test.js +63 -0
  61. package/dist/src/code_assist/setup.test.js.map +1 -1
  62. package/dist/src/code_assist/types.d.ts +18 -0
  63. package/dist/src/config/config.d.ts +20 -6
  64. package/dist/src/config/config.js +63 -37
  65. package/dist/src/config/config.js.map +1 -1
  66. package/dist/src/config/config.test.js +81 -4
  67. package/dist/src/config/config.test.js.map +1 -1
  68. package/dist/src/config/flashFallback.test.js +13 -0
  69. package/dist/src/config/flashFallback.test.js.map +1 -1
  70. package/dist/src/config/models.js +6 -4
  71. package/dist/src/config/models.js.map +1 -1
  72. package/dist/src/config/models.test.js +21 -1
  73. package/dist/src/config/models.test.js.map +1 -1
  74. package/dist/src/core/client.js +39 -7
  75. package/dist/src/core/client.js.map +1 -1
  76. package/dist/src/core/client.test.js +93 -1
  77. package/dist/src/core/client.test.js.map +1 -1
  78. package/dist/src/core/contentGenerator.js +1 -1
  79. package/dist/src/core/contentGenerator.js.map +1 -1
  80. package/dist/src/core/contentGenerator.test.js +1 -1
  81. package/dist/src/core/contentGenerator.test.js.map +1 -1
  82. package/dist/src/core/coreToolHookTriggers.test.js +11 -9
  83. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
  84. package/dist/src/core/coreToolScheduler.d.ts +1 -0
  85. package/dist/src/core/coreToolScheduler.js +30 -106
  86. package/dist/src/core/coreToolScheduler.js.map +1 -1
  87. package/dist/src/core/coreToolScheduler.test.js +21 -22
  88. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  89. package/dist/src/core/loggingContentGenerator.js +14 -2
  90. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  91. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -1
  92. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  93. package/dist/src/core/prompts.js +29 -5
  94. package/dist/src/core/prompts.js.map +1 -1
  95. package/dist/src/core/prompts.test.js +40 -1
  96. package/dist/src/core/prompts.test.js.map +1 -1
  97. package/dist/src/core/sessionHookTriggers.d.ts +3 -2
  98. package/dist/src/core/sessionHookTriggers.js +8 -1
  99. package/dist/src/core/sessionHookTriggers.js.map +1 -1
  100. package/dist/src/core/turn.d.ts +16 -2
  101. package/dist/src/core/turn.js +2 -0
  102. package/dist/src/core/turn.js.map +1 -1
  103. package/dist/src/generated/git-commit.d.ts +3 -3
  104. package/dist/src/generated/git-commit.js +3 -3
  105. package/dist/src/generated/git-commit.js.map +1 -1
  106. package/dist/src/hooks/hookEventHandler.d.ts +6 -2
  107. package/dist/src/hooks/hookEventHandler.js +24 -3
  108. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  109. package/dist/src/hooks/hookEventHandler.test.js +31 -8
  110. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  111. package/dist/src/hooks/hookRunner.d.ts +2 -2
  112. package/dist/src/hooks/hookRunner.js +12 -4
  113. package/dist/src/hooks/hookRunner.js.map +1 -1
  114. package/dist/src/hooks/hookRunner.test.js +33 -0
  115. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  116. package/dist/src/index.d.ts +3 -1
  117. package/dist/src/index.js +3 -2
  118. package/dist/src/index.js.map +1 -1
  119. package/dist/src/policy/config.js +60 -22
  120. package/dist/src/policy/config.js.map +1 -1
  121. package/dist/src/policy/config.test.js +21 -0
  122. package/dist/src/policy/config.test.js.map +1 -1
  123. package/dist/src/policy/persistence.test.js +1 -1
  124. package/dist/src/policy/persistence.test.js.map +1 -1
  125. package/dist/src/policy/policies/write.toml +5 -0
  126. package/dist/src/policy/policy-engine.d.ts +4 -0
  127. package/dist/src/policy/policy-engine.js +75 -51
  128. package/dist/src/policy/policy-engine.js.map +1 -1
  129. package/dist/src/policy/policy-engine.test.js +272 -1
  130. package/dist/src/policy/policy-engine.test.js.map +1 -1
  131. package/dist/src/policy/policy-updater.test.js +2 -2
  132. package/dist/src/policy/policy-updater.test.js.map +1 -1
  133. package/dist/src/policy/toml-loader.d.ts +0 -8
  134. package/dist/src/policy/toml-loader.js +7 -70
  135. package/dist/src/policy/toml-loader.js.map +1 -1
  136. package/dist/src/policy/toml-loader.test.js +16 -6
  137. package/dist/src/policy/toml-loader.test.js.map +1 -1
  138. package/dist/src/policy/types.d.ts +6 -0
  139. package/dist/src/policy/utils.d.ts +21 -0
  140. package/dist/src/policy/utils.js +42 -0
  141. package/dist/src/policy/utils.js.map +1 -0
  142. package/dist/src/policy/utils.test.js +64 -0
  143. package/dist/src/policy/utils.test.js.map +1 -0
  144. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  145. package/dist/src/scheduler/tool-executor.js +198 -0
  146. package/dist/src/scheduler/tool-executor.js.map +1 -0
  147. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  148. package/dist/src/scheduler/tool-executor.test.js +231 -0
  149. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  150. package/dist/src/skills/skillLoader.d.ts +28 -0
  151. package/dist/src/skills/skillLoader.js +77 -0
  152. package/dist/src/skills/skillLoader.js.map +1 -0
  153. package/dist/src/skills/skillLoader.test.d.ts +6 -0
  154. package/dist/src/skills/skillLoader.test.js +73 -0
  155. package/dist/src/skills/skillLoader.test.js.map +1 -0
  156. package/dist/src/{services → skills}/skillManager.d.ts +10 -20
  157. package/dist/src/skills/skillManager.js +89 -0
  158. package/dist/src/skills/skillManager.js.map +1 -0
  159. package/dist/src/skills/skillManager.test.d.ts +6 -0
  160. package/dist/src/skills/skillManager.test.js +128 -0
  161. package/dist/src/skills/skillManager.test.js.map +1 -0
  162. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +5 -5
  163. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +8 -8
  164. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  165. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +1 -1
  166. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  167. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -2
  168. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -4
  169. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  170. package/dist/src/telemetry/loggers.d.ts +3 -3
  171. package/dist/src/telemetry/loggers.js +4 -4
  172. package/dist/src/telemetry/loggers.js.map +1 -1
  173. package/dist/src/telemetry/loggers.test.js +6 -8
  174. package/dist/src/telemetry/loggers.test.js.map +1 -1
  175. package/dist/src/telemetry/types.d.ts +7 -7
  176. package/dist/src/telemetry/types.js +10 -10
  177. package/dist/src/telemetry/types.js.map +1 -1
  178. package/dist/src/test-utils/mock-message-bus.d.ts +1 -0
  179. package/dist/src/test-utils/mock-message-bus.js +29 -0
  180. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  181. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  182. package/dist/src/test-utils/mock-tool.js +11 -10
  183. package/dist/src/test-utils/mock-tool.js.map +1 -1
  184. package/dist/src/tools/activate-skill.d.ts +27 -0
  185. package/dist/src/tools/activate-skill.js +120 -0
  186. package/dist/src/tools/activate-skill.js.map +1 -0
  187. package/dist/src/tools/activate-skill.test.d.ts +6 -0
  188. package/dist/src/tools/activate-skill.test.js +95 -0
  189. package/dist/src/tools/activate-skill.test.js.map +1 -0
  190. package/dist/src/tools/confirmation-policy.test.js +2 -12
  191. package/dist/src/tools/confirmation-policy.test.js.map +1 -1
  192. package/dist/src/tools/edit.d.ts +27 -5
  193. package/dist/src/tools/edit.js +444 -137
  194. package/dist/src/tools/edit.js.map +1 -1
  195. package/dist/src/tools/edit.test.js +257 -525
  196. package/dist/src/tools/edit.test.js.map +1 -1
  197. package/dist/src/tools/get-internal-docs.d.ts +2 -2
  198. package/dist/src/tools/get-internal-docs.js +6 -6
  199. package/dist/src/tools/get-internal-docs.js.map +1 -1
  200. package/dist/src/tools/get-internal-docs.test.js +2 -1
  201. package/dist/src/tools/get-internal-docs.test.js.map +1 -1
  202. package/dist/src/tools/glob.d.ts +2 -2
  203. package/dist/src/tools/glob.js +1 -1
  204. package/dist/src/tools/glob.js.map +1 -1
  205. package/dist/src/tools/glob.test.js +2 -1
  206. package/dist/src/tools/glob.test.js.map +1 -1
  207. package/dist/src/tools/grep.d.ts +2 -2
  208. package/dist/src/tools/grep.js +1 -1
  209. package/dist/src/tools/grep.js.map +1 -1
  210. package/dist/src/tools/grep.test.js +5 -4
  211. package/dist/src/tools/grep.test.js.map +1 -1
  212. package/dist/src/tools/ls.d.ts +2 -2
  213. package/dist/src/tools/ls.js +2 -2
  214. package/dist/src/tools/ls.js.map +1 -1
  215. package/dist/src/tools/ls.test.js +2 -1
  216. package/dist/src/tools/ls.test.js.map +1 -1
  217. package/dist/src/tools/mcp-client-manager.js +14 -7
  218. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  219. package/dist/src/tools/mcp-client-manager.test.js +28 -0
  220. package/dist/src/tools/mcp-client-manager.test.js.map +1 -1
  221. package/dist/src/tools/mcp-client.d.ts +2 -2
  222. package/dist/src/tools/mcp-client.js +2 -1
  223. package/dist/src/tools/mcp-client.js.map +1 -1
  224. package/dist/src/tools/mcp-tool.d.ts +2 -2
  225. package/dist/src/tools/mcp-tool.js +7 -7
  226. package/dist/src/tools/mcp-tool.js.map +1 -1
  227. package/dist/src/tools/mcp-tool.test.js +11 -6
  228. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  229. package/dist/src/tools/memoryTool.d.ts +3 -3
  230. package/dist/src/tools/memoryTool.js +2 -2
  231. package/dist/src/tools/memoryTool.js.map +1 -1
  232. package/dist/src/tools/memoryTool.test.js +5 -2
  233. package/dist/src/tools/memoryTool.test.js.map +1 -1
  234. package/dist/src/tools/message-bus-integration.test.js +10 -37
  235. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  236. package/dist/src/tools/read-file.d.ts +2 -2
  237. package/dist/src/tools/read-file.js +1 -1
  238. package/dist/src/tools/read-file.js.map +1 -1
  239. package/dist/src/tools/read-file.test.js +3 -2
  240. package/dist/src/tools/read-file.test.js.map +1 -1
  241. package/dist/src/tools/read-many-files.d.ts +2 -2
  242. package/dist/src/tools/read-many-files.js +2 -3
  243. package/dist/src/tools/read-many-files.js.map +1 -1
  244. package/dist/src/tools/read-many-files.test.js +3 -2
  245. package/dist/src/tools/read-many-files.test.js.map +1 -1
  246. package/dist/src/tools/ripGrep.d.ts +2 -2
  247. package/dist/src/tools/ripGrep.js +3 -4
  248. package/dist/src/tools/ripGrep.js.map +1 -1
  249. package/dist/src/tools/ripGrep.test.js +7 -6
  250. package/dist/src/tools/ripGrep.test.js.map +1 -1
  251. package/dist/src/tools/shell.d.ts +3 -6
  252. package/dist/src/tools/shell.js +15 -48
  253. package/dist/src/tools/shell.js.map +1 -1
  254. package/dist/src/tools/shell.test.js +35 -59
  255. package/dist/src/tools/shell.test.js.map +1 -1
  256. package/dist/src/tools/tool-names.d.ts +2 -1
  257. package/dist/src/tools/tool-names.js +2 -0
  258. package/dist/src/tools/tool-names.js.map +1 -1
  259. package/dist/src/tools/tool-registry.d.ts +11 -6
  260. package/dist/src/tools/tool-registry.js +13 -8
  261. package/dist/src/tools/tool-registry.js.map +1 -1
  262. package/dist/src/tools/tool-registry.test.js +14 -10
  263. package/dist/src/tools/tool-registry.test.js.map +1 -1
  264. package/dist/src/tools/tools.d.ts +5 -5
  265. package/dist/src/tools/tools.js +15 -17
  266. package/dist/src/tools/tools.js.map +1 -1
  267. package/dist/src/tools/tools.test.js +3 -1
  268. package/dist/src/tools/tools.test.js.map +1 -1
  269. package/dist/src/tools/web-fetch.d.ts +2 -2
  270. package/dist/src/tools/web-fetch.js +4 -4
  271. package/dist/src/tools/web-fetch.js.map +1 -1
  272. package/dist/src/tools/web-fetch.test.js +17 -19
  273. package/dist/src/tools/web-fetch.test.js.map +1 -1
  274. package/dist/src/tools/web-search.d.ts +2 -2
  275. package/dist/src/tools/web-search.js +3 -4
  276. package/dist/src/tools/web-search.js.map +1 -1
  277. package/dist/src/tools/web-search.test.js +2 -1
  278. package/dist/src/tools/web-search.test.js.map +1 -1
  279. package/dist/src/tools/write-file.d.ts +2 -2
  280. package/dist/src/tools/write-file.js +3 -3
  281. package/dist/src/tools/write-file.js.map +1 -1
  282. package/dist/src/tools/write-file.test.js +4 -1
  283. package/dist/src/tools/write-file.test.js.map +1 -1
  284. package/dist/src/tools/write-todos.d.ts +2 -2
  285. package/dist/src/tools/write-todos.js +5 -4
  286. package/dist/src/tools/write-todos.js.map +1 -1
  287. package/dist/src/tools/write-todos.test.js +2 -1
  288. package/dist/src/tools/write-todos.test.js.map +1 -1
  289. package/dist/src/utils/editCorrector.test.js +1 -1
  290. package/dist/src/utils/editCorrector.test.js.map +1 -1
  291. package/dist/src/utils/events.d.ts +46 -1
  292. package/dist/src/utils/events.js +21 -0
  293. package/dist/src/utils/events.js.map +1 -1
  294. package/dist/src/utils/events.test.js +25 -0
  295. package/dist/src/utils/events.test.js.map +1 -1
  296. package/dist/src/utils/getFolderStructure.js +6 -1
  297. package/dist/src/utils/getFolderStructure.js.map +1 -1
  298. package/dist/src/utils/shell-permissions.test.js +27 -0
  299. package/dist/src/utils/shell-permissions.test.js.map +1 -1
  300. package/dist/src/utils/shell-utils.d.ts +6 -0
  301. package/dist/src/utils/shell-utils.js +72 -8
  302. package/dist/src/utils/shell-utils.js.map +1 -1
  303. package/dist/src/utils/shell-utils.test.js +99 -1
  304. package/dist/src/utils/shell-utils.test.js.map +1 -1
  305. package/dist/src/utils/terminal.d.ts +2 -0
  306. package/dist/src/utils/terminal.js +6 -0
  307. package/dist/src/utils/terminal.js.map +1 -1
  308. package/dist/src/utils/tokenCalculation.js +20 -5
  309. package/dist/src/utils/tokenCalculation.js.map +1 -1
  310. package/dist/src/utils/tokenCalculation.test.js +11 -2
  311. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  312. package/dist/src/utils/tool-utils.test.js +2 -1
  313. package/dist/src/utils/tool-utils.test.js.map +1 -1
  314. package/dist/tsconfig.tsbuildinfo +1 -1
  315. package/package.json +1 -1
  316. package/dist/google-gemini-cli-core-0.24.0-nightly.20251227.37be16243.tgz +0 -0
  317. package/dist/src/services/skillManager.js +0 -157
  318. package/dist/src/services/skillManager.js.map +0 -1
  319. package/dist/src/services/skillManager.test.js +0 -169
  320. package/dist/src/services/skillManager.test.js.map +0 -1
  321. package/dist/src/tools/smart-edit.d.ts +0 -78
  322. package/dist/src/tools/smart-edit.js +0 -722
  323. package/dist/src/tools/smart-edit.js.map +0 -1
  324. package/dist/src/tools/smart-edit.test.js +0 -592
  325. package/dist/src/tools/smart-edit.test.js.map +0 -1
  326. /package/dist/src/{services/skillManager.test.d.ts → agents/a2aUtils.test.d.ts} +0 -0
  327. /package/dist/src/{tools/smart-edit.test.d.ts → policy/utils.test.d.ts} +0 -0
@@ -75,8 +75,10 @@ describe('setupUser for existing user', () => {
75
75
  describe('setupUser for new user', () => {
76
76
  let mockLoad;
77
77
  let mockOnboardUser;
78
+ let mockGetOperation;
78
79
  beforeEach(() => {
79
80
  vi.resetAllMocks();
81
+ vi.useFakeTimers();
80
82
  mockLoad = vi.fn();
81
83
  mockOnboardUser = vi.fn().mockResolvedValue({
82
84
  done: true,
@@ -86,12 +88,15 @@ describe('setupUser for new user', () => {
86
88
  },
87
89
  },
88
90
  });
91
+ mockGetOperation = vi.fn();
89
92
  vi.mocked(CodeAssistServer).mockImplementation(() => ({
90
93
  loadCodeAssist: mockLoad,
91
94
  onboardUser: mockOnboardUser,
95
+ getOperation: mockGetOperation,
92
96
  }));
93
97
  });
94
98
  afterEach(() => {
99
+ vi.useRealTimers();
95
100
  vi.unstubAllEnvs();
96
101
  });
97
102
  it('should use GOOGLE_CLOUD_PROJECT when set and onboard a new paid user', async () => {
@@ -167,5 +172,63 @@ describe('setupUser for new user', () => {
167
172
  });
168
173
  await expect(setupUser({})).rejects.toThrow(ProjectIdRequiredError);
169
174
  });
175
+ it('should poll getOperation when onboardUser returns done=false', async () => {
176
+ vi.stubEnv('GOOGLE_CLOUD_PROJECT', 'test-project');
177
+ mockLoad.mockResolvedValue({
178
+ allowedTiers: [mockPaidTier],
179
+ });
180
+ const operationName = 'operations/123';
181
+ mockOnboardUser.mockResolvedValueOnce({
182
+ name: operationName,
183
+ done: false,
184
+ });
185
+ mockGetOperation
186
+ .mockResolvedValueOnce({
187
+ name: operationName,
188
+ done: false,
189
+ })
190
+ .mockResolvedValueOnce({
191
+ name: operationName,
192
+ done: true,
193
+ response: {
194
+ cloudaicompanionProject: {
195
+ id: 'server-project',
196
+ },
197
+ },
198
+ });
199
+ const setupPromise = setupUser({});
200
+ await vi.advanceTimersByTimeAsync(5000);
201
+ await vi.advanceTimersByTimeAsync(5000);
202
+ const userData = await setupPromise;
203
+ expect(mockOnboardUser).toHaveBeenCalledTimes(1);
204
+ expect(mockGetOperation).toHaveBeenCalledTimes(2);
205
+ expect(mockGetOperation).toHaveBeenCalledWith(operationName);
206
+ expect(userData).toEqual({
207
+ projectId: 'server-project',
208
+ userTier: 'standard-tier',
209
+ });
210
+ });
211
+ it('should not poll getOperation when onboardUser returns done=true immediately', async () => {
212
+ vi.stubEnv('GOOGLE_CLOUD_PROJECT', 'test-project');
213
+ mockLoad.mockResolvedValue({
214
+ allowedTiers: [mockPaidTier],
215
+ });
216
+ mockOnboardUser.mockResolvedValueOnce({
217
+ name: 'operations/123',
218
+ done: true,
219
+ response: {
220
+ cloudaicompanionProject: {
221
+ id: 'server-project',
222
+ },
223
+ },
224
+ });
225
+ const userData = await setupUser({});
226
+ expect(mockOnboardUser).toHaveBeenCalledTimes(1);
227
+ expect(mockGetOperation).not.toHaveBeenCalled();
228
+ expect(userData).toEqual({
229
+ projectId: 'server-project',
230
+ userTier: 'standard-tier',
231
+ });
232
+ });
170
233
  });
171
234
  //# sourceMappingURL=setup.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../../src/code_assist/setup.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../../src/code_assist/setup.test.ts"],"names":[],"mappings":"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"}
@@ -225,4 +225,22 @@ export interface ConversationInteraction {
225
225
  language?: string;
226
226
  isAgentic?: boolean;
227
227
  }
228
+ export interface GeminiCodeAssistSetting {
229
+ secureModeEnabled?: boolean;
230
+ mcpSetting?: McpSetting;
231
+ cliFeatureSetting?: CliFeatureSetting;
232
+ }
233
+ export interface McpSetting {
234
+ mcpEnabled?: boolean;
235
+ allowedMcpConfigs?: McpConfig[];
236
+ }
237
+ export interface McpConfig {
238
+ mcpServer?: string;
239
+ }
240
+ export interface CliFeatureSetting {
241
+ extensionsSetting?: ExtensionsSetting;
242
+ }
243
+ export interface ExtensionsSetting {
244
+ extensionsEnabled?: boolean;
245
+ }
228
246
  export {};
@@ -37,9 +37,10 @@ import type { PolicyEngineConfig } from '../policy/types.js';
37
37
  import { HookSystem } from '../hooks/index.js';
38
38
  import type { UserTierId } from '../code_assist/types.js';
39
39
  import type { RetrieveUserQuotaResponse } from '../code_assist/types.js';
40
+ import type { GeminiCodeAssistSetting } from '../code_assist/types.js';
40
41
  import type { Experiments } from '../code_assist/experiments/experiments.js';
41
42
  import { AgentRegistry } from '../agents/registry.js';
42
- import { SkillManager } from '../services/skillManager.js';
43
+ import { SkillManager, type SkillDefinition } from '../skills/skillManager.js';
43
44
  import { ApprovalMode } from '../policy/types.js';
44
45
  export interface AccessibilitySettings {
45
46
  disableLoadingPhrases?: boolean;
@@ -107,6 +108,7 @@ export interface GeminiCLIExtension {
107
108
  };
108
109
  settings?: ExtensionSetting[];
109
110
  resolvedSettings?: ResolvedExtensionSetting[];
111
+ skills?: SkillDefinition[];
110
112
  }
111
113
  export interface ExtensionInstallMetadata {
112
114
  source: string;
@@ -225,7 +227,6 @@ export interface ConfigParameters {
225
227
  truncateToolOutputLines?: number;
226
228
  enableToolOutputTruncation?: boolean;
227
229
  eventEmitter?: EventEmitter;
228
- useSmartEdit?: boolean;
229
230
  useWriteTodos?: boolean;
230
231
  policyEngineConfig?: PolicyEngineConfig;
231
232
  output?: OutputSettings;
@@ -259,6 +260,10 @@ export interface ConfigParameters {
259
260
  disabledSkills?: string[];
260
261
  experimentalJitContext?: boolean;
261
262
  onModelChange?: (model: string) => void;
263
+ mcpEnabled?: boolean;
264
+ onReload?: () => Promise<{
265
+ disabledSkills?: string[];
266
+ }>;
262
267
  }
263
268
  export declare class Config {
264
269
  private toolRegistry;
@@ -289,6 +294,7 @@ export declare class Config {
289
294
  private readonly toolDiscoveryCommand;
290
295
  private readonly toolCallCommand;
291
296
  private readonly mcpServerCommand;
297
+ private readonly mcpEnabled;
292
298
  private mcpServers;
293
299
  private userMemory;
294
300
  private geminiMdFileCount;
@@ -346,7 +352,6 @@ export declare class Config {
346
352
  readonly storage: Storage;
347
353
  private readonly fileExclusions;
348
354
  private readonly eventEmitter?;
349
- private readonly useSmartEdit;
350
355
  private readonly useWriteTodos;
351
356
  private readonly messageBus;
352
357
  private readonly policyEngine;
@@ -369,12 +374,14 @@ export declare class Config {
369
374
  private experimentsPromise;
370
375
  private hookSystem?;
371
376
  private readonly onModelChange;
377
+ private readonly onReload;
372
378
  private readonly enableAgents;
373
379
  private readonly skillsSupport;
374
- private readonly disabledSkills;
380
+ private disabledSkills;
375
381
  private readonly experimentalJitContext;
376
382
  private contextManager?;
377
383
  private terminalBackground;
384
+ private remoteAdminSettings;
378
385
  constructor(params: ConfigParameters);
379
386
  /**
380
387
  * Must only be called once, throws if called again.
@@ -392,12 +399,15 @@ export declare class Config {
392
399
  setSessionId(sessionId: string): void;
393
400
  setTerminalBackground(terminalBackground: string | undefined): void;
394
401
  getTerminalBackground(): string | undefined;
402
+ getRemoteAdminSettings(): GeminiCodeAssistSetting | undefined;
403
+ setRemoteAdminSettings(settings: GeminiCodeAssistSetting): void;
395
404
  shouldLoadMemoryFromIncludeDirectories(): boolean;
396
405
  getImportFormat(): 'tree' | 'flat';
397
406
  getDiscoveryMaxDirs(): number;
398
407
  getContentGeneratorConfig(): ContentGeneratorConfig;
399
408
  getModel(): string;
400
- setModel(newModel: string, isFallbackModel?: boolean): void;
409
+ setModel(newModel: string, isTemporary?: boolean): void;
410
+ activateFallbackMode(model: string): void;
401
411
  getActiveModel(): string;
402
412
  setActiveModel(model: string): void;
403
413
  setFallbackModelHandler(handler: FallbackModelHandler): void;
@@ -442,6 +452,7 @@ export declare class Config {
442
452
  * Does NOT include mcp servers configured by extensions.
443
453
  */
444
454
  getMcpServers(): Record<string, MCPServerConfig> | undefined;
455
+ getMcpEnabled(): boolean;
445
456
  getMcpClientManager(): McpClientManager | undefined;
446
457
  getAllowedMcpServers(): string[] | undefined;
447
458
  getBlockedMcpServers(): string[] | undefined;
@@ -536,6 +547,10 @@ export declare class Config {
536
547
  private ensureExperimentsLoaded;
537
548
  isInteractiveShellEnabled(): boolean;
538
549
  isSkillsSupportEnabled(): boolean;
550
+ /**
551
+ * Reloads skills by re-discovering them from extensions and local directories.
552
+ */
553
+ reloadSkills(): Promise<void>;
539
554
  isInteractive(): boolean;
540
555
  getUseRipgrep(): boolean;
541
556
  getEnableInteractiveShell(): boolean;
@@ -551,7 +566,6 @@ export declare class Config {
551
566
  getEnableToolOutputTruncation(): boolean;
552
567
  getTruncateToolOutputThreshold(): number;
553
568
  getTruncateToolOutputLines(): number;
554
- getUseSmartEdit(): boolean;
555
569
  getUseWriteTodos(): boolean;
556
570
  getOutputFormat(): OutputFormat;
557
571
  getGitService(): Promise<GitService>;
@@ -15,8 +15,8 @@ import { ReadFileTool } from '../tools/read-file.js';
15
15
  import { GrepTool } from '../tools/grep.js';
16
16
  import { canUseRipgrep, RipGrepTool } from '../tools/ripGrep.js';
17
17
  import { GlobTool } from '../tools/glob.js';
18
+ import { ActivateSkillTool } from '../tools/activate-skill.js';
18
19
  import { EditTool } from '../tools/edit.js';
19
- import { SmartEditTool } from '../tools/smart-edit.js';
20
20
  import { ShellTool } from '../tools/shell.js';
21
21
  import { WriteFileTool } from '../tools/write-file.js';
22
22
  import { WebFetchTool } from '../tools/web-fetch.js';
@@ -34,8 +34,8 @@ import { shouldAttemptBrowserLaunch } from '../utils/browser.js';
34
34
  import { ideContextStore } from '../ide/ideContext.js';
35
35
  import { WriteTodosTool } from '../tools/write-todos.js';
36
36
  import { StandardFileSystemService } from '../services/fileSystemService.js';
37
- import { logRipgrepFallback } from '../telemetry/loggers.js';
38
- import { RipgrepFallbackEvent } from '../telemetry/types.js';
37
+ import { logRipgrepFallback, logFlashFallback } from '../telemetry/loggers.js';
38
+ import { RipgrepFallbackEvent, FlashFallbackEvent, } from '../telemetry/types.js';
39
39
  import { ModelAvailabilityService } from '../availability/modelAvailabilityService.js';
40
40
  import { ModelRouterService } from '../routing/modelRouterService.js';
41
41
  import { OutputFormat } from '../output/types.js';
@@ -56,7 +56,7 @@ import { DELEGATE_TO_AGENT_TOOL_NAME } from '../tools/tool-names.js';
56
56
  import { getExperiments } from '../code_assist/experiments/experiments.js';
57
57
  import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
58
58
  import { debugLogger } from '../utils/debugLogger.js';
59
- import { SkillManager } from '../services/skillManager.js';
59
+ import { SkillManager } from '../skills/skillManager.js';
60
60
  import { startupProfiler } from '../telemetry/startupProfiler.js';
61
61
  import { ApprovalMode } from '../policy/types.js';
62
62
  import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from './constants.js';
@@ -167,6 +167,7 @@ export class Config {
167
167
  toolDiscoveryCommand;
168
168
  toolCallCommand;
169
169
  mcpServerCommand;
170
+ mcpEnabled;
170
171
  mcpServers;
171
172
  userMemory;
172
173
  geminiMdFileCount;
@@ -224,7 +225,6 @@ export class Config {
224
225
  storage;
225
226
  fileExclusions;
226
227
  eventEmitter;
227
- useSmartEdit;
228
228
  useWriteTodos;
229
229
  messageBus;
230
230
  policyEngine;
@@ -247,12 +247,14 @@ export class Config {
247
247
  experimentsPromise;
248
248
  hookSystem;
249
249
  onModelChange;
250
+ onReload;
250
251
  enableAgents;
251
252
  skillsSupport;
252
253
  disabledSkills;
253
254
  experimentalJitContext;
254
255
  contextManager;
255
256
  terminalBackground = undefined;
257
+ remoteAdminSettings;
256
258
  constructor(params) {
257
259
  this.sessionId = params.sessionId;
258
260
  this.embeddingModel =
@@ -272,6 +274,7 @@ export class Config {
272
274
  this.toolCallCommand = params.toolCallCommand;
273
275
  this.mcpServerCommand = params.mcpServerCommand;
274
276
  this.mcpServers = params.mcpServers;
277
+ this.mcpEnabled = params.mcpEnabled ?? true;
275
278
  this.allowedMcpServers = params.allowedMcpServers ?? [];
276
279
  this.blockedMcpServers = params.blockedMcpServers ?? [];
277
280
  this.allowedEnvironmentVariables = params.allowedEnvironmentVariables ?? [];
@@ -352,7 +355,6 @@ export class Config {
352
355
  this.truncateToolOutputLines =
353
356
  params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
354
357
  this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
355
- this.useSmartEdit = params.useSmartEdit ?? true;
356
358
  // // TODO(joshualitt): Re-evaluate the todo tool for 3 family.
357
359
  this.useWriteTodos = isPreviewModel(this.model)
358
360
  ? false
@@ -401,6 +403,7 @@ export class Config {
401
403
  this.projectHooks = params.projectHooks;
402
404
  this.experiments = params.experiments;
403
405
  this.onModelChange = params.onModelChange;
406
+ this.onReload = params.onReload;
404
407
  if (params.contextFileName) {
405
408
  setGeminiMdFilename(params.contextFileName);
406
409
  }
@@ -472,11 +475,15 @@ export class Config {
472
475
  initMcpHandle?.end();
473
476
  // Discover skills if enabled
474
477
  if (this.skillsSupport) {
475
- await this.getSkillManager().discoverSkills(this.storage);
478
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
476
479
  this.getSkillManager().setDisabledSkills(this.disabledSkills);
480
+ // Re-register ActivateSkillTool to update its schema with the discovered enabled skill enums
481
+ if (this.getSkillManager().getSkills().length > 0) {
482
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
483
+ }
477
484
  }
478
485
  // Initialize hook system if enabled
479
- if (this.enableHooks) {
486
+ if (this.getEnableHooks()) {
480
487
  this.hookSystem = new HookSystem(this);
481
488
  await this.hookSystem.initialize();
482
489
  }
@@ -581,6 +588,12 @@ export class Config {
581
588
  getTerminalBackground() {
582
589
  return this.terminalBackground;
583
590
  }
591
+ getRemoteAdminSettings() {
592
+ return this.remoteAdminSettings;
593
+ }
594
+ setRemoteAdminSettings(settings) {
595
+ this.remoteAdminSettings = settings;
596
+ }
584
597
  shouldLoadMemoryFromIncludeDirectories() {
585
598
  return this.loadMemoryFromIncludeDirectories;
586
599
  }
@@ -596,18 +609,25 @@ export class Config {
596
609
  getModel() {
597
610
  return this.model;
598
611
  }
599
- setModel(newModel, isFallbackModel = false) {
612
+ setModel(newModel, isTemporary = true) {
600
613
  if (this.model !== newModel || this._activeModel !== newModel) {
601
614
  this.model = newModel;
602
615
  // When the user explicitly sets a model, that becomes the active model.
603
616
  this._activeModel = newModel;
604
617
  coreEvents.emitModelChanged(newModel);
605
- if (this.onModelChange && !isFallbackModel) {
618
+ if (this.onModelChange && !isTemporary) {
606
619
  this.onModelChange(newModel);
607
620
  }
608
621
  }
609
622
  this.modelAvailabilityService.reset();
610
623
  }
624
+ activateFallbackMode(model) {
625
+ this.setModel(model, true);
626
+ const authType = this.getContentGeneratorConfig()?.authType;
627
+ if (authType) {
628
+ logFlashFallback(this, new FlashFallbackEvent(authType));
629
+ }
630
+ }
611
631
  getActiveModel() {
612
632
  return this._activeModel ?? this.model;
613
633
  }
@@ -762,6 +782,9 @@ export class Config {
762
782
  getMcpServers() {
763
783
  return this.mcpServers;
764
784
  }
785
+ getMcpEnabled() {
786
+ return this.mcpEnabled;
787
+ }
765
788
  getMcpClientManager() {
766
789
  return this.mcpClientManager;
767
790
  }
@@ -1000,21 +1023,12 @@ export class Config {
1000
1023
  * 'false' for untrusted.
1001
1024
  */
1002
1025
  isTrustedFolder() {
1003
- // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
1004
- // when the file based trust value is unavailable, since it is mainly used
1005
- // in the initialization for trust dialogs, etc. Here we return true since
1006
- // config.isTrustedFolder() is used for the main business logic of blocking
1007
- // tool calls etc in the rest of the application.
1008
- //
1009
- // Default value is true since we load with trusted settings to avoid
1010
- // restarts in the more common path. If the user chooses to mark the folder
1011
- // as untrusted, the CLI will restart and we will have the trust value
1012
- // reloaded.
1013
1026
  const context = ideContextStore.get();
1014
1027
  if (context?.workspaceState?.isTrusted !== undefined) {
1015
1028
  return context.workspaceState.isTrusted;
1016
1029
  }
1017
- return this.trustedFolder ?? true;
1030
+ // Default to untrusted if folder trust is enabled and no explicit value is set.
1031
+ return this.folderTrust ? (this.trustedFolder ?? false) : true;
1018
1032
  }
1019
1033
  setIdeMode(value) {
1020
1034
  this.ideMode = value;
@@ -1076,6 +1090,29 @@ export class Config {
1076
1090
  isSkillsSupportEnabled() {
1077
1091
  return this.skillsSupport;
1078
1092
  }
1093
+ /**
1094
+ * Reloads skills by re-discovering them from extensions and local directories.
1095
+ */
1096
+ async reloadSkills() {
1097
+ if (!this.skillsSupport) {
1098
+ return;
1099
+ }
1100
+ if (this.onReload) {
1101
+ const refreshed = await this.onReload();
1102
+ this.disabledSkills = refreshed.disabledSkills ?? [];
1103
+ }
1104
+ await this.getSkillManager().discoverSkills(this.storage, this.getExtensions());
1105
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
1106
+ // Re-register ActivateSkillTool to update its schema with the newly discovered skills
1107
+ if (this.getSkillManager().getSkills().length > 0) {
1108
+ this.getToolRegistry().registerTool(new ActivateSkillTool(this, this.messageBus));
1109
+ }
1110
+ else {
1111
+ this.getToolRegistry().unregisterTool(ActivateSkillTool.Name);
1112
+ }
1113
+ // Notify the client that system instructions might need updating
1114
+ await this.updateSystemInstructionIfInitialized();
1115
+ }
1079
1116
  isInteractive() {
1080
1117
  return this.interactive;
1081
1118
  }
@@ -1131,9 +1168,6 @@ export class Config {
1131
1168
  getTruncateToolOutputLines() {
1132
1169
  return this.truncateToolOutputLines;
1133
1170
  }
1134
- getUseSmartEdit() {
1135
- return this.useSmartEdit;
1136
- }
1137
1171
  getUseWriteTodos() {
1138
1172
  return this.useWriteTodos;
1139
1173
  }
@@ -1168,9 +1202,7 @@ export class Config {
1168
1202
  return this.introspectionAgentSettings;
1169
1203
  }
1170
1204
  async createToolRegistry() {
1171
- const registry = new ToolRegistry(this);
1172
- // Set message bus on tool registry before discovery so MCP tools can access it
1173
- registry.setMessageBus(this.messageBus);
1205
+ const registry = new ToolRegistry(this, this.messageBus);
1174
1206
  // helper to create & register core tools that are enabled
1175
1207
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1176
1208
  const registerCoreTool = (ToolClass, ...args) => {
@@ -1187,9 +1219,7 @@ export class Config {
1187
1219
  tool.startsWith(`${normalizedClassName}(`));
1188
1220
  }
1189
1221
  if (isEnabled) {
1190
- // Pass message bus to tools when feature flag is enabled
1191
- // This first implementation is only focused on the general case of
1192
- // the tool registry.
1222
+ // Pass message bus to tools (required for policy engine integration)
1193
1223
  const toolArgs = [...args, this.getMessageBus()];
1194
1224
  registry.registerTool(new ToolClass(...toolArgs));
1195
1225
  }
@@ -1217,19 +1247,15 @@ export class Config {
1217
1247
  registerCoreTool(GrepTool, this);
1218
1248
  }
1219
1249
  registerCoreTool(GlobTool, this);
1220
- if (this.getUseSmartEdit()) {
1221
- registerCoreTool(SmartEditTool, this);
1222
- }
1223
- else {
1224
- registerCoreTool(EditTool, this);
1225
- }
1250
+ registerCoreTool(ActivateSkillTool, this);
1251
+ registerCoreTool(EditTool, this);
1226
1252
  registerCoreTool(WriteFileTool, this);
1227
1253
  registerCoreTool(WebFetchTool, this);
1228
1254
  registerCoreTool(ShellTool, this);
1229
1255
  registerCoreTool(MemoryTool);
1230
1256
  registerCoreTool(WebSearchTool, this);
1231
1257
  if (this.getUseWriteTodos()) {
1232
- registerCoreTool(WriteTodosTool, this);
1258
+ registerCoreTool(WriteTodosTool);
1233
1259
  }
1234
1260
  // Register Subagents as Tools
1235
1261
  // Register DelegateToAgentTool if agents are enabled