@mmmbuto/gemini-cli-termux 0.30.3-termux → 0.30.5-termux

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 (400) hide show
  1. package/README.md +42 -193
  2. package/bundle/docs/cli/settings.md +8 -9
  3. package/bundle/docs/extensions/reference.md +14 -38
  4. package/bundle/docs/hooks/reference.md +0 -8
  5. package/bundle/docs/reference/configuration.md +0 -8
  6. package/bundle/gemini.js +10730 -11704
  7. package/bundle/node_modules/@google/gemini-cli-devtools/package.json +1 -1
  8. package/bundle/package.json +2 -1
  9. package/package.json +67 -5
  10. package/packages/cli/dist/index.js +0 -0
  11. package/packages/cli/dist/package.json +2 -2
  12. package/packages/cli/dist/src/commands/extensions/examples/custom-commands/gemini-extension.json +2 -2
  13. package/packages/cli/dist/src/commands/extensions/examples/exclude-tools/gemini-extension.json +3 -3
  14. package/packages/cli/dist/src/commands/extensions/examples/hooks/gemini-extension.json +2 -2
  15. package/packages/cli/dist/src/commands/extensions/examples/hooks/hooks/hooks.json +11 -11
  16. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.js +1 -1
  17. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +8 -8
  18. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/package.json +9 -9
  19. package/packages/cli/dist/src/commands/extensions/examples/skills/gemini-extension.json +2 -2
  20. package/packages/cli/dist/src/commands/extensions/examples/themes-example/README.md +8 -5
  21. package/packages/cli/dist/src/commands/extensions/examples/themes-example/gemini-extension.json +27 -27
  22. package/packages/cli/dist/src/config/config.js +4 -65
  23. package/packages/cli/dist/src/config/config.js.map +1 -1
  24. package/packages/cli/dist/src/config/settingsSchema.d.ts +1 -235
  25. package/packages/cli/dist/src/config/settingsSchema.js +1 -235
  26. package/packages/cli/dist/src/config/settingsSchema.js.map +1 -1
  27. package/packages/cli/dist/src/gemini.js +0 -2
  28. package/packages/cli/dist/src/gemini.js.map +1 -1
  29. package/packages/cli/dist/src/generated/git-commit.d.ts +2 -2
  30. package/packages/cli/dist/src/generated/git-commit.js +2 -2
  31. package/packages/cli/dist/src/patches/empty-module.d.ts +2 -0
  32. package/packages/cli/dist/src/patches/empty-module.js +2 -0
  33. package/packages/cli/dist/src/patches/empty-module.js.map +1 -0
  34. package/packages/cli/dist/src/services/McpPromptLoader.js +3 -6
  35. package/packages/cli/dist/src/services/McpPromptLoader.js.map +1 -1
  36. package/packages/cli/dist/src/ui/components/AgentConfigDialog.js +19 -5
  37. package/packages/cli/dist/src/ui/components/AgentConfigDialog.js.map +1 -1
  38. package/packages/cli/dist/src/ui/components/AgentConfigDialog.test.js +41 -19
  39. package/packages/cli/dist/src/ui/components/AgentConfigDialog.test.js.map +1 -1
  40. package/packages/cli/dist/src/ui/components/DialogManager.d.ts +1 -1
  41. package/packages/cli/dist/src/ui/components/DialogManager.js +34 -7
  42. package/packages/cli/dist/src/ui/components/DialogManager.js.map +1 -1
  43. package/packages/cli/dist/src/ui/components/InputPrompt.d.ts +9 -0
  44. package/packages/cli/dist/src/ui/components/InputPrompt.js +350 -125
  45. package/packages/cli/dist/src/ui/components/InputPrompt.js.map +1 -1
  46. package/packages/cli/dist/src/ui/components/InputPrompt.test.js +788 -35
  47. package/packages/cli/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  48. package/packages/cli/dist/src/ui/components/messages/ShellToolMessage.js +2 -2
  49. package/packages/cli/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  50. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.js +4 -77
  51. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  52. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -51
  53. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  54. package/packages/cli/dist/src/ui/components/messages/ToolMessage.js +2 -2
  55. package/packages/cli/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  56. package/packages/cli/dist/src/ui/components/messages/ToolShared.d.ts +0 -1
  57. package/packages/cli/dist/src/ui/components/messages/ToolShared.js +2 -2
  58. package/packages/cli/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  59. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.js +4 -1
  60. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
  61. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.test.js +139 -40
  62. package/packages/cli/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
  63. package/packages/cli/dist/src/ui/components/shared/TextInput.js +2 -1
  64. package/packages/cli/dist/src/ui/components/shared/TextInput.js.map +1 -1
  65. package/packages/cli/dist/src/ui/hooks/toolMapping.js +0 -1
  66. package/packages/cli/dist/src/ui/hooks/toolMapping.js.map +1 -1
  67. package/packages/cli/dist/src/ui/hooks/toolMapping.test.js +0 -13
  68. package/packages/cli/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
  69. package/packages/cli/dist/src/ui/hooks/useToolScheduler.js +2 -18
  70. package/packages/cli/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  71. package/packages/cli/dist/src/ui/hooks/useToolScheduler.test.js +0 -44
  72. package/packages/cli/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  73. package/packages/cli/dist/src/ui/keyMatchers.test.js.map +1 -1
  74. package/packages/cli/dist/src/ui/types.d.ts +0 -1
  75. package/packages/cli/dist/src/ui/types.js.map +1 -1
  76. package/packages/cli/dist/src/ui/utils/commandUtils.js +4 -1
  77. package/packages/cli/dist/src/ui/utils/commandUtils.js.map +1 -1
  78. package/packages/cli/dist/src/utils/activityLogger.js +23 -94
  79. package/packages/cli/dist/src/utils/activityLogger.js.map +1 -1
  80. package/packages/cli/dist/src/utils/handleAutoUpdate.d.ts +1 -1
  81. package/packages/cli/dist/src/utils/handleAutoUpdate.js +1 -1
  82. package/packages/cli/dist/src/utils/handleAutoUpdate.js.map +1 -1
  83. package/packages/cli/dist/src/utils/handleAutoUpdate.test.js +11 -11
  84. package/packages/cli/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  85. package/{bundle/sandbox-macos-restrictive-closed.sb → packages/cli/dist/src/utils/sandbox-macos-strict-open.sb} +42 -4
  86. package/packages/cli/dist/src/utils/{sandbox-macos-restrictive-closed.sb → sandbox-macos-strict-proxied.sb} +44 -4
  87. package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
  88. package/packages/core/dist/docs/admin/enterprise-controls.md +115 -0
  89. package/packages/core/dist/docs/changelogs/index.md +57 -1
  90. package/packages/core/dist/docs/changelogs/latest.md +357 -314
  91. package/packages/core/dist/docs/changelogs/preview.md +288 -411
  92. package/packages/core/dist/docs/cli/checkpointing.md +2 -3
  93. package/packages/core/dist/docs/cli/cli-reference.md +42 -28
  94. package/packages/core/dist/docs/cli/custom-commands.md +3 -0
  95. package/packages/core/dist/docs/cli/enterprise.md +28 -8
  96. package/packages/core/dist/docs/cli/gemini-md.md +21 -13
  97. package/packages/core/dist/docs/cli/headless.md +34 -372
  98. package/packages/core/dist/docs/cli/model.md +1 -1
  99. package/packages/core/dist/docs/cli/plan-mode.md +245 -0
  100. package/packages/core/dist/docs/cli/rewind.md +11 -11
  101. package/packages/core/dist/docs/cli/sandbox.md +6 -5
  102. package/packages/core/dist/docs/cli/session-management.md +61 -44
  103. package/packages/core/dist/docs/cli/settings.md +64 -49
  104. package/packages/core/dist/docs/cli/skills.md +29 -7
  105. package/packages/core/dist/docs/cli/telemetry.md +41 -5
  106. package/packages/core/dist/docs/cli/themes.md +88 -54
  107. package/packages/core/dist/docs/cli/trusted-folders.md +31 -0
  108. package/packages/core/dist/docs/cli/tutorials/automation.md +187 -0
  109. package/packages/core/dist/docs/cli/tutorials/file-management.md +142 -0
  110. package/packages/core/dist/docs/cli/tutorials/mcp-setup.md +105 -0
  111. package/packages/core/dist/docs/cli/tutorials/memory-management.md +126 -0
  112. package/packages/core/dist/docs/cli/tutorials/session-management.md +105 -0
  113. package/packages/core/dist/docs/cli/tutorials/shell-commands.md +107 -0
  114. package/packages/core/dist/docs/cli/tutorials/skills-getting-started.md +36 -31
  115. package/packages/core/dist/docs/cli/tutorials/task-planning.md +93 -0
  116. package/packages/core/dist/docs/cli/tutorials/web-tools.md +78 -0
  117. package/packages/core/dist/docs/core/index.md +7 -7
  118. package/packages/core/dist/docs/core/subagents.md +40 -40
  119. package/packages/core/dist/docs/extensions/best-practices.md +102 -53
  120. package/packages/core/dist/docs/extensions/index.md +37 -21
  121. package/packages/core/dist/docs/extensions/reference.md +148 -219
  122. package/packages/core/dist/docs/extensions/releasing.md +93 -122
  123. package/packages/core/dist/docs/extensions/writing-extensions.md +87 -76
  124. package/packages/core/dist/docs/get-started/authentication.md +4 -4
  125. package/packages/core/dist/docs/get-started/examples.md +39 -119
  126. package/packages/core/dist/docs/get-started/gemini-3.md +17 -3
  127. package/packages/core/dist/docs/get-started/index.md +16 -5
  128. package/packages/core/dist/docs/get-started/installation.md +110 -77
  129. package/packages/core/dist/docs/hooks/best-practices.md +1 -1
  130. package/packages/core/dist/docs/hooks/reference.md +2 -2
  131. package/packages/core/dist/docs/index.md +142 -149
  132. package/packages/core/dist/docs/redirects.json +19 -0
  133. package/packages/core/dist/docs/reference/commands.md +523 -0
  134. package/{bundle/docs/get-started → packages/core/dist/docs/reference}/configuration.md +180 -71
  135. package/packages/core/dist/docs/{cli → reference}/keyboard-shortcuts.md +49 -35
  136. package/packages/core/dist/docs/{core → reference}/policy-engine.md +76 -32
  137. package/packages/core/dist/docs/releases.md +2 -2
  138. package/{bundle/docs → packages/core/dist/docs/resources}/faq.md +1 -1
  139. package/packages/core/dist/docs/{quota-and-pricing.md → resources/quota-and-pricing.md} +12 -5
  140. package/{bundle/docs → packages/core/dist/docs/resources}/tos-privacy.md +3 -3
  141. package/packages/core/dist/docs/{troubleshooting.md → resources/troubleshooting.md} +1 -1
  142. package/packages/core/dist/docs/sidebar.json +194 -113
  143. package/packages/core/dist/docs/tools/activate-skill.md +43 -0
  144. package/packages/core/dist/docs/tools/ask-user.md +95 -0
  145. package/packages/core/dist/docs/tools/file-system.md +55 -143
  146. package/packages/core/dist/docs/tools/index.md +97 -93
  147. package/packages/core/dist/docs/tools/internal-docs.md +46 -0
  148. package/packages/core/dist/docs/tools/mcp-server.md +65 -16
  149. package/packages/core/dist/docs/tools/memory.md +21 -40
  150. package/packages/core/dist/docs/tools/planning.md +57 -0
  151. package/packages/core/dist/docs/tools/shell.md +44 -88
  152. package/packages/core/dist/docs/tools/todos.md +22 -44
  153. package/packages/core/dist/docs/tools/web-fetch.md +22 -46
  154. package/packages/core/dist/docs/tools/web-search.md +19 -29
  155. package/packages/core/dist/src/code_assist/types.d.ts +14 -14
  156. package/packages/core/dist/src/config/config.d.ts +1 -13
  157. package/packages/core/dist/src/config/config.js +6 -39
  158. package/packages/core/dist/src/config/config.js.map +1 -1
  159. package/packages/core/dist/src/confirmation-bus/types.d.ts +0 -3
  160. package/packages/core/dist/src/confirmation-bus/types.js.map +1 -1
  161. package/packages/core/dist/src/core/coreToolHookTriggers.d.ts +1 -1
  162. package/packages/core/dist/src/core/coreToolHookTriggers.js +3 -8
  163. package/packages/core/dist/src/core/coreToolHookTriggers.js.map +1 -1
  164. package/packages/core/dist/src/generated/git-commit.d.ts +2 -2
  165. package/packages/core/dist/src/generated/git-commit.js +2 -2
  166. package/packages/core/dist/src/hooks/hookEventHandler.d.ts +2 -2
  167. package/packages/core/dist/src/hooks/hookEventHandler.js +2 -8
  168. package/packages/core/dist/src/hooks/hookEventHandler.js.map +1 -1
  169. package/packages/core/dist/src/hooks/hookSystem.d.ts +2 -2
  170. package/packages/core/dist/src/hooks/hookSystem.js +4 -4
  171. package/packages/core/dist/src/hooks/hookSystem.js.map +1 -1
  172. package/packages/core/dist/src/hooks/types.d.ts +0 -18
  173. package/packages/core/dist/src/hooks/types.js +0 -17
  174. package/packages/core/dist/src/hooks/types.js.map +1 -1
  175. package/packages/core/dist/src/ide/ide-client.js +1 -1
  176. package/packages/core/dist/src/ide/ide-client.js.map +1 -1
  177. package/packages/core/dist/src/ide/types.d.ts +8 -8
  178. package/packages/core/dist/src/index.d.ts +2 -0
  179. package/packages/core/dist/src/index.js +2 -0
  180. package/packages/core/dist/src/index.js.map +1 -1
  181. package/packages/core/dist/src/policy/policies/plan.toml +29 -43
  182. package/packages/core/dist/src/policy/policies/read-only.toml +12 -11
  183. package/packages/core/dist/src/policy/policies/write.toml +11 -10
  184. package/packages/core/dist/src/policy/policies/yolo.toml +24 -12
  185. package/packages/core/dist/src/policy/policy-engine.js +1 -5
  186. package/packages/core/dist/src/policy/policy-engine.js.map +1 -1
  187. package/packages/core/dist/src/policy/types.d.ts +1 -2
  188. package/packages/core/dist/src/policy/types.js +0 -1
  189. package/packages/core/dist/src/policy/types.js.map +1 -1
  190. package/packages/core/dist/src/safety/context-builder.d.ts +3 -3
  191. package/packages/core/dist/src/safety/context-builder.js +4 -60
  192. package/packages/core/dist/src/safety/context-builder.js.map +1 -1
  193. package/packages/core/dist/src/safety/context-builder.test.js +18 -98
  194. package/packages/core/dist/src/safety/context-builder.test.js.map +1 -1
  195. package/packages/core/dist/src/safety/protocol.d.ts +0 -4
  196. package/packages/core/dist/src/safety/registry.d.ts +1 -2
  197. package/packages/core/dist/src/safety/registry.js +4 -14
  198. package/packages/core/dist/src/safety/registry.js.map +1 -1
  199. package/packages/core/dist/src/safety/registry.test.js +2 -5
  200. package/packages/core/dist/src/safety/registry.test.js.map +1 -1
  201. package/packages/core/dist/src/scheduler/scheduler.d.ts +1 -1
  202. package/packages/core/dist/src/scheduler/scheduler.js +4 -49
  203. package/packages/core/dist/src/scheduler/scheduler.js.map +1 -1
  204. package/packages/core/dist/src/scheduler/scheduler.test.js +0 -91
  205. package/packages/core/dist/src/scheduler/scheduler.test.js.map +1 -1
  206. package/packages/core/dist/src/scheduler/state-manager.d.ts +0 -6
  207. package/packages/core/dist/src/scheduler/state-manager.js +0 -12
  208. package/packages/core/dist/src/scheduler/state-manager.js.map +1 -1
  209. package/packages/core/dist/src/scheduler/tool-executor.js +7 -9
  210. package/packages/core/dist/src/scheduler/tool-executor.js.map +1 -1
  211. package/packages/core/dist/src/scheduler/tool-executor.test.js +1 -1
  212. package/packages/core/dist/src/scheduler/tool-executor.test.js.map +1 -1
  213. package/packages/core/dist/src/scheduler/types.d.ts +0 -13
  214. package/packages/core/dist/src/services/shellExecutionService.d.ts +1 -1
  215. package/packages/core/dist/src/services/shellExecutionService.js +7 -8
  216. package/packages/core/dist/src/services/shellExecutionService.js.map +1 -1
  217. package/packages/core/dist/src/services/shellExecutionService.test.js +5 -5
  218. package/packages/core/dist/src/services/shellExecutionService.test.js.map +1 -1
  219. package/packages/core/dist/src/services/test-data/resolved-aliases-retry.golden.json +251 -251
  220. package/packages/core/dist/src/services/test-data/resolved-aliases.golden.json +251 -251
  221. package/packages/core/dist/src/skills/builtin/skill-creator/scripts/init_skill.cjs +5 -1
  222. package/packages/core/dist/src/skills/builtin/skill-creator/scripts/package_skill.cjs +5 -1
  223. package/packages/core/dist/src/skills/builtin/skill-creator/scripts/validate_skill.cjs +5 -1
  224. package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +1 -3
  225. package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.js +0 -2
  226. package/packages/core/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  227. package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +1 -9
  228. package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.js +1 -19
  229. package/packages/core/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  230. package/packages/core/dist/src/telemetry/index.d.ts +1 -2
  231. package/packages/core/dist/src/telemetry/index.js +1 -2
  232. package/packages/core/dist/src/telemetry/index.js.map +1 -1
  233. package/packages/core/dist/src/telemetry/loggers.js +0 -4
  234. package/packages/core/dist/src/telemetry/loggers.js.map +1 -1
  235. package/packages/core/dist/src/telemetry/trace.js.map +1 -1
  236. package/packages/core/dist/src/telemetry/types.d.ts +0 -26
  237. package/packages/core/dist/src/telemetry/types.js +2 -76
  238. package/packages/core/dist/src/telemetry/types.js.map +1 -1
  239. package/packages/core/dist/src/tools/diffOptions.d.ts +2 -2
  240. package/packages/core/dist/src/tools/diffOptions.js.map +1 -1
  241. package/packages/core/dist/src/tools/mcp-client.test.js.map +1 -1
  242. package/packages/core/dist/src/tools/mcp-tool.d.ts +1 -3
  243. package/packages/core/dist/src/tools/mcp-tool.js +2 -9
  244. package/packages/core/dist/src/tools/mcp-tool.js.map +1 -1
  245. package/packages/core/dist/src/tools/memoryTool.d.ts +0 -10
  246. package/packages/core/dist/src/tools/memoryTool.js +30 -25
  247. package/packages/core/dist/src/tools/memoryTool.js.map +1 -1
  248. package/packages/core/dist/src/tools/tool-names.d.ts +6 -0
  249. package/packages/core/dist/src/tools/tool-names.js +16 -1
  250. package/packages/core/dist/src/tools/tool-names.js.map +1 -1
  251. package/packages/core/dist/src/tools/tools.d.ts +0 -11
  252. package/packages/core/dist/src/tools/tools.js.map +1 -1
  253. package/packages/core/dist/src/utils/getPty.d.ts +14 -1
  254. package/packages/core/dist/src/utils/getPty.js +67 -2
  255. package/packages/core/dist/src/utils/getPty.js.map +1 -1
  256. package/packages/core/dist/src/utils/memoryDiscovery.d.ts +11 -3
  257. package/packages/core/dist/src/utils/memoryDiscovery.js +56 -21
  258. package/packages/core/dist/src/utils/memoryDiscovery.js.map +1 -1
  259. package/packages/core/dist/src/utils/secure-browser-launcher.js +40 -29
  260. package/packages/core/dist/src/utils/secure-browser-launcher.js.map +1 -1
  261. package/packages/core/dist/src/utils/textUtils.d.ts +0 -9
  262. package/packages/core/dist/src/utils/textUtils.js +0 -15
  263. package/packages/core/dist/src/utils/textUtils.js.map +1 -1
  264. package/packages/core/dist/src/utils/textUtils.test.js +1 -42
  265. package/packages/core/dist/src/utils/textUtils.test.js.map +1 -1
  266. package/packages/core/dist/tsconfig.tsbuildinfo +1 -1
  267. package/packages/test-utils/dist/tsconfig.tsbuildinfo +1 -1
  268. package/bundle/docs/ROADMAP.md +0 -113
  269. package/bundle/docs/TERMUX.md +0 -95
  270. package/bundle/docs/architecture.md +0 -80
  271. package/bundle/docs/assets/hero.png +0 -0
  272. package/bundle/docs/cli/authentication.md +0 -3
  273. package/bundle/docs/cli/commands.md +0 -430
  274. package/bundle/docs/cli/context-memory.md +0 -69
  275. package/bundle/docs/cli/index.md +0 -65
  276. package/bundle/docs/cli/keyboard-shortcuts.md +0 -140
  277. package/bundle/docs/cli/tutorials.md +0 -87
  278. package/bundle/docs/core/policy-engine.md +0 -305
  279. package/bundle/docs/get-started/configuration-v1.md +0 -888
  280. package/bundle/docs/patches/README.md +0 -74
  281. package/bundle/docs/patches/mcp-sdk-typings-shim.md +0 -27
  282. package/bundle/docs/quota-and-pricing.md +0 -158
  283. package/bundle/docs/termux-api/COMMANDS.md +0 -592
  284. package/bundle/docs/termux-api/DISCOVERY_SETUP.md +0 -670
  285. package/bundle/docs/termux-api/EXECUTION_PLAN.md +0 -532
  286. package/bundle/docs/termux-api/MERGE_STRATEGY.md +0 -365
  287. package/bundle/docs/termux-api/PATCHES.md +0 -480
  288. package/bundle/docs/termux-api/README.md +0 -416
  289. package/bundle/docs/troubleshooting.md +0 -173
  290. package/bundle/policies/conseca.toml +0 -6
  291. package/bundle/sandbox-macos-permissive-closed.sb +0 -32
  292. package/packages/cli/README.md +0 -173
  293. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.d.ts +0 -6
  294. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.js.map +0 -1
  295. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +0 -6
  296. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.js +0 -111
  297. package/packages/cli/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +0 -1
  298. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.d.ts +0 -6
  299. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js +0 -93
  300. package/packages/cli/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js.map +0 -1
  301. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.d.ts +0 -42
  302. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.js +0 -105
  303. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.js.map +0 -1
  304. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.d.ts +0 -6
  305. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.js +0 -58
  306. package/packages/cli/dist/src/ui/hooks/useReactToolScheduler.test.js.map +0 -1
  307. package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.d.ts +0 -6
  308. package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.js +0 -7
  309. package/packages/cli/dist/src/ui/hooks/useRefreshMemoryCommand.js.map +0 -1
  310. package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.d.ts +0 -9
  311. package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.js +0 -59
  312. package/packages/cli/dist/src/ui/hooks/useShowMemoryCommand.js.map +0 -1
  313. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.d.ts +0 -30
  314. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.js +0 -149
  315. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.js.map +0 -1
  316. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.d.ts +0 -6
  317. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.js +0 -376
  318. package/packages/cli/dist/src/ui/hooks/useToolExecutionScheduler.test.js.map +0 -1
  319. package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.d.ts +0 -6
  320. package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.js +0 -45
  321. package/packages/cli/dist/src/ui/hooks/useToolSchedulerFacade.test.js.map +0 -1
  322. package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.d.ts +0 -6
  323. package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.js +0 -21
  324. package/packages/cli/dist/src/ui/utils/InlineMarkdownRenderer.test.js.map +0 -1
  325. package/packages/cli/dist/src/ui/utils/terminalUtils.test.d.ts +0 -6
  326. package/packages/cli/dist/src/ui/utils/terminalUtils.test.js +0 -40
  327. package/packages/cli/dist/src/ui/utils/terminalUtils.test.js.map +0 -1
  328. package/packages/cli/dist/src/utils/checks.d.ts +0 -19
  329. package/packages/cli/dist/src/utils/checks.js +0 -24
  330. package/packages/cli/dist/src/utils/checks.js.map +0 -1
  331. package/packages/cli/dist/src/utils/checks.test.d.ts +0 -6
  332. package/packages/cli/dist/src/utils/checks.test.js +0 -29
  333. package/packages/cli/dist/src/utils/checks.test.js.map +0 -1
  334. package/packages/cli/dist/src/utils/sandbox-macos-permissive-closed.sb +0 -32
  335. package/packages/cli/index.js +0 -2
  336. package/packages/core/dist/docs/TERMUX.md +0 -95
  337. package/packages/core/dist/docs/architecture.md +0 -80
  338. package/packages/core/dist/docs/assets/hero.png +0 -0
  339. package/packages/core/dist/docs/cli/authentication.md +0 -3
  340. package/packages/core/dist/docs/cli/commands.md +0 -430
  341. package/packages/core/dist/docs/cli/context-memory.md +0 -69
  342. package/packages/core/dist/docs/cli/index.md +0 -65
  343. package/packages/core/dist/docs/cli/tutorials.md +0 -87
  344. package/packages/core/dist/docs/cli/uninstall.md +0 -65
  345. package/packages/core/dist/docs/core/memport.md +0 -246
  346. package/packages/core/dist/docs/core/tools-api.md +0 -131
  347. package/packages/core/dist/docs/faq.md +0 -154
  348. package/packages/core/dist/docs/get-started/configuration-v1.md +0 -888
  349. package/packages/core/dist/docs/get-started/configuration.md +0 -1585
  350. package/packages/core/dist/docs/patches/README.md +0 -74
  351. package/packages/core/dist/docs/patches/mcp-sdk-typings-shim.md +0 -27
  352. package/packages/core/dist/docs/termux-api/COMMANDS.md +0 -592
  353. package/packages/core/dist/docs/termux-api/DISCOVERY_SETUP.md +0 -670
  354. package/packages/core/dist/docs/termux-api/EXECUTION_PLAN.md +0 -532
  355. package/packages/core/dist/docs/termux-api/MERGE_STRATEGY.md +0 -365
  356. package/packages/core/dist/docs/termux-api/PATCHES.md +0 -480
  357. package/packages/core/dist/docs/termux-api/README.md +0 -416
  358. package/packages/core/dist/docs/tos-privacy.md +0 -96
  359. package/packages/core/dist/src/safety/conseca/conseca.d.ts +0 -31
  360. package/packages/core/dist/src/safety/conseca/conseca.js +0 -105
  361. package/packages/core/dist/src/safety/conseca/conseca.js.map +0 -1
  362. package/packages/core/dist/src/safety/conseca/conseca.test.d.ts +0 -6
  363. package/packages/core/dist/src/safety/conseca/conseca.test.js +0 -226
  364. package/packages/core/dist/src/safety/conseca/conseca.test.js.map +0 -1
  365. package/packages/core/dist/src/safety/conseca/integration.test.d.ts +0 -6
  366. package/packages/core/dist/src/safety/conseca/integration.test.js +0 -19
  367. package/packages/core/dist/src/safety/conseca/integration.test.js.map +0 -1
  368. package/packages/core/dist/src/safety/conseca/policy-enforcer.d.ts +0 -13
  369. package/packages/core/dist/src/safety/conseca/policy-enforcer.js +0 -135
  370. package/packages/core/dist/src/safety/conseca/policy-enforcer.js.map +0 -1
  371. package/packages/core/dist/src/safety/conseca/policy-enforcer.test.d.ts +0 -6
  372. package/packages/core/dist/src/safety/conseca/policy-enforcer.test.js +0 -141
  373. package/packages/core/dist/src/safety/conseca/policy-enforcer.test.js.map +0 -1
  374. package/packages/core/dist/src/safety/conseca/policy-generator.d.ts +0 -15
  375. package/packages/core/dist/src/safety/conseca/policy-generator.js +0 -144
  376. package/packages/core/dist/src/safety/conseca/policy-generator.js.map +0 -1
  377. package/packages/core/dist/src/safety/conseca/policy-generator.test.d.ts +0 -6
  378. package/packages/core/dist/src/safety/conseca/policy-generator.test.js +0 -84
  379. package/packages/core/dist/src/safety/conseca/policy-generator.test.js.map +0 -1
  380. package/packages/core/dist/src/safety/conseca/types.d.ts +0 -15
  381. package/packages/core/dist/src/safety/conseca/types.js +0 -7
  382. package/packages/core/dist/src/safety/conseca/types.js.map +0 -1
  383. package/packages/core/dist/src/telemetry/conseca-logger.d.ts +0 -9
  384. package/packages/core/dist/src/telemetry/conseca-logger.js +0 -91
  385. package/packages/core/dist/src/telemetry/conseca-logger.js.map +0 -1
  386. package/packages/core/dist/src/telemetry/conseca-logger.test.d.ts +0 -6
  387. package/packages/core/dist/src/telemetry/conseca-logger.test.js +0 -89
  388. package/packages/core/dist/src/telemetry/conseca-logger.test.js.map +0 -1
  389. package/packages/core/dist/src/tools/mcpImportTool.d.ts +0 -31
  390. package/packages/core/dist/src/tools/mcpImportTool.js +0 -143
  391. package/packages/core/dist/src/tools/mcpImportTool.js.map +0 -1
  392. package/packages/core/dist/src/utils/contextMemory.d.ts +0 -67
  393. package/packages/core/dist/src/utils/contextMemory.js +0 -493
  394. package/packages/core/dist/src/utils/contextMemory.js.map +0 -1
  395. package/packages/core/dist/src/utils/contextMemory.test.d.ts +0 -6
  396. package/packages/core/dist/src/utils/contextMemory.test.js +0 -183
  397. package/packages/core/dist/src/utils/contextMemory.test.js.map +0 -1
  398. /package/{bundle/docs/core → packages/core/dist/docs/reference}/memport.md +0 -0
  399. /package/{bundle/docs/core → packages/core/dist/docs/reference}/tools-api.md +0 -0
  400. /package/{bundle/docs/cli → packages/core/dist/docs/resources}/uninstall.md +0 -0
@@ -1,7 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export const REFRESH_MEMORY_COMMAND_NAME = '/refreshmemory';
7
- //# sourceMappingURL=useRefreshMemoryCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRefreshMemoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useRefreshMemoryCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,gBAAgB,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import type { Message } from '../types.js';
7
- import { type Config } from '@google/gemini-cli-core';
8
- import type { LoadedSettings } from '../../config/settings.js';
9
- export declare function createShowMemoryAction(config: Config | null, settings: LoadedSettings, addMessage: (message: Message) => void): () => Promise<void>;
@@ -1,59 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { MessageType } from '../types.js';
7
- import { debugLogger } from '@google/gemini-cli-core';
8
- export function createShowMemoryAction(config, settings, addMessage) {
9
- return async () => {
10
- if (!config) {
11
- addMessage({
12
- type: MessageType.ERROR,
13
- content: 'Configuration not available. Cannot show memory.',
14
- timestamp: new Date(),
15
- });
16
- return;
17
- }
18
- const debugMode = config.getDebugMode();
19
- if (debugMode) {
20
- debugLogger.log('[DEBUG] Show Memory command invoked.');
21
- }
22
- const currentMemory = config.getUserMemory();
23
- const fileCount = config.getGeminiMdFileCount();
24
- const contextFileName = settings.merged.context.fileName;
25
- const contextFileNames = Array.isArray(contextFileName)
26
- ? contextFileName
27
- : [contextFileName];
28
- if (debugMode) {
29
- debugLogger.log(`[DEBUG] Showing memory. Content from config.getUserMemory() (first 200 chars): ${currentMemory.substring(0, 200)}...`);
30
- debugLogger.log(`[DEBUG] Number of context files loaded: ${fileCount}`);
31
- }
32
- if (fileCount > 0) {
33
- const allNamesTheSame = new Set(contextFileNames).size < 2;
34
- const name = allNamesTheSame ? contextFileNames[0] : 'context';
35
- addMessage({
36
- type: MessageType.INFO,
37
- content: `Loaded memory from ${fileCount} ${name} file${fileCount > 1 ? 's' : ''}.`,
38
- timestamp: new Date(),
39
- });
40
- }
41
- if (currentMemory && currentMemory.trim().length > 0) {
42
- addMessage({
43
- type: MessageType.INFO,
44
- content: `Current combined memory content:\n\`\`\`markdown\n${currentMemory}\n\`\`\``,
45
- timestamp: new Date(),
46
- });
47
- }
48
- else {
49
- addMessage({
50
- type: MessageType.INFO,
51
- content: fileCount > 0
52
- ? 'Hierarchical memory (GEMINI.md or other context files) is loaded but content is empty.'
53
- : 'No hierarchical memory (GEMINI.md or other context files) is currently loaded.',
54
- timestamp: new Date(),
55
- });
56
- }
57
- };
58
- }
59
- //# sourceMappingURL=useShowMemoryCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useShowMemoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useShowMemoryCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAe,MAAM,yBAAyB,CAAC;AAGnE,MAAM,UAAU,sBAAsB,CACpC,MAAqB,EACrB,QAAwB,EACxB,UAAsC;IAEtC,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,UAAU,CAAC;gBACT,IAAI,EAAE,WAAW,CAAC,KAAK;gBACvB,OAAO,EAAE,kDAAkD;gBAC3D,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAExC,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzD,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC;YACrD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAEtB,IAAI,SAAS,EAAE,CAAC;YACd,WAAW,CAAC,GAAG,CACb,kFAAkF,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CACvH,CAAC;YACF,WAAW,CAAC,GAAG,CAAC,2CAA2C,SAAS,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/D,UAAU,CAAC;gBACT,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,sBAAsB,SAAS,IAAI,IAAI,QAC9C,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACxB,GAAG;gBACH,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,UAAU,CAAC;gBACT,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,qDAAqD,aAAa,UAAU;gBACrF,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,UAAU,CAAC;gBACT,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EACL,SAAS,GAAG,CAAC;oBACX,CAAC,CAAC,wFAAwF;oBAC1F,CAAC,CAAC,gFAAgF;gBACtF,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,30 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2026 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { type Config, type ToolCallRequestInfo, type ToolCall, type CompletedToolCall, type EditorType } from '@google/gemini-cli-core';
7
- export type ScheduleFn = (request: ToolCallRequestInfo | ToolCallRequestInfo[], signal: AbortSignal) => Promise<CompletedToolCall[]>;
8
- export type MarkToolsAsSubmittedFn = (callIds: string[]) => void;
9
- export type CancelAllFn = (signal: AbortSignal) => void;
10
- /**
11
- * The shape expected by useGeminiStream.
12
- * It matches the Core ToolCall structure + the UI metadata flag.
13
- */
14
- export type TrackedToolCall = ToolCall & {
15
- responseSubmittedToGemini?: boolean;
16
- };
17
- /**
18
- * Modern tool scheduler hook using the event-driven Core Scheduler.
19
- *
20
- * This hook acts as an Adapter between the new MessageBus-driven Core
21
- * and the legacy callback-based UI components.
22
- */
23
- export declare function useToolExecutionScheduler(onComplete: (tools: CompletedToolCall[]) => Promise<void>, config: Config, getPreferredEditor: () => EditorType | undefined): [
24
- TrackedToolCall[],
25
- ScheduleFn,
26
- MarkToolsAsSubmittedFn,
27
- React.Dispatch<React.SetStateAction<TrackedToolCall[]>>,
28
- CancelAllFn,
29
- number
30
- ];
@@ -1,149 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2026 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { MessageBusType, ToolConfirmationOutcome, Scheduler, ROOT_SCHEDULER_ID, } from '@google/gemini-cli-core';
7
- import { useCallback, useState, useMemo, useEffect, useRef } from 'react';
8
- /**
9
- * Modern tool scheduler hook using the event-driven Core Scheduler.
10
- *
11
- * This hook acts as an Adapter between the new MessageBus-driven Core
12
- * and the legacy callback-based UI components.
13
- */
14
- export function useToolExecutionScheduler(onComplete, config, getPreferredEditor) {
15
- // State stores tool calls organized by their originating schedulerId
16
- const [toolCallsMap, setToolCallsMap] = useState({});
17
- const [lastToolOutputTime, setLastToolOutputTime] = useState(0);
18
- const messageBus = useMemo(() => config.getMessageBus(), [config]);
19
- const onCompleteRef = useRef(onComplete);
20
- useEffect(() => {
21
- onCompleteRef.current = onComplete;
22
- }, [onComplete]);
23
- const getPreferredEditorRef = useRef(getPreferredEditor);
24
- useEffect(() => {
25
- getPreferredEditorRef.current = getPreferredEditor;
26
- }, [getPreferredEditor]);
27
- const scheduler = useMemo(() => new Scheduler({
28
- config,
29
- messageBus,
30
- getPreferredEditor: () => getPreferredEditorRef.current(),
31
- schedulerId: ROOT_SCHEDULER_ID,
32
- }), [config, messageBus]);
33
- const internalAdaptToolCalls = useCallback((coreCalls, prevTracked) => adaptToolCalls(coreCalls, prevTracked, messageBus), [messageBus]);
34
- useEffect(() => {
35
- const handler = (event) => {
36
- // Update output timer for UI spinners (Side Effect)
37
- if (event.toolCalls.some((tc) => tc.status === 'executing')) {
38
- setLastToolOutputTime(Date.now());
39
- }
40
- setToolCallsMap((prev) => {
41
- const adapted = internalAdaptToolCalls(event.toolCalls, prev[event.schedulerId] ?? []);
42
- return {
43
- ...prev,
44
- [event.schedulerId]: adapted,
45
- };
46
- });
47
- };
48
- messageBus.subscribe(MessageBusType.TOOL_CALLS_UPDATE, handler);
49
- return () => {
50
- messageBus.unsubscribe(MessageBusType.TOOL_CALLS_UPDATE, handler);
51
- };
52
- }, [messageBus, internalAdaptToolCalls]);
53
- const schedule = useCallback(async (request, signal) => {
54
- // Clear state for new run
55
- setToolCallsMap({});
56
- // 1. Await Core Scheduler directly
57
- const results = await scheduler.schedule(request, signal);
58
- // 2. Trigger legacy reinjection logic (useGeminiStream loop)
59
- // Since this hook instance owns the "root" scheduler, we always trigger
60
- // onComplete when it finishes its batch.
61
- await onCompleteRef.current(results);
62
- return results;
63
- }, [scheduler]);
64
- const cancelAll = useCallback((_signal) => {
65
- scheduler.cancelAll();
66
- }, [scheduler]);
67
- const markToolsAsSubmitted = useCallback((callIdsToMark) => {
68
- setToolCallsMap((prevMap) => {
69
- const nextMap = { ...prevMap };
70
- for (const [sid, calls] of Object.entries(nextMap)) {
71
- nextMap[sid] = calls.map((tc) => callIdsToMark.includes(tc.request.callId)
72
- ? { ...tc, responseSubmittedToGemini: true }
73
- : tc);
74
- }
75
- return nextMap;
76
- });
77
- }, []);
78
- // Flatten the map for the UI components that expect a single list of tools.
79
- const toolCalls = useMemo(() => Object.values(toolCallsMap).flat(), [toolCallsMap]);
80
- // Provide a setter that maintains compatibility with legacy [].
81
- const setToolCallsForDisplay = useCallback((action) => {
82
- setToolCallsMap((prev) => {
83
- const currentFlattened = Object.values(prev).flat();
84
- const nextFlattened = typeof action === 'function' ? action(currentFlattened) : action;
85
- if (nextFlattened.length === 0) {
86
- return {};
87
- }
88
- // Re-group by schedulerId to preserve multi-scheduler state
89
- const nextMap = {};
90
- for (const call of nextFlattened) {
91
- // All tool calls should have a schedulerId from the core.
92
- // Default to ROOT_SCHEDULER_ID as a safeguard.
93
- const sid = call.schedulerId ?? ROOT_SCHEDULER_ID;
94
- if (!nextMap[sid]) {
95
- nextMap[sid] = [];
96
- }
97
- nextMap[sid].push(call);
98
- }
99
- return nextMap;
100
- });
101
- }, []);
102
- return [
103
- toolCalls,
104
- schedule,
105
- markToolsAsSubmitted,
106
- setToolCallsForDisplay,
107
- cancelAll,
108
- lastToolOutputTime,
109
- ];
110
- }
111
- /**
112
- * ADAPTER: Merges UI metadata (submitted flag) and injects legacy callbacks.
113
- */
114
- function adaptToolCalls(coreCalls, prevTracked, messageBus) {
115
- const prevMap = new Map(prevTracked.map((t) => [t.request.callId, t]));
116
- return coreCalls.map((coreCall) => {
117
- const prev = prevMap.get(coreCall.request.callId);
118
- const responseSubmittedToGemini = prev?.responseSubmittedToGemini ?? false;
119
- // Inject onConfirm adapter for tools awaiting approval.
120
- // The Core provides data-only (serializable) confirmationDetails. We must
121
- // inject the legacy callback function that proxies responses back to the
122
- // MessageBus.
123
- if (coreCall.status === 'awaiting_approval' && coreCall.correlationId) {
124
- const correlationId = coreCall.correlationId;
125
- return {
126
- ...coreCall,
127
- confirmationDetails: {
128
- ...coreCall.confirmationDetails,
129
- onConfirm: async (outcome, payload) => {
130
- await messageBus.publish({
131
- type: MessageBusType.TOOL_CONFIRMATION_RESPONSE,
132
- correlationId,
133
- confirmed: outcome !== ToolConfirmationOutcome.Cancel,
134
- requiresUserConfirmation: false,
135
- outcome,
136
- payload,
137
- });
138
- },
139
- },
140
- responseSubmittedToGemini,
141
- };
142
- }
143
- return {
144
- ...coreCall,
145
- responseSubmittedToGemini,
146
- };
147
- });
148
- }
149
- //# sourceMappingURL=useToolExecutionScheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToolExecutionScheduler.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useToolExecutionScheduler.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2026 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,376 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2026 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, vi, beforeEach } from 'vitest';
7
- import { act } from 'react';
8
- import { renderHook } from '../../test-utils/render.js';
9
- import { useToolExecutionScheduler } from './useToolExecutionScheduler.js';
10
- import { MessageBusType, ToolConfirmationOutcome, Scheduler, ROOT_SCHEDULER_ID, } from '@google/gemini-cli-core';
11
- import { createMockMessageBus } from '@google/gemini-cli-core/src/test-utils/mock-message-bus.js';
12
- // Mock Core Scheduler
13
- vi.mock('@google/gemini-cli-core', async (importOriginal) => {
14
- const actual = await importOriginal();
15
- return {
16
- ...actual,
17
- Scheduler: vi.fn().mockImplementation(() => ({
18
- schedule: vi.fn().mockResolvedValue([]),
19
- cancelAll: vi.fn(),
20
- })),
21
- };
22
- });
23
- const createMockTool = (overrides = {}) => ({
24
- name: 'test_tool',
25
- displayName: 'Test Tool',
26
- description: 'A test tool',
27
- kind: 'function',
28
- parameterSchema: {},
29
- isOutputMarkdown: false,
30
- build: vi.fn(),
31
- ...overrides,
32
- });
33
- const createMockInvocation = (overrides = {}) => ({
34
- getDescription: () => 'Executing test tool',
35
- shouldConfirmExecute: vi.fn(),
36
- execute: vi.fn(),
37
- params: {},
38
- toolLocations: [],
39
- ...overrides,
40
- });
41
- describe('useToolExecutionScheduler', () => {
42
- let mockConfig;
43
- let mockMessageBus;
44
- beforeEach(() => {
45
- vi.clearAllMocks();
46
- mockMessageBus = createMockMessageBus();
47
- mockConfig = {
48
- getMessageBus: () => mockMessageBus,
49
- };
50
- });
51
- afterEach(() => {
52
- vi.clearAllMocks();
53
- });
54
- it('initializes with empty tool calls', () => {
55
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
56
- const [toolCalls] = result.current;
57
- expect(toolCalls).toEqual([]);
58
- });
59
- it('updates tool calls when MessageBus emits TOOL_CALLS_UPDATE', () => {
60
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
61
- const mockToolCall = {
62
- status: 'executing',
63
- request: {
64
- callId: 'call-1',
65
- name: 'test_tool',
66
- args: {},
67
- isClientInitiated: false,
68
- prompt_id: 'p1',
69
- },
70
- tool: createMockTool(),
71
- invocation: createMockInvocation(),
72
- liveOutput: 'Loading...',
73
- };
74
- act(() => {
75
- void mockMessageBus.publish({
76
- type: MessageBusType.TOOL_CALLS_UPDATE,
77
- toolCalls: [mockToolCall],
78
- schedulerId: ROOT_SCHEDULER_ID,
79
- });
80
- });
81
- const [toolCalls] = result.current;
82
- expect(toolCalls).toHaveLength(1);
83
- // Expect Core Object structure, not Display Object
84
- expect(toolCalls[0]).toMatchObject({
85
- request: { callId: 'call-1', name: 'test_tool' },
86
- status: 'executing', // Core status
87
- liveOutput: 'Loading...',
88
- responseSubmittedToGemini: false,
89
- });
90
- });
91
- it('injects onConfirm callback for awaiting_approval tools (Adapter Pattern)', async () => {
92
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
93
- const mockToolCall = {
94
- status: 'awaiting_approval',
95
- request: {
96
- callId: 'call-1',
97
- name: 'test_tool',
98
- args: {},
99
- isClientInitiated: false,
100
- prompt_id: 'p1',
101
- },
102
- tool: createMockTool(),
103
- invocation: createMockInvocation({
104
- getDescription: () => 'Confirming test tool',
105
- }),
106
- confirmationDetails: { type: 'info', title: 'Confirm', prompt: 'Sure?' },
107
- correlationId: 'corr-123',
108
- };
109
- act(() => {
110
- void mockMessageBus.publish({
111
- type: MessageBusType.TOOL_CALLS_UPDATE,
112
- toolCalls: [mockToolCall],
113
- schedulerId: ROOT_SCHEDULER_ID,
114
- });
115
- });
116
- const [toolCalls] = result.current;
117
- const call = toolCalls[0];
118
- if (call.status !== 'awaiting_approval') {
119
- throw new Error('Expected status to be awaiting_approval');
120
- }
121
- const confirmationDetails = call.confirmationDetails;
122
- expect(confirmationDetails).toBeDefined();
123
- expect(typeof confirmationDetails.onConfirm).toBe('function');
124
- // Test that onConfirm publishes to MessageBus
125
- const publishSpy = vi.spyOn(mockMessageBus, 'publish');
126
- await confirmationDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
127
- expect(publishSpy).toHaveBeenCalledWith({
128
- type: MessageBusType.TOOL_CONFIRMATION_RESPONSE,
129
- correlationId: 'corr-123',
130
- confirmed: true,
131
- requiresUserConfirmation: false,
132
- outcome: ToolConfirmationOutcome.ProceedOnce,
133
- payload: undefined,
134
- });
135
- });
136
- it('injects onConfirm with payload (Inline Edit support)', async () => {
137
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
138
- const mockToolCall = {
139
- status: 'awaiting_approval',
140
- request: {
141
- callId: 'call-1',
142
- name: 'test_tool',
143
- args: {},
144
- isClientInitiated: false,
145
- prompt_id: 'p1',
146
- },
147
- tool: createMockTool(),
148
- invocation: createMockInvocation(),
149
- confirmationDetails: { type: 'edit', title: 'Edit', filePath: 'test.ts' },
150
- correlationId: 'corr-edit',
151
- };
152
- act(() => {
153
- void mockMessageBus.publish({
154
- type: MessageBusType.TOOL_CALLS_UPDATE,
155
- toolCalls: [mockToolCall],
156
- schedulerId: ROOT_SCHEDULER_ID,
157
- });
158
- });
159
- const [toolCalls] = result.current;
160
- const call = toolCalls[0];
161
- if (call.status !== 'awaiting_approval') {
162
- throw new Error('Expected awaiting_approval');
163
- }
164
- const confirmationDetails = call.confirmationDetails;
165
- const publishSpy = vi.spyOn(mockMessageBus, 'publish');
166
- const mockPayload = { newContent: 'updated code' };
167
- await confirmationDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce, mockPayload);
168
- expect(publishSpy).toHaveBeenCalledWith({
169
- type: MessageBusType.TOOL_CONFIRMATION_RESPONSE,
170
- correlationId: 'corr-edit',
171
- confirmed: true,
172
- requiresUserConfirmation: false,
173
- outcome: ToolConfirmationOutcome.ProceedOnce,
174
- payload: mockPayload,
175
- });
176
- });
177
- it('preserves responseSubmittedToGemini flag across updates', () => {
178
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
179
- const mockToolCall = {
180
- status: 'success',
181
- request: {
182
- callId: 'call-1',
183
- name: 'test',
184
- args: {},
185
- isClientInitiated: false,
186
- prompt_id: 'p1',
187
- },
188
- tool: createMockTool(),
189
- invocation: createMockInvocation(),
190
- response: {
191
- callId: 'call-1',
192
- resultDisplay: 'OK',
193
- responseParts: [],
194
- error: undefined,
195
- errorType: undefined,
196
- },
197
- };
198
- // 1. Initial success
199
- act(() => {
200
- void mockMessageBus.publish({
201
- type: MessageBusType.TOOL_CALLS_UPDATE,
202
- toolCalls: [mockToolCall],
203
- schedulerId: ROOT_SCHEDULER_ID,
204
- });
205
- });
206
- // 2. Mark as submitted
207
- act(() => {
208
- const [, , markAsSubmitted] = result.current;
209
- markAsSubmitted(['call-1']);
210
- });
211
- expect(result.current[0][0].responseSubmittedToGemini).toBe(true);
212
- // 3. Receive another update (should preserve the true flag)
213
- act(() => {
214
- void mockMessageBus.publish({
215
- type: MessageBusType.TOOL_CALLS_UPDATE,
216
- toolCalls: [mockToolCall],
217
- schedulerId: ROOT_SCHEDULER_ID,
218
- });
219
- });
220
- expect(result.current[0][0].responseSubmittedToGemini).toBe(true);
221
- });
222
- it('updates lastToolOutputTime when tools are executing', () => {
223
- vi.useFakeTimers();
224
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
225
- const startTime = Date.now();
226
- vi.advanceTimersByTime(1000);
227
- act(() => {
228
- void mockMessageBus.publish({
229
- type: MessageBusType.TOOL_CALLS_UPDATE,
230
- toolCalls: [
231
- {
232
- status: 'executing',
233
- request: {
234
- callId: 'call-1',
235
- name: 'test',
236
- args: {},
237
- isClientInitiated: false,
238
- prompt_id: 'p1',
239
- },
240
- tool: createMockTool(),
241
- invocation: createMockInvocation(),
242
- },
243
- ],
244
- schedulerId: ROOT_SCHEDULER_ID,
245
- });
246
- });
247
- const [, , , , , lastOutputTime] = result.current;
248
- expect(lastOutputTime).toBeGreaterThan(startTime);
249
- vi.useRealTimers();
250
- });
251
- it('delegates cancelAll to the Core Scheduler', () => {
252
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
253
- const [, , , , cancelAll] = result.current;
254
- const signal = new AbortController().signal;
255
- // We need to find the mock instance of Scheduler
256
- // Since we used vi.mock at top level, we can get it from vi.mocked(Scheduler)
257
- const schedulerInstance = vi.mocked(Scheduler).mock.results[0].value;
258
- cancelAll(signal);
259
- expect(schedulerInstance.cancelAll).toHaveBeenCalled();
260
- });
261
- it('resolves the schedule promise when scheduler resolves', async () => {
262
- const onComplete = vi.fn().mockResolvedValue(undefined);
263
- const completedToolCall = {
264
- status: 'success',
265
- request: {
266
- callId: 'call-1',
267
- name: 'test',
268
- args: {},
269
- isClientInitiated: false,
270
- prompt_id: 'p1',
271
- },
272
- tool: createMockTool(),
273
- invocation: createMockInvocation(),
274
- response: {
275
- callId: 'call-1',
276
- responseParts: [],
277
- resultDisplay: 'Success',
278
- error: undefined,
279
- errorType: undefined,
280
- },
281
- };
282
- // Mock the specific return value for this test
283
- const { Scheduler } = await import('@google/gemini-cli-core');
284
- vi.mocked(Scheduler).mockImplementation(() => ({
285
- schedule: vi.fn().mockResolvedValue([completedToolCall]),
286
- cancelAll: vi.fn(),
287
- }));
288
- const { result } = renderHook(() => useToolExecutionScheduler(onComplete, mockConfig, () => undefined));
289
- const [, schedule] = result.current;
290
- const signal = new AbortController().signal;
291
- let completedResult = [];
292
- await act(async () => {
293
- completedResult = await schedule({
294
- callId: 'call-1',
295
- name: 'test',
296
- args: {},
297
- isClientInitiated: false,
298
- prompt_id: 'p1',
299
- }, signal);
300
- });
301
- expect(completedResult).toEqual([completedToolCall]);
302
- expect(onComplete).toHaveBeenCalledWith([completedToolCall]);
303
- });
304
- it('setToolCallsForDisplay re-groups tools by schedulerId (Multi-Scheduler support)', () => {
305
- const { result } = renderHook(() => useToolExecutionScheduler(vi.fn().mockResolvedValue(undefined), mockConfig, () => undefined));
306
- const callRoot = {
307
- status: 'success',
308
- request: {
309
- callId: 'call-root',
310
- name: 'test',
311
- args: {},
312
- isClientInitiated: false,
313
- prompt_id: 'p1',
314
- },
315
- tool: createMockTool(),
316
- invocation: createMockInvocation(),
317
- response: {
318
- callId: 'call-root',
319
- responseParts: [],
320
- resultDisplay: 'OK',
321
- error: undefined,
322
- errorType: undefined,
323
- },
324
- schedulerId: ROOT_SCHEDULER_ID,
325
- };
326
- const callSub = {
327
- ...callRoot,
328
- request: { ...callRoot.request, callId: 'call-sub' },
329
- schedulerId: 'subagent-1',
330
- };
331
- // 1. Populate state with multiple schedulers
332
- act(() => {
333
- void mockMessageBus.publish({
334
- type: MessageBusType.TOOL_CALLS_UPDATE,
335
- toolCalls: [callRoot],
336
- schedulerId: ROOT_SCHEDULER_ID,
337
- });
338
- void mockMessageBus.publish({
339
- type: MessageBusType.TOOL_CALLS_UPDATE,
340
- toolCalls: [callSub],
341
- schedulerId: 'subagent-1',
342
- });
343
- });
344
- let [toolCalls] = result.current;
345
- expect(toolCalls).toHaveLength(2);
346
- expect(toolCalls.find((t) => t.request.callId === 'call-root')?.schedulerId).toBe(ROOT_SCHEDULER_ID);
347
- expect(toolCalls.find((t) => t.request.callId === 'call-sub')?.schedulerId).toBe('subagent-1');
348
- // 2. Call setToolCallsForDisplay (e.g., simulate a manual update or clear)
349
- act(() => {
350
- const [, , , setToolCalls] = result.current;
351
- setToolCalls((prev) => prev.map((t) => ({ ...t, responseSubmittedToGemini: true })));
352
- });
353
- // 3. Verify that tools are still present and maintain their scheduler IDs
354
- // The internal map should have been re-grouped.
355
- [toolCalls] = result.current;
356
- expect(toolCalls).toHaveLength(2);
357
- expect(toolCalls.every((t) => t.responseSubmittedToGemini)).toBe(true);
358
- const updatedRoot = toolCalls.find((t) => t.request.callId === 'call-root');
359
- const updatedSub = toolCalls.find((t) => t.request.callId === 'call-sub');
360
- expect(updatedRoot?.schedulerId).toBe(ROOT_SCHEDULER_ID);
361
- expect(updatedSub?.schedulerId).toBe('subagent-1');
362
- // 4. Verify that a subsequent update to ONE scheduler doesn't wipe the other
363
- act(() => {
364
- void mockMessageBus.publish({
365
- type: MessageBusType.TOOL_CALLS_UPDATE,
366
- toolCalls: [{ ...callRoot, status: 'executing' }],
367
- schedulerId: ROOT_SCHEDULER_ID,
368
- });
369
- });
370
- [toolCalls] = result.current;
371
- expect(toolCalls).toHaveLength(2);
372
- expect(toolCalls.find((t) => t.request.callId === 'call-root')?.status).toBe('executing');
373
- expect(toolCalls.find((t) => t.request.callId === 'call-sub')?.schedulerId).toBe('subagent-1');
374
- });
375
- });
376
- //# sourceMappingURL=useToolExecutionScheduler.test.js.map