@google/gemini-cli 0.3.2 → 0.4.0-preview

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 (198) hide show
  1. package/dist/google-gemini-cli-0.3.1.tgz +0 -0
  2. package/dist/package.json +3 -6
  3. package/dist/src/commands/extensions/enable.js +1 -1
  4. package/dist/src/commands/extensions/enable.js.map +1 -1
  5. package/dist/src/commands/extensions/examples/context/GEMINI.md +8 -0
  6. package/dist/src/commands/extensions/examples/context/gemini-extension.json +5 -0
  7. package/dist/src/commands/extensions/examples/custom-commands/commands/fs/grep-code.toml +6 -0
  8. package/dist/src/commands/extensions/examples/custom-commands/gemini-extension.json +4 -0
  9. package/dist/src/commands/extensions/examples/exclude-tools/gemini-extension.json +5 -0
  10. package/dist/src/commands/extensions/examples/mcp-server/example.d.ts +6 -0
  11. package/dist/src/commands/extensions/examples/mcp-server/example.js +46 -0
  12. package/dist/src/commands/extensions/examples/mcp-server/example.js.map +1 -0
  13. package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
  14. package/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +10 -0
  15. package/dist/src/commands/extensions/install.js +35 -7
  16. package/dist/src/commands/extensions/install.js.map +1 -1
  17. package/dist/src/commands/extensions/install.test.js +20 -2
  18. package/dist/src/commands/extensions/install.test.js.map +1 -1
  19. package/dist/src/commands/extensions/link.d.ts +12 -0
  20. package/dist/src/commands/extensions/link.js +37 -0
  21. package/dist/src/commands/extensions/link.js.map +1 -0
  22. package/dist/src/commands/extensions/new.d.ts +7 -0
  23. package/dist/src/commands/extensions/new.js +70 -0
  24. package/dist/src/commands/extensions/new.js.map +1 -0
  25. package/dist/src/commands/extensions/new.test.d.ts +6 -0
  26. package/dist/src/commands/extensions/new.test.js +50 -0
  27. package/dist/src/commands/extensions/new.test.js.map +1 -0
  28. package/dist/src/commands/extensions/update.d.ts +2 -1
  29. package/dist/src/commands/extensions/update.js +36 -15
  30. package/dist/src/commands/extensions/update.js.map +1 -1
  31. package/dist/src/commands/extensions.js +4 -0
  32. package/dist/src/commands/extensions.js.map +1 -1
  33. package/dist/src/commands/mcp/add.js +1 -1
  34. package/dist/src/commands/mcp/add.js.map +1 -1
  35. package/dist/src/commands/mcp/list.js +2 -2
  36. package/dist/src/commands/mcp/list.js.map +1 -1
  37. package/dist/src/commands/mcp/remove.js +1 -1
  38. package/dist/src/commands/mcp/remove.js.map +1 -1
  39. package/dist/src/config/auth.d.ts +1 -1
  40. package/dist/src/config/auth.js +4 -4
  41. package/dist/src/config/auth.js.map +1 -1
  42. package/dist/src/config/auth.test.js +15 -7
  43. package/dist/src/config/auth.test.js.map +1 -1
  44. package/dist/src/config/config.d.ts +4 -1
  45. package/dist/src/config/config.js +32 -18
  46. package/dist/src/config/config.js.map +1 -1
  47. package/dist/src/config/extension.d.ts +7 -4
  48. package/dist/src/config/extension.js +76 -24
  49. package/dist/src/config/extension.js.map +1 -1
  50. package/dist/src/config/keyBindings.d.ts +1 -0
  51. package/dist/src/config/keyBindings.js +6 -25
  52. package/dist/src/config/keyBindings.js.map +1 -1
  53. package/dist/src/config/settings.d.ts +5 -5
  54. package/dist/src/config/settings.js +93 -224
  55. package/dist/src/config/settings.js.map +1 -1
  56. package/dist/src/config/settingsSchema.d.ts +113 -13
  57. package/dist/src/config/settingsSchema.js +112 -13
  58. package/dist/src/config/settingsSchema.js.map +1 -1
  59. package/dist/src/config/trustedFolders.d.ts +12 -2
  60. package/dist/src/config/trustedFolders.js +59 -40
  61. package/dist/src/config/trustedFolders.js.map +1 -1
  62. package/dist/src/config/trustedFolders.test.js +81 -2
  63. package/dist/src/config/trustedFolders.test.js.map +1 -1
  64. package/dist/src/gemini.d.ts +1 -1
  65. package/dist/src/gemini.js +52 -26
  66. package/dist/src/gemini.js.map +1 -1
  67. package/dist/src/gemini.test.js +2 -30
  68. package/dist/src/gemini.test.js.map +1 -1
  69. package/dist/src/generated/git-commit.d.ts +2 -2
  70. package/dist/src/generated/git-commit.js +2 -2
  71. package/dist/src/generated/git-commit.js.map +1 -1
  72. package/dist/src/services/BuiltinCommandLoader.js +1 -1
  73. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  74. package/dist/src/services/BuiltinCommandLoader.test.js +3 -3
  75. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  76. package/dist/src/services/FileCommandLoader.d.ts +2 -0
  77. package/dist/src/services/FileCommandLoader.js +7 -0
  78. package/dist/src/services/FileCommandLoader.js.map +1 -1
  79. package/dist/src/ui/App.js +109 -47
  80. package/dist/src/ui/App.js.map +1 -1
  81. package/dist/src/ui/commands/aboutCommand.js +9 -3
  82. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  83. package/dist/src/ui/commands/bugCommand.js +9 -4
  84. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  85. package/dist/src/ui/commands/directoryCommand.js +1 -1
  86. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  87. package/dist/src/ui/commands/ideCommand.d.ts +1 -2
  88. package/dist/src/ui/commands/ideCommand.js +16 -7
  89. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  90. package/dist/src/ui/commands/mcpCommand.js +6 -4
  91. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  92. package/dist/src/ui/commands/memoryCommand.js +1 -1
  93. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  94. package/dist/src/ui/components/AuthDialog.js +8 -2
  95. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  96. package/dist/src/ui/components/AuthDialog.test.js +41 -10
  97. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  98. package/dist/src/ui/components/FolderTrustDialog.js +3 -1
  99. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  100. package/dist/src/ui/components/FolderTrustDialog.test.js +19 -4
  101. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  102. package/dist/src/ui/components/Footer.d.ts +3 -0
  103. package/dist/src/ui/components/Footer.js +4 -3
  104. package/dist/src/ui/components/Footer.js.map +1 -1
  105. package/dist/src/ui/components/InputPrompt.js +34 -24
  106. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  107. package/dist/src/ui/components/MemoryUsageDisplay.js +1 -1
  108. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  109. package/dist/src/ui/components/ProQuotaDialog.d.ts +13 -0
  110. package/dist/src/ui/components/ProQuotaDialog.js +21 -0
  111. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -0
  112. package/dist/src/ui/components/ProQuotaDialog.test.d.ts +6 -0
  113. package/dist/src/ui/components/ProQuotaDialog.test.js +56 -0
  114. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -0
  115. package/dist/src/ui/components/SettingsDialog.test.js +2 -2
  116. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  117. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +3 -3
  118. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  119. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -8
  120. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  121. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  122. package/dist/src/ui/components/shared/text-buffer.js +35 -51
  123. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  124. package/dist/src/ui/contexts/KeypressContext.js +255 -42
  125. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  126. package/dist/src/ui/contexts/KeypressContext.test.js +115 -1
  127. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  128. package/dist/src/ui/hooks/slashCommandProcessor.js +11 -6
  129. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  130. package/dist/src/ui/hooks/useFolderTrust.js +6 -4
  131. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  132. package/dist/src/ui/hooks/useGeminiStream.d.ts +3 -2
  133. package/dist/src/ui/hooks/useGeminiStream.js +31 -3
  134. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  135. package/dist/src/ui/hooks/useIdeTrustListener.d.ts +14 -0
  136. package/dist/src/ui/hooks/useIdeTrustListener.js +39 -0
  137. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -0
  138. package/dist/src/ui/hooks/useInputHistoryStore.d.ts +19 -0
  139. package/dist/src/ui/hooks/useInputHistoryStore.js +81 -0
  140. package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -0
  141. package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +6 -0
  142. package/dist/src/ui/hooks/useInputHistoryStore.test.js +234 -0
  143. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -0
  144. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  145. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  146. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  147. package/dist/src/ui/hooks/useLoadingIndicator.test.js +2 -2
  148. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  149. package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
  150. package/dist/src/ui/hooks/usePhraseCycler.js +11 -8
  151. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  152. package/dist/src/ui/hooks/usePrivacySettings.d.ts +1 -1
  153. package/dist/src/ui/hooks/usePrivacySettings.js +8 -13
  154. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  155. package/dist/src/ui/hooks/usePrivacySettings.test.js +33 -97
  156. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -1
  157. package/dist/src/ui/hooks/useSlashCompletion.js +263 -67
  158. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  159. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +4 -1
  160. package/dist/src/ui/hooks/useSlashCompletion.test.js +452 -59
  161. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  162. package/dist/src/ui/hooks/useToolScheduler.test.js +57 -59
  163. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  164. package/dist/src/ui/keyMatchers.test.js +9 -0
  165. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  166. package/dist/src/ui/utils/MarkdownDisplay.test.js +2 -2
  167. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  168. package/dist/src/ui/utils/highlight.d.ts +10 -0
  169. package/dist/src/ui/utils/highlight.js +41 -0
  170. package/dist/src/ui/utils/highlight.js.map +1 -0
  171. package/dist/src/ui/utils/highlight.test.d.ts +6 -0
  172. package/dist/src/ui/utils/highlight.test.js +93 -0
  173. package/dist/src/ui/utils/highlight.test.js.map +1 -0
  174. package/dist/src/ui/utils/platformConstants.d.ts +24 -1
  175. package/dist/src/ui/utils/platformConstants.js +26 -1
  176. package/dist/src/ui/utils/platformConstants.js.map +1 -1
  177. package/dist/src/utils/deepMerge.d.ts +10 -0
  178. package/dist/src/utils/deepMerge.js +58 -0
  179. package/dist/src/utils/deepMerge.js.map +1 -0
  180. package/dist/src/utils/deepMerge.test.d.ts +6 -0
  181. package/dist/src/utils/deepMerge.test.js +143 -0
  182. package/dist/src/utils/deepMerge.test.js.map +1 -0
  183. package/dist/src/utils/envVarResolver.d.ts +39 -0
  184. package/dist/src/utils/envVarResolver.js +97 -0
  185. package/dist/src/utils/envVarResolver.js.map +1 -0
  186. package/dist/src/utils/envVarResolver.test.d.ts +6 -0
  187. package/dist/src/utils/envVarResolver.test.js +221 -0
  188. package/dist/src/utils/envVarResolver.test.js.map +1 -0
  189. package/dist/src/utils/userStartupWarnings.d.ts +1 -1
  190. package/dist/src/utils/userStartupWarnings.js +1 -1
  191. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  192. package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
  193. package/dist/src/validateNonInterActiveAuth.js +11 -2
  194. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  195. package/dist/src/zed-integration/zedIntegration.js +7 -5
  196. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  197. package/dist/tsconfig.tsbuildinfo +1 -1
  198. package/package.json +4 -7
@@ -5,6 +5,6 @@
5
5
  */
6
6
  // This file is auto-generated by the build script (scripts/generate-git-commit-info.js)
7
7
  // Do not edit this file manually.
8
- export const GIT_COMMIT_INFO = 'ad3bc17e';
9
- export const CLI_VERSION = '0.3.2';
8
+ export const GIT_COMMIT_INFO = '4aef2fa5';
9
+ export const CLI_VERSION = '0.4.0-preview';
10
10
  //# sourceMappingURL=git-commit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC"}
@@ -61,7 +61,7 @@ export class BuiltinCommandLoader {
61
61
  editorCommand,
62
62
  extensionsCommand,
63
63
  helpCommand,
64
- ideCommand(this.config),
64
+ await ideCommand(),
65
65
  initCommand,
66
66
  mcpCommand,
67
67
  memoryCommand,
@@ -1 +1 @@
1
- {"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,MAAM,cAAc,GAA+B;YACjD,YAAY;YACZ,WAAW;YACX,UAAU;YACV,WAAW;YACX,YAAY;YACZ,eAAe;YACf,WAAW;YACX,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,WAAW;YACX,UAAU;YACV,aAAa;YACb,cAAc;YACd,WAAW;YACX,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,UAAU;YACV,kBAAkB;YAClB,oBAAoB;SACrB,CAAC;QAEF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAuB,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"BuiltinCommandLoader.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACX;IAApB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,OAAoB;QACrC,MAAM,cAAc,GAA+B;YACjD,YAAY;YACZ,WAAW;YACX,UAAU;YACV,WAAW;YACX,YAAY;YACZ,eAAe;YACf,WAAW;YACX,YAAY;YACZ,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,iBAAiB;YACjB,WAAW;YACX,MAAM,UAAU,EAAE;YAClB,WAAW;YACX,UAAU;YACV,aAAa;YACb,cAAc;YACd,WAAW;YACX,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAC3B,YAAY;YACZ,YAAY;YACZ,YAAY;YACZ,eAAe;YACf,UAAU;YACV,kBAAkB;YAClB,oBAAoB;SACrB,CAAC;QAEF,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAuB,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -54,7 +54,7 @@ describe('BuiltinCommandLoader', () => {
54
54
  beforeEach(() => {
55
55
  vi.clearAllMocks();
56
56
  mockConfig = { some: 'config' };
57
- ideCommandMock.mockReturnValue({
57
+ ideCommandMock.mockResolvedValue({
58
58
  name: 'ide',
59
59
  description: 'IDE command',
60
60
  kind: CommandKind.BUILT_IN,
@@ -69,7 +69,7 @@ describe('BuiltinCommandLoader', () => {
69
69
  const loader = new BuiltinCommandLoader(mockConfig);
70
70
  await loader.loadCommands(new AbortController().signal);
71
71
  expect(ideCommandMock).toHaveBeenCalledTimes(1);
72
- expect(ideCommandMock).toHaveBeenCalledWith(mockConfig);
72
+ expect(ideCommandMock).toHaveBeenCalledWith();
73
73
  expect(restoreCommandMock).toHaveBeenCalledTimes(1);
74
74
  expect(restoreCommandMock).toHaveBeenCalledWith(mockConfig);
75
75
  });
@@ -89,7 +89,7 @@ describe('BuiltinCommandLoader', () => {
89
89
  const loader = new BuiltinCommandLoader(null);
90
90
  await loader.loadCommands(new AbortController().signal);
91
91
  expect(ideCommandMock).toHaveBeenCalledTimes(1);
92
- expect(ideCommandMock).toHaveBeenCalledWith(null);
92
+ expect(ideCommandMock).toHaveBeenCalledWith();
93
93
  expect(restoreCommandMock).toHaveBeenCalledTimes(1);
94
94
  expect(restoreCommandMock).toHaveBeenCalledWith(null);
95
95
  });
@@ -1 +1 @@
1
- {"version":3,"file":"BuiltinCommandLoader.test.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BuiltinCommandLoader.test.js","sourceRoot":"","sources":["../../../src/services/BuiltinCommandLoader.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;IACnD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAChE,OAAO;QACL,YAAY,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,eAAe;YAC5B,IAAI,EAAE,WAAW,CAAC,QAAQ;SAC3B;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACzE,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAa,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9E,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1E,EAAE,CAAC,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,iBAAiB,EAAE,EAAE;CACtB,CAAC,CAAC,CAAC;AACJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1E,EAAE,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5E,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxE,EAAE,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7C,UAAU,EAAE;QACV,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,aAAa;QAC1B,IAAI,EAAE,UAAU;KACjB;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,UAAkB,CAAC;IAEvB,MAAM,cAAc,GAAG,UAAkB,CAAC;IAC1C,MAAM,kBAAkB,GAAG,cAAsB,CAAC;IAElD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,UAAU,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAuB,CAAC;QAErD,cAAc,CAAC,iBAAiB,CAAC;YAC/B,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,WAAW,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,kBAAkB,CAAC,eAAe,CAAC;YACjC,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,WAAW,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;QAExD,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC9C,MAAM,CAAC,kBAAkB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,uDAAuD;QACvD,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;QAEzE,4CAA4C;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAC;QAE/B,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;QACxD,MAAM,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC9C,MAAM,CAAC,kBAAkB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,MAAM,GAAG,IAAI,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;QAEzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAElD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -19,6 +19,8 @@ import type { SlashCommand } from '../ui/commands/types.js';
19
19
  export declare class FileCommandLoader implements ICommandLoader {
20
20
  private readonly config;
21
21
  private readonly projectRoot;
22
+ private readonly folderTrustEnabled;
23
+ private readonly folderTrust;
22
24
  constructor(config: Config | null);
23
25
  /**
24
26
  * Loads all commands from user, project, and extension directories.
@@ -38,8 +38,12 @@ const TomlCommandDefSchema = z.object({
38
38
  export class FileCommandLoader {
39
39
  config;
40
40
  projectRoot;
41
+ folderTrustEnabled;
42
+ folderTrust;
41
43
  constructor(config) {
42
44
  this.config = config;
45
+ this.folderTrustEnabled = !!config?.getFolderTrustFeature();
46
+ this.folderTrust = !!config?.getFolderTrust();
43
47
  this.projectRoot = config?.getProjectRoot() || process.cwd();
44
48
  }
45
49
  /**
@@ -69,6 +73,9 @@ export class FileCommandLoader {
69
73
  ...globOptions,
70
74
  cwd: dirInfo.path,
71
75
  });
76
+ if (this.folderTrustEnabled && !this.folderTrust) {
77
+ return [];
78
+ }
72
79
  const commandPromises = files.map((file) => this.parseAndAdaptFile(path.join(dirInfo.path, file), dirInfo.path, dirInfo.extensionName));
73
80
  const commands = (await Promise.all(commandPromises)).filter((cmd) => cmd !== null);
74
81
  // Add all commands without deduplication
@@ -1 +1 @@
1
- {"version":3,"file":"FileCommandLoader.js","sourceRoot":"","sources":["../../../src/services/FileCommandLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileCommandLoader.js","sourceRoot":"","sources":["../../../src/services/FileCommandLoader.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
13
13
  import { useThemeCommand } from './hooks/useThemeCommand.js';
14
14
  import { useAuthCommand } from './hooks/useAuthCommand.js';
15
15
  import { useFolderTrust } from './hooks/useFolderTrust.js';
16
+ import { useIdeTrustListener } from './hooks/useIdeTrustListener.js';
16
17
  import { useEditorSettings } from './hooks/useEditorSettings.js';
17
18
  import { useSlashCommandProcessor } from './hooks/slashCommandProcessor.js';
18
19
  import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
@@ -41,8 +42,9 @@ import { DetailedMessagesDisplay } from './components/DetailedMessagesDisplay.js
41
42
  import { HistoryItemDisplay } from './components/HistoryItemDisplay.js';
42
43
  import { ContextSummaryDisplay } from './components/ContextSummaryDisplay.js';
43
44
  import { useHistory } from './hooks/useHistoryManager.js';
45
+ import { useInputHistoryStore } from './hooks/useInputHistoryStore.js';
44
46
  import process from 'node:process';
45
- import { ApprovalMode, getAllGeminiMdFilenames, isEditorAvailable, getErrorMessage, AuthType, logFlashFallback, FlashFallbackEvent, ideContext, isProQuotaExceededError, isGenericQuotaExceededError, UserTierId, } from '@google/gemini-cli-core';
47
+ import { ApprovalMode, getAllGeminiMdFilenames, isEditorAvailable, getErrorMessage, AuthType, logFlashFallback, FlashFallbackEvent, ideContext, isProQuotaExceededError, isGenericQuotaExceededError, UserTierId, DEFAULT_GEMINI_FLASH_MODEL, IdeClient, } from '@google/gemini-cli-core';
46
48
  import { IdeIntegrationNudge } from './IdeIntegrationNudge.js';
47
49
  import { validateAuthMethod } from '../config/auth.js';
48
50
  import { useLogger } from './hooks/useLogger.js';
@@ -66,11 +68,13 @@ import { ShowMoreLines } from './components/ShowMoreLines.js';
66
68
  import { PrivacyNotice } from './privacy/PrivacyNotice.js';
67
69
  import { useSettingsCommand } from './hooks/useSettingsCommand.js';
68
70
  import { SettingsDialog } from './components/SettingsDialog.js';
71
+ import { ProQuotaDialog } from './components/ProQuotaDialog.js';
69
72
  import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
70
73
  import { appEvents, AppEvent } from '../utils/events.js';
71
74
  import { isNarrowWidth } from './utils/isNarrowWidth.js';
72
75
  import { useWorkspaceMigration } from './hooks/useWorkspaceMigration.js';
73
76
  import { WorkspaceMigrationDialog } from './components/WorkspaceMigrationDialog.js';
77
+ import { isWorkspaceTrusted } from '../config/trustedFolders.js';
74
78
  const CTRL_EXIT_PROMPT_DURATION_MS = 1000;
75
79
  // Maximum number of queued messages to display in UI to prevent performance issues
76
80
  const MAX_DISPLAYED_QUEUED_MESSAGES = 3;
@@ -94,9 +98,16 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
94
98
  const nightly = version.includes('nightly');
95
99
  const { history, addItem, clearItems, loadHistory } = useHistory();
96
100
  const [idePromptAnswered, setIdePromptAnswered] = useState(false);
97
- const currentIDE = config.getIdeClient().getCurrentIde();
101
+ const [currentIDE, setCurrentIDE] = useState();
98
102
  useEffect(() => {
99
- registerCleanup(() => config.getIdeClient().disconnect());
103
+ (async () => {
104
+ const ideClient = await IdeClient.getInstance();
105
+ setCurrentIDE(ideClient.getCurrentIde());
106
+ })();
107
+ registerCleanup(async () => {
108
+ const ideClient = await IdeClient.getInstance();
109
+ ideClient.disconnect();
110
+ });
100
111
  }, [config]);
101
112
  const shouldShowIdePrompt = currentIDE &&
102
113
  !config.getIdeMode() &&
@@ -129,7 +140,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
129
140
  const [editorError, setEditorError] = useState(null);
130
141
  const [footerHeight, setFooterHeight] = useState(0);
131
142
  const [corgiMode, setCorgiMode] = useState(false);
132
- const [isTrustedFolderState, setIsTrustedFolder] = useState(config.isTrustedFolder());
143
+ const [isTrustedFolderState, setIsTrustedFolder] = useState(isWorkspaceTrusted(settings.merged));
133
144
  const [currentModel, setCurrentModel] = useState(config.getModel());
134
145
  const [shellModeActive, setShellModeActive] = useState(false);
135
146
  const [showErrorDetails, setShowErrorDetails] = useState(false);
@@ -145,8 +156,11 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
145
156
  const [userTier, setUserTier] = useState(undefined);
146
157
  const [ideContextState, setIdeContextState] = useState();
147
158
  const [showEscapePrompt, setShowEscapePrompt] = useState(false);
159
+ const [showIdeRestartPrompt, setShowIdeRestartPrompt] = useState(false);
148
160
  const [isProcessing, setIsProcessing] = useState(false);
149
161
  const { showWorkspaceMigrationDialog, workspaceExtensions, onWorkspaceMigrationDialogOpen, onWorkspaceMigrationDialogClose, } = useWorkspaceMigration(settings);
162
+ const [isProQuotaDialogOpen, setIsProQuotaDialogOpen] = useState(false);
163
+ const [proQuotaDialogResolver, setProQuotaDialogResolver] = useState(null);
150
164
  useEffect(() => {
151
165
  const unsubscribe = ideContext.subscribeToIdeContext(setIdeContextState);
152
166
  // Set the initial value
@@ -185,9 +199,28 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
185
199
  const { isThemeDialogOpen, openThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, addItem);
186
200
  const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
187
201
  const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder);
202
+ const { needsRestart: ideNeedsRestart } = useIdeTrustListener();
203
+ useEffect(() => {
204
+ if (ideNeedsRestart) {
205
+ // IDE trust changed, force a restart.
206
+ setShowIdeRestartPrompt(true);
207
+ }
208
+ }, [ideNeedsRestart]);
209
+ useKeypress((key) => {
210
+ if (key.name === 'r' || key.name === 'R') {
211
+ process.exit(0);
212
+ }
213
+ }, { isActive: showIdeRestartPrompt });
188
214
  const { isAuthDialogOpen, openAuthDialog, handleAuthSelect, isAuthenticating, cancelAuthentication, } = useAuthCommand(settings, setAuthError, config);
189
215
  useEffect(() => {
190
- if (settings.merged.security?.auth?.selectedType &&
216
+ if (settings.merged.security?.auth?.enforcedType &&
217
+ settings.merged.security?.auth.selectedType &&
218
+ settings.merged.security?.auth.enforcedType !==
219
+ settings.merged.security?.auth.selectedType) {
220
+ setAuthError(`Authentication is enforced to be ${settings.merged.security?.auth.enforcedType}, but you are currently using ${settings.merged.security?.auth.selectedType}.`);
221
+ openAuthDialog();
222
+ }
223
+ else if (settings.merged.security?.auth?.selectedType &&
191
224
  !settings.merged.security?.auth?.useExternal) {
192
225
  const error = validateAuthMethod(settings.merged.security.auth.selectedType);
193
226
  if (error) {
@@ -197,6 +230,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
197
230
  }
198
231
  }, [
199
232
  settings.merged.security?.auth?.selectedType,
233
+ settings.merged.security?.auth?.enforcedType,
200
234
  settings.merged.security?.auth?.useExternal,
201
235
  openAuthDialog,
202
236
  setAuthError,
@@ -220,7 +254,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
220
254
  try {
221
255
  const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(process.cwd(), settings.merged.context?.loadMemoryFromIncludeDirectories
222
256
  ? config.getWorkspaceContext().getDirectories()
223
- : [], config.getDebugMode(), config.getFileService(), settings.merged, config.getExtensionContextFilePaths(), settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
257
+ : [], config.getDebugMode(), config.getFileService(), settings.merged, config.getExtensionContextFilePaths(), config.getFolderTrust(), settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
224
258
  config.getFileFilteringOptions());
225
259
  config.setUserMemory(memoryContent);
226
260
  config.setGeminiMdFileCount(fileCount);
@@ -258,6 +292,11 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
258
292
  // Set up Flash fallback handler
259
293
  useEffect(() => {
260
294
  const flashFallbackHandler = async (currentModel, fallbackModel, error) => {
295
+ // Check if we've already switched to the fallback model
296
+ if (config.isInFallbackMode()) {
297
+ // If we're already in fallback mode, don't show the dialog again
298
+ return false;
299
+ }
261
300
  let message;
262
301
  if (config.getContentGeneratorConfig().authType ===
263
302
  AuthType.LOGIN_WITH_GOOGLE) {
@@ -267,12 +306,12 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
267
306
  if (error && isProQuotaExceededError(error)) {
268
307
  if (isPaidTier) {
269
308
  message = `⚡ You have reached your daily ${currentModel} quota limit.
270
- Automatically switching from ${currentModel} to ${fallbackModel} for the remainder of this session.
309
+ You can choose to authenticate with a paid API key or continue with the fallback model.
271
310
  ⚡ To continue accessing the ${currentModel} model today, consider using /auth to switch to using a paid API key from AI Studio at https://aistudio.google.com/apikey`;
272
311
  }
273
312
  else {
274
313
  message = `⚡ You have reached your daily ${currentModel} quota limit.
275
- Automatically switching from ${currentModel} to ${fallbackModel} for the remainder of this session.
314
+ You can choose to authenticate with a paid API key or continue with the fallback model.
276
315
  ⚡ To increase your limits, upgrade to a Gemini Code Assist Standard or Enterprise plan with higher limits at https://goo.gle/set-up-gemini-code-assist
277
316
  ⚡ Or you can utilize a Gemini API Key. See: https://goo.gle/gemini-cli-docs-auth#gemini-api-key
278
317
  ⚡ You can switch authentication methods by typing /auth`;
@@ -313,6 +352,29 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
313
352
  type: MessageType.INFO,
314
353
  text: message,
315
354
  }, Date.now());
355
+ // For Pro quota errors, show the dialog and wait for user's choice
356
+ if (error && isProQuotaExceededError(error)) {
357
+ // Set the flag to prevent tool continuation
358
+ setModelSwitchedFromQuotaError(true);
359
+ // Set global quota error flag to prevent Flash model calls
360
+ config.setQuotaErrorOccurred(true);
361
+ // Show the ProQuotaDialog and wait for user's choice
362
+ const shouldContinueWithFallback = await new Promise((resolve) => {
363
+ setIsProQuotaDialogOpen(true);
364
+ setProQuotaDialogResolver(() => resolve);
365
+ });
366
+ // If user chose to continue with fallback, we don't need to stop the current prompt
367
+ if (shouldContinueWithFallback) {
368
+ // Switch to fallback model for future use
369
+ config.setModel(fallbackModel);
370
+ config.setFallbackMode(true);
371
+ logFlashFallback(config, new FlashFallbackEvent(config.getContentGeneratorConfig().authType));
372
+ return true; // Continue with current prompt using fallback model
373
+ }
374
+ // If user chose to authenticate, stop current prompt
375
+ return false;
376
+ }
377
+ // For other quota errors, automatically switch to fallback model
316
378
  // Set the flag to prevent tool continuation
317
379
  setModelSwitchedFromQuotaError(true);
318
380
  // Set global quota error flag to prevent Flash model calls
@@ -367,10 +429,11 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
367
429
  isValidPath,
368
430
  shellModeActive,
369
431
  });
370
- const [userMessages, setUserMessages] = useState([]);
432
+ // Independent input history management (unaffected by /clear)
433
+ const inputHistoryStore = useInputHistoryStore();
371
434
  // Stable reference for cancel handler to avoid circular dependency
372
435
  const cancelHandlerRef = useRef(() => { });
373
- const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, } = useGeminiStream(config.getGeminiClient(), history, addItem, config, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, () => cancelHandlerRef.current());
436
+ const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, } = useGeminiStream(config.getGeminiClient(), history, addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, () => cancelHandlerRef.current());
374
437
  const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
375
438
  // Message queue for handling input during streaming
376
439
  const { messageQueue, addMessage, clearQueue, getQueuedMessagesText } = useMessageQueue({
@@ -383,7 +446,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
383
446
  buffer.setText(''); // Just clear the prompt
384
447
  return;
385
448
  }
386
- const lastUserMessage = userMessages.at(-1);
449
+ const lastUserMessage = inputHistoryStore.inputHistory.at(-1);
387
450
  let textToSet = lastUserMessage || '';
388
451
  // Append queued messages if any exist
389
452
  const queuedText = getQueuedMessagesText();
@@ -396,15 +459,21 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
396
459
  }
397
460
  }, [
398
461
  buffer,
399
- userMessages,
462
+ inputHistoryStore.inputHistory,
400
463
  getQueuedMessagesText,
401
464
  clearQueue,
402
465
  pendingHistoryItems,
403
466
  ]);
404
467
  // Input handling - queue messages for processing
405
468
  const handleFinalSubmit = useCallback((submittedValue) => {
469
+ const trimmedValue = submittedValue.trim();
470
+ if (trimmedValue.length > 0) {
471
+ // Add to independent input history
472
+ inputHistoryStore.addInput(trimmedValue);
473
+ }
474
+ // Always add to message queue
406
475
  addMessage(submittedValue);
407
- }, [addMessage]);
476
+ }, [addMessage, inputHistoryStore]);
408
477
  const handleIdePromptComplete = useCallback((result) => {
409
478
  if (result.userSelection === 'yes') {
410
479
  if (result.isExtensionPreInstalled) {
@@ -421,7 +490,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
421
490
  setIdePromptAnswered(true);
422
491
  }, [handleSlashCommand, settings]);
423
492
  const { handleInput: vimHandleInput } = useVim(buffer, handleFinalSubmit);
424
- const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState);
493
+ const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases);
425
494
  const showAutoAcceptIndicator = useAutoAcceptIndicator({ config, addItem });
426
495
  const handleExit = useCallback((pressedOnce, setPressedOnce, timerRef) => {
427
496
  if (pressedOnce) {
@@ -516,39 +585,15 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
516
585
  }
517
586
  }, [config, config.getGeminiMdFileCount]);
518
587
  const logger = useLogger(config.storage);
588
+ // Initialize independent input history from logger
519
589
  useEffect(() => {
520
- const fetchUserMessages = async () => {
521
- const pastMessagesRaw = (await logger?.getPreviousUserMessages()) || []; // Newest first
522
- const currentSessionUserMessages = history
523
- .filter((item) => item.type === 'user' &&
524
- typeof item.text === 'string' &&
525
- item.text.trim() !== '')
526
- .map((item) => item.text)
527
- .reverse(); // Newest first, to match pastMessagesRaw sorting
528
- // Combine, with current session messages being more recent
529
- const combinedMessages = [
530
- ...currentSessionUserMessages,
531
- ...pastMessagesRaw,
532
- ];
533
- // Deduplicate consecutive identical messages from the combined list (still newest first)
534
- const deduplicatedMessages = [];
535
- if (combinedMessages.length > 0) {
536
- deduplicatedMessages.push(combinedMessages[0]); // Add the newest one unconditionally
537
- for (let i = 1; i < combinedMessages.length; i++) {
538
- if (combinedMessages[i] !== combinedMessages[i - 1]) {
539
- deduplicatedMessages.push(combinedMessages[i]);
540
- }
541
- }
542
- }
543
- // Reverse to oldest first for useInputHistory
544
- setUserMessages(deduplicatedMessages.reverse());
545
- };
546
- fetchUserMessages();
547
- }, [history, logger]);
590
+ inputHistoryStore.initializeFromLogger(logger);
591
+ }, [logger, inputHistoryStore]);
548
592
  const isInputActive = (streamingState === StreamingState.Idle ||
549
593
  streamingState === StreamingState.Responding) &&
550
594
  !initError &&
551
- !isProcessing;
595
+ !isProcessing &&
596
+ !isProQuotaDialogOpen;
552
597
  const handleClearScreen = useCallback(() => {
553
598
  clearItems();
554
599
  clearConsoleMessagesState();
@@ -635,13 +680,30 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
635
680
  const placeholder = vimModeEnabled
636
681
  ? " Press 'i' for INSERT mode and 'Esc' for NORMAL mode."
637
682
  : ' Type your message or @path/to/file';
683
+ const hideContextSummary = settings.merged.ui?.hideContextSummary ?? false;
638
684
  return (_jsx(StreamingContext.Provider, { value: streamingState, children: _jsxs(Box, { flexDirection: "column", width: "90%", children: [_jsx(Static, { items: [
639
685
  _jsxs(Box, { flexDirection: "column", children: [!(settings.merged.ui?.hideBanner || config.getScreenReader()) && _jsx(Header, { version: version, nightly: nightly }), !(settings.merged.ui?.hideTips || config.getScreenReader()) && (_jsx(Tips, { config: config }))] }, "header"),
640
686
  ...history.map((h) => (_jsx(HistoryItemDisplay, { terminalWidth: mainAreaWidth, availableTerminalHeight: staticAreaMaxItemHeight, item: h, isPending: false, config: config, commands: slashCommands }, h.id))),
641
687
  ], children: (item) => item }, staticKey), _jsx(OverflowProvider, { children: _jsxs(Box, { ref: pendingHistoryItemRef, flexDirection: "column", children: [pendingHistoryItems.map((item, i) => (_jsx(HistoryItemDisplay, { availableTerminalHeight: constrainHeight ? availableTerminalHeight : undefined, terminalWidth: mainAreaWidth,
642
688
  // TODO(taehykim): It seems like references to ids aren't necessary in
643
689
  // HistoryItemDisplay. Refactor later. Use a fake id for now.
644
- item: { ...item, id: 0 }, isPending: true, config: config, isFocused: !isEditorDialogOpen }, i))), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) }), _jsxs(Box, { flexDirection: "column", ref: mainControlsRef, children: [updateInfo && _jsx(UpdateNotification, { message: updateInfo.message }), startupWarnings.length > 0 && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentYellow, paddingX: 1, marginY: 1, flexDirection: "column", children: startupWarnings.map((warning, index) => (_jsx(Text, { color: Colors.AccentYellow, children: warning }, index))) })), showWorkspaceMigrationDialog ? (_jsx(WorkspaceMigrationDialog, { workspaceExtensions: workspaceExtensions, onOpen: onWorkspaceMigrationDialogOpen, onClose: onWorkspaceMigrationDialogClose })) : shouldShowIdePrompt && currentIDE ? (_jsx(IdeIntegrationNudge, { ide: currentIDE, onComplete: handleIdePromptComplete })) : isFolderTrustDialogOpen ? (_jsx(FolderTrustDialog, { onSelect: handleFolderTrustSelect, isRestarting: isRestarting })) : shellConfirmationRequest ? (_jsx(ShellConfirmationDialog, { request: shellConfirmationRequest })) : confirmationRequest ? (_jsxs(Box, { flexDirection: "column", children: [confirmationRequest.prompt, _jsx(Box, { paddingY: 1, children: _jsx(RadioButtonSelect, { isFocused: !!confirmationRequest, items: [
690
+ item: { ...item, id: 0 }, isPending: true, config: config, isFocused: !isEditorDialogOpen }, i))), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) }), _jsxs(Box, { flexDirection: "column", ref: mainControlsRef, children: [updateInfo && _jsx(UpdateNotification, { message: updateInfo.message }), startupWarnings.length > 0 && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentYellow, paddingX: 1, marginY: 1, flexDirection: "column", children: startupWarnings.map((warning, index) => (_jsx(Text, { color: Colors.AccentYellow, children: warning }, index))) })), showWorkspaceMigrationDialog ? (_jsx(WorkspaceMigrationDialog, { workspaceExtensions: workspaceExtensions, onOpen: onWorkspaceMigrationDialogOpen, onClose: onWorkspaceMigrationDialogClose })) : shouldShowIdePrompt && currentIDE ? (_jsx(IdeIntegrationNudge, { ide: currentIDE, onComplete: handleIdePromptComplete })) : isProQuotaDialogOpen ? (_jsx(ProQuotaDialog, { currentModel: config.getModel(), fallbackModel: DEFAULT_GEMINI_FLASH_MODEL, onChoice: (choice) => {
691
+ setIsProQuotaDialogOpen(false);
692
+ if (!proQuotaDialogResolver)
693
+ return;
694
+ const resolveValue = choice !== 'auth';
695
+ proQuotaDialogResolver(resolveValue);
696
+ setProQuotaDialogResolver(null);
697
+ if (choice === 'auth') {
698
+ openAuthDialog();
699
+ }
700
+ else {
701
+ addItem({
702
+ type: MessageType.INFO,
703
+ text: 'Switched to fallback model. Tip: Press Ctrl+P to recall your previous prompt and submit it again if you wish.',
704
+ }, Date.now());
705
+ }
706
+ } })) : showIdeRestartPrompt ? (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentYellow, paddingX: 1, children: _jsx(Text, { color: Colors.AccentYellow, children: "Workspace trust has changed. Press 'r' to restart Gemini to apply the changes." }) })) : isFolderTrustDialogOpen ? (_jsx(FolderTrustDialog, { onSelect: handleFolderTrustSelect, isRestarting: isRestarting })) : shellConfirmationRequest ? (_jsx(ShellConfirmationDialog, { request: shellConfirmationRequest })) : confirmationRequest ? (_jsxs(Box, { flexDirection: "column", children: [confirmationRequest.prompt, _jsx(Box, { paddingY: 1, children: _jsx(RadioButtonSelect, { isFocused: !!confirmationRequest, items: [
645
707
  { label: 'Yes', value: true },
646
708
  { label: 'No', value: false },
647
709
  ], onSelect: (value) => {
@@ -668,9 +730,9 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
668
730
  return (
669
731
  // Ensure the Box takes full width so truncation calculates correctly
670
732
  _jsx(Box, { paddingLeft: 2, width: "100%", children: _jsx(Text, { dimColor: true, wrap: "truncate", children: preview }) }, index));
671
- }), messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["... (+", messageQueue.length - MAX_DISPLAYED_QUEUED_MESSAGES, "more)"] }) }))] })), _jsxs(Box, { marginTop: 1, justifyContent: "space-between", width: "100%", flexDirection: isNarrow ? 'column' : 'row', alignItems: isNarrow ? 'flex-start' : 'center', children: [_jsxs(Box, { children: [process.env['GEMINI_SYSTEM_MD'] && (_jsx(Text, { color: Colors.AccentRed, children: "|\u2310\u25A0_\u25A0| " })), ctrlCPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+C again to exit." })) : ctrlDPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+D again to exit." })) : showEscapePrompt ? (_jsx(Text, { color: Colors.Gray, children: "Press Esc again to clear." })) : (_jsx(ContextSummaryDisplay, { ideContext: ideContextState, geminiMdFileCount: geminiMdFileCount, contextFileNames: contextFileNames, mcpServers: config.getMcpServers(), blockedMcpServers: config.getBlockedMcpServers(), showToolDescriptions: showToolDescriptions }))] }), _jsxs(Box, { paddingTop: isNarrow ? 1 : 0, children: [showAutoAcceptIndicator !== ApprovalMode.DEFAULT &&
672
- !shellModeActive && (_jsx(AutoAcceptIndicator, { approvalMode: showAutoAcceptIndicator })), shellModeActive && _jsx(ShellModeIndicator, {})] })] }), showErrorDetails && (_jsx(OverflowProvider, { children: _jsxs(Box, { flexDirection: "column", children: [_jsx(DetailedMessagesDisplay, { messages: filteredConsoleMessages, maxHeight: constrainHeight ? debugConsoleMaxHeight : undefined, width: inputWidth }), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) })), isInputActive && (_jsx(InputPrompt, { buffer: buffer, inputWidth: inputWidth, suggestionsWidth: suggestionsWidth, onSubmit: handleFinalSubmit, userMessages: userMessages, onClearScreen: handleClearScreen, config: config, slashCommands: slashCommands, commandContext: commandContext, shellModeActive: shellModeActive, setShellModeActive: setShellModeActive, onEscapePromptChange: handleEscapePromptChange, focus: isFocused, vimHandleInput: vimHandleInput, placeholder: placeholder }))] })), initError && streamingState !== StreamingState.Responding && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentRed, paddingX: 1, marginBottom: 1, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text ? (_jsx(Text, { color: Colors.AccentRed, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { color: Colors.AccentRed, children: ["Initialization Error: ", initError] }), _jsxs(Text, { color: Colors.AccentRed, children: [' ', "Please check API key and configuration."] })] })) })), !settings.merged.ui?.hideFooter && (_jsx(Footer, { model: currentModel, targetDir: config.getTargetDir(), debugMode: config.getDebugMode(), branchName: branchName, debugMessage: debugMessage, corgiMode: corgiMode, errorCount: errorCount, showErrorDetails: showErrorDetails, showMemoryUsage: config.getDebugMode() ||
733
+ }), messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["... (+", messageQueue.length - MAX_DISPLAYED_QUEUED_MESSAGES, "more)"] }) }))] })), _jsxs(Box, { marginTop: 1, justifyContent: hideContextSummary ? 'flex-start' : 'space-between', width: "100%", flexDirection: isNarrow ? 'column' : 'row', alignItems: isNarrow ? 'flex-start' : 'center', children: [_jsxs(Box, { children: [process.env['GEMINI_SYSTEM_MD'] && (_jsx(Text, { color: Colors.AccentRed, children: "|\u2310\u25A0_\u25A0| " })), ctrlCPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+C again to exit." })) : ctrlDPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+D again to exit." })) : showEscapePrompt ? (_jsx(Text, { color: Colors.Gray, children: "Press Esc again to clear." })) : !hideContextSummary ? (_jsx(ContextSummaryDisplay, { ideContext: ideContextState, geminiMdFileCount: geminiMdFileCount, contextFileNames: contextFileNames, mcpServers: config.getMcpServers(), blockedMcpServers: config.getBlockedMcpServers(), showToolDescriptions: showToolDescriptions })) : null] }), _jsxs(Box, { paddingTop: isNarrow ? 1 : 0, marginLeft: hideContextSummary ? 1 : 2, children: [showAutoAcceptIndicator !== ApprovalMode.DEFAULT &&
734
+ !shellModeActive && (_jsx(AutoAcceptIndicator, { approvalMode: showAutoAcceptIndicator })), shellModeActive && _jsx(ShellModeIndicator, {})] })] }), showErrorDetails && (_jsx(OverflowProvider, { children: _jsxs(Box, { flexDirection: "column", children: [_jsx(DetailedMessagesDisplay, { messages: filteredConsoleMessages, maxHeight: constrainHeight ? debugConsoleMaxHeight : undefined, width: inputWidth }), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) })), isInputActive && (_jsx(InputPrompt, { buffer: buffer, inputWidth: inputWidth, suggestionsWidth: suggestionsWidth, onSubmit: handleFinalSubmit, userMessages: inputHistoryStore.inputHistory, onClearScreen: handleClearScreen, config: config, slashCommands: slashCommands, commandContext: commandContext, shellModeActive: shellModeActive, setShellModeActive: setShellModeActive, onEscapePromptChange: handleEscapePromptChange, focus: isFocused, vimHandleInput: vimHandleInput, placeholder: placeholder }))] })), initError && streamingState !== StreamingState.Responding && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentRed, paddingX: 1, marginBottom: 1, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text ? (_jsx(Text, { color: Colors.AccentRed, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { color: Colors.AccentRed, children: ["Initialization Error: ", initError] }), _jsxs(Text, { color: Colors.AccentRed, children: [' ', "Please check API key and configuration."] })] })) })), !settings.merged.ui?.hideFooter && (_jsx(Footer, { model: currentModel, targetDir: config.getTargetDir(), debugMode: config.getDebugMode(), branchName: branchName, debugMessage: debugMessage, corgiMode: corgiMode, errorCount: errorCount, showErrorDetails: showErrorDetails, showMemoryUsage: config.getDebugMode() ||
673
735
  settings.merged.ui?.showMemoryUsage ||
674
- false, promptTokenCount: sessionStats.lastPromptTokenCount, nightly: nightly, vimMode: vimModeEnabled ? vimMode : undefined, isTrustedFolder: isTrustedFolderState }))] })] }) }));
736
+ false, promptTokenCount: sessionStats.lastPromptTokenCount, nightly: nightly, vimMode: vimModeEnabled ? vimMode : undefined, isTrustedFolder: isTrustedFolderState, hideCWD: settings.merged.ui?.footer?.hideCWD, hideSandboxStatus: settings.merged.ui?.footer?.hideSandboxStatus, hideModelInfo: settings.merged.ui?.footer?.hideModelInfo }))] })] }) }));
675
737
  };
676
738
  //# sourceMappingURL=App.js.map