@google/gemini-cli 0.1.16 → 0.1.17-nightly.250808.60362e03

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 (181) hide show
  1. package/README.md +11 -1
  2. package/dist/google-gemini-cli-0.1.17.tgz +0 -0
  3. package/dist/package.json +6 -3
  4. package/dist/src/acp/acpPeer.js +72 -64
  5. package/dist/src/acp/acpPeer.js.map +1 -1
  6. package/dist/src/commands/mcp/add.d.ts +7 -0
  7. package/dist/src/commands/mcp/add.js +155 -0
  8. package/dist/src/commands/mcp/add.js.map +1 -0
  9. package/dist/src/commands/mcp/list.d.ts +8 -0
  10. package/dist/src/commands/mcp/list.js +110 -0
  11. package/dist/src/commands/mcp/list.js.map +1 -0
  12. package/dist/src/commands/mcp/remove.d.ts +7 -0
  13. package/dist/src/commands/mcp/remove.js +44 -0
  14. package/dist/src/commands/mcp/remove.js.map +1 -0
  15. package/dist/src/commands/mcp.d.ts +7 -0
  16. package/dist/src/commands/mcp.js +23 -0
  17. package/dist/src/commands/mcp.js.map +1 -0
  18. package/dist/src/config/config.d.ts +2 -2
  19. package/dist/src/config/config.js +87 -50
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/settings.d.ts +14 -2
  22. package/dist/src/config/settings.js +73 -8
  23. package/dist/src/config/settings.js.map +1 -1
  24. package/dist/src/gemini.js +3 -27
  25. package/dist/src/gemini.js.map +1 -1
  26. package/dist/src/generated/git-commit.d.ts +1 -1
  27. package/dist/src/generated/git-commit.js +2 -2
  28. package/dist/src/generated/git-commit.js.map +1 -1
  29. package/dist/src/nonInteractiveCli.js +20 -12
  30. package/dist/src/nonInteractiveCli.js.map +1 -1
  31. package/dist/src/services/BuiltinCommandLoader.js +1 -2
  32. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  33. package/dist/src/ui/App.js +50 -19
  34. package/dist/src/ui/App.js.map +1 -1
  35. package/dist/src/ui/IdeIntegrationNudge.d.ts +13 -0
  36. package/dist/src/ui/IdeIntegrationNudge.js +31 -0
  37. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -0
  38. package/dist/src/ui/commands/directoryCommand.js +21 -1
  39. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  40. package/dist/src/ui/commands/helpCommand.js +7 -6
  41. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  42. package/dist/src/ui/commands/ideCommand.js +68 -39
  43. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  44. package/dist/src/ui/commands/mcpCommand.js +15 -20
  45. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  46. package/dist/src/ui/commands/memoryCommand.js +3 -1
  47. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  48. package/dist/src/ui/commands/setupGithubCommand.js +57 -19
  49. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  50. package/dist/src/ui/commands/types.d.ts +2 -1
  51. package/dist/src/ui/commands/types.js.map +1 -1
  52. package/dist/src/ui/components/AsciiArt.d.ts +1 -0
  53. package/dist/src/ui/components/AsciiArt.js +10 -0
  54. package/dist/src/ui/components/AsciiArt.js.map +1 -1
  55. package/dist/src/ui/components/AuthInProgress.js +3 -3
  56. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  57. package/dist/src/ui/components/ContextSummaryDisplay.js +21 -24
  58. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  59. package/dist/src/ui/components/ContextUsageDisplay.d.ts +9 -0
  60. package/dist/src/ui/components/ContextUsageDisplay.js +14 -0
  61. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
  62. package/dist/src/ui/components/Footer.js +14 -5
  63. package/dist/src/ui/components/Footer.js.map +1 -1
  64. package/dist/src/ui/components/Header.d.ts +0 -1
  65. package/dist/src/ui/components/Header.js +13 -5
  66. package/dist/src/ui/components/Header.js.map +1 -1
  67. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
  68. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  69. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  70. package/dist/src/ui/components/IDEContextDetailDisplay.js +14 -1
  71. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
  72. package/dist/src/ui/components/InputPrompt.js +77 -8
  73. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  74. package/dist/src/ui/components/LoadingIndicator.js +10 -5
  75. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  76. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  77. package/dist/src/ui/components/PrepareLabel.js +16 -0
  78. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  79. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
  80. package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
  81. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  82. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +29 -9
  83. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  84. package/dist/src/ui/hooks/atCommandProcessor.js +18 -8
  85. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  86. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  87. package/dist/src/ui/hooks/slashCommandProcessor.js +9 -5
  88. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  89. package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
  90. package/dist/src/ui/hooks/useAtCompletion.js +180 -0
  91. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
  92. package/dist/src/ui/hooks/useCommandCompletion.d.ts +29 -0
  93. package/dist/src/ui/hooks/useCommandCompletion.js +165 -0
  94. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -0
  95. package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
  96. package/dist/src/ui/hooks/useCompletion.js +7 -423
  97. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  98. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  99. package/dist/src/ui/hooks/useGeminiStream.js +3 -4
  100. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  101. package/dist/src/ui/hooks/usePhraseCycler.js +1 -5
  102. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  103. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
  104. package/dist/src/ui/hooks/useReactToolScheduler.js +15 -13
  105. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  106. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  107. package/dist/src/ui/hooks/useReverseSearchCompletion.js +56 -0
  108. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  109. package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
  110. package/dist/src/ui/hooks/useShellHistory.js +30 -7
  111. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  112. package/dist/src/ui/hooks/useSlashCompletion.d.ts +20 -0
  113. package/dist/src/ui/hooks/useSlashCompletion.js +135 -0
  114. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  115. package/dist/src/ui/hooks/vim.js +13 -4
  116. package/dist/src/ui/hooks/vim.js.map +1 -1
  117. package/dist/src/ui/semantic-colors.d.ts +7 -0
  118. package/dist/src/ui/semantic-colors.js +24 -0
  119. package/dist/src/ui/semantic-colors.js.map +1 -0
  120. package/dist/src/ui/themes/ansi-light.js +2 -1
  121. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  122. package/dist/src/ui/themes/ansi.js +2 -1
  123. package/dist/src/ui/themes/ansi.js.map +1 -1
  124. package/dist/src/ui/themes/atom-one-dark.js +2 -1
  125. package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
  126. package/dist/src/ui/themes/ayu-light.js +2 -1
  127. package/dist/src/ui/themes/ayu-light.js.map +1 -1
  128. package/dist/src/ui/themes/ayu.js +2 -1
  129. package/dist/src/ui/themes/ayu.js.map +1 -1
  130. package/dist/src/ui/themes/default-light.js +2 -1
  131. package/dist/src/ui/themes/default-light.js.map +1 -1
  132. package/dist/src/ui/themes/default.js +2 -1
  133. package/dist/src/ui/themes/default.js.map +1 -1
  134. package/dist/src/ui/themes/dracula.js +2 -1
  135. package/dist/src/ui/themes/dracula.js.map +1 -1
  136. package/dist/src/ui/themes/github-dark.js +2 -1
  137. package/dist/src/ui/themes/github-dark.js.map +1 -1
  138. package/dist/src/ui/themes/github-light.js +2 -1
  139. package/dist/src/ui/themes/github-light.js.map +1 -1
  140. package/dist/src/ui/themes/googlecode.js +2 -1
  141. package/dist/src/ui/themes/googlecode.js.map +1 -1
  142. package/dist/src/ui/themes/no-color.js +30 -1
  143. package/dist/src/ui/themes/no-color.js.map +1 -1
  144. package/dist/src/ui/themes/semantic-tokens.d.ts +37 -0
  145. package/dist/src/ui/themes/semantic-tokens.js +94 -0
  146. package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
  147. package/dist/src/ui/themes/shades-of-purple.js +2 -1
  148. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  149. package/dist/src/ui/themes/theme-manager.d.ts +6 -0
  150. package/dist/src/ui/themes/theme-manager.js +7 -0
  151. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  152. package/dist/src/ui/themes/theme.d.ts +45 -2
  153. package/dist/src/ui/themes/theme.js +92 -107
  154. package/dist/src/ui/themes/theme.js.map +1 -1
  155. package/dist/src/ui/themes/xcode.js +2 -1
  156. package/dist/src/ui/themes/xcode.js.map +1 -1
  157. package/dist/src/ui/types.d.ts +11 -2
  158. package/dist/src/ui/types.js +1 -0
  159. package/dist/src/ui/types.js.map +1 -1
  160. package/dist/src/ui/utils/ConsolePatcher.d.ts +3 -1
  161. package/dist/src/ui/utils/ConsolePatcher.js +18 -8
  162. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  163. package/dist/src/ui/utils/commandUtils.d.ts +1 -0
  164. package/dist/src/ui/utils/commandUtils.js +22 -1
  165. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  166. package/dist/src/ui/utils/isNarrowWidth.d.ts +6 -0
  167. package/dist/src/ui/utils/isNarrowWidth.js +9 -0
  168. package/dist/src/ui/utils/isNarrowWidth.js.map +1 -0
  169. package/dist/src/utils/gitUtils.d.ts +21 -1
  170. package/dist/src/utils/gitUtils.js +70 -3
  171. package/dist/src/utils/gitUtils.js.map +1 -1
  172. package/dist/src/utils/handleAutoUpdate.js +3 -0
  173. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  174. package/dist/src/utils/resolvePath.d.ts +6 -0
  175. package/dist/src/utils/resolvePath.js +21 -0
  176. package/dist/src/utils/resolvePath.js.map +1 -0
  177. package/dist/src/utils/sandbox.js +416 -405
  178. package/dist/src/utils/sandbox.js.map +1 -1
  179. package/dist/tsconfig.tsbuildinfo +1 -1
  180. package/package.json +6 -3
  181. package/dist/google-gemini-cli-0.1.15.tgz +0 -0
@@ -5,3 +5,4 @@
5
5
  */
6
6
  export declare const shortAsciiLogo = "\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\n \u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\n";
7
7
  export declare const longAsciiLogo = "\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\n \u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2591 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\n";
8
+ export declare const tinyAsciiLogo = "\n \u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \n\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588\n \u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2591\u2591 \n \u2591\u2591\u2591\u2588\u2588\u2588\u2591\u2588\u2588\u2588 \n \u2588\u2588\u2588\u2591 \u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \n \u2588\u2588\u2588\u2591 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \n\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \n";
@@ -23,4 +23,14 @@ export const longAsciiLogo = `
23
23
  ███░ ░░█████████ ██████████ █████ █████ █████ █████ ░░█████ █████
24
24
  ░░░ ░░░░░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░ ░░░░░
25
25
  `;
26
+ export const tinyAsciiLogo = `
27
+ ███ █████████
28
+ ░░░███ ███░░░░░███
29
+ ░░░███ ███ ░░░
30
+ ░░░███░███
31
+ ███░ ░███ █████
32
+ ███░ ░░███ ░░███
33
+ ███░ ░░█████████
34
+ ░░░ ░░░░░░░░░
35
+ `;
26
36
  //# sourceMappingURL=AsciiArt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsciiArt.js","sourceRoot":"","sources":["../../../../src/ui/components/AsciiArt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;CAS7B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;CAS5B,CAAC"}
1
+ {"version":3,"file":"AsciiArt.js","sourceRoot":"","sources":["../../../../src/ui/components/AsciiArt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;CAS7B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;CAS5B,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;CAS5B,CAAC"}
@@ -10,8 +10,8 @@ import Spinner from 'ink-spinner';
10
10
  import { Colors } from '../colors.js';
11
11
  export function AuthInProgress({ onTimeout, }) {
12
12
  const [timedOut, setTimedOut] = useState(false);
13
- useInput((_, key) => {
14
- if (key.escape) {
13
+ useInput((input, key) => {
14
+ if (key.escape || (key.ctrl && (input === 'c' || input === 'C'))) {
15
15
  onTimeout();
16
16
  }
17
17
  });
@@ -22,6 +22,6 @@ export function AuthInProgress({ onTimeout, }) {
22
22
  }, 180000);
23
23
  return () => clearTimeout(timer);
24
24
  }, [onTimeout]);
25
- return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", padding: 1, width: "100%", children: timedOut ? (_jsx(Text, { color: Colors.AccentRed, children: "Authentication timed out. Please try again." })) : (_jsx(Box, { children: _jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " Waiting for auth... (Press ESC to cancel)"] }) })) }));
25
+ return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "column", padding: 1, width: "100%", children: timedOut ? (_jsx(Text, { color: Colors.AccentRed, children: "Authentication timed out. Please try again." })) : (_jsx(Box, { children: _jsxs(Text, { children: [_jsx(Spinner, { type: "dots" }), " Waiting for auth... (Press ESC or CTRL+C to cancel)"] }) })) }));
26
26
  }
27
27
  //# sourceMappingURL=AuthInProgress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthInProgress.js","sourceRoot":"","sources":["../../../../src/ui/components/AuthInProgress.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAMtC,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,GACW;IACpB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS,EAAE,CAAC;QACd,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,KAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,IAAI,EACxB,aAAa,EAAC,QAAQ,EACtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,YAEX,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,4DAEtB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,cACF,MAAC,IAAI,eACH,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,kDAClB,GACH,CACP,GACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AuthInProgress.js","sourceRoot":"","sources":["../../../../src/ui/components/AuthInProgress.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAMtC,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,GACW;IACpB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YACjE,SAAS,EAAE,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,SAAS,EAAE,CAAC;QACd,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,KAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,IAAI,EACxB,aAAa,EAAC,QAAQ,EACtB,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,YAEX,QAAQ,CAAC,CAAC,CAAC,CACV,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,4DAEtB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,GAAG,cACF,MAAC,IAAI,eACH,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,4DAElB,GACH,CACP,GACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +1,11 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Text } from 'ink';
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
3
  import { Colors } from '../colors.js';
4
+ import { useTerminalSize } from '../hooks/useTerminalSize.js';
5
+ import { isNarrowWidth } from '../utils/isNarrowWidth.js';
4
6
  export const ContextSummaryDisplay = ({ geminiMdFileCount, contextFileNames, mcpServers, blockedMcpServers, showToolDescriptions, ideContext, }) => {
7
+ const { columns: terminalWidth } = useTerminalSize();
8
+ const isNarrow = isNarrowWidth(terminalWidth);
5
9
  const mcpServerCount = Object.keys(mcpServers || {}).length;
6
10
  const blockedMcpServerCount = blockedMcpServers?.length || 0;
7
11
  const openFileCount = ideContext?.workspaceState?.openFiles?.length ?? 0;
@@ -40,29 +44,22 @@ export const ContextSummaryDisplay = ({ geminiMdFileCount, contextFileNames, mcp
40
44
  }
41
45
  parts.push(blockedText);
42
46
  }
43
- return parts.join(', ');
44
- })();
45
- let summaryText = 'Using: ';
46
- const summaryParts = [];
47
- if (openFilesText) {
48
- summaryParts.push(openFilesText);
49
- }
50
- if (geminiMdText) {
51
- summaryParts.push(geminiMdText);
52
- }
53
- if (mcpText) {
54
- summaryParts.push(mcpText);
55
- }
56
- summaryText += summaryParts.join(' | ');
57
- // Add ctrl+t hint when MCP servers are available
58
- if (mcpServers && Object.keys(mcpServers).length > 0) {
59
- if (showToolDescriptions) {
60
- summaryText += ' (ctrl+t to toggle)';
61
- }
62
- else {
63
- summaryText += ' (ctrl+t to view)';
47
+ let text = parts.join(', ');
48
+ // Add ctrl+t hint when MCP servers are available
49
+ if (mcpServers && Object.keys(mcpServers).length > 0) {
50
+ if (showToolDescriptions) {
51
+ text += ' (ctrl+t to toggle)';
52
+ }
53
+ else {
54
+ text += ' (ctrl+t to view)';
55
+ }
64
56
  }
57
+ return text;
58
+ })();
59
+ const summaryParts = [openFilesText, geminiMdText, mcpText].filter(Boolean);
60
+ if (isNarrow) {
61
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: Colors.Gray, children: "Using:" }), summaryParts.map((part, index) => (_jsxs(Text, { color: Colors.Gray, children: [' ', "- ", part] }, index)))] }));
65
62
  }
66
- return _jsx(Text, { color: Colors.Gray, children: summaryText });
63
+ return (_jsx(Box, { children: _jsxs(Text, { color: Colors.Gray, children: ["Using: ", summaryParts.join(' | ')] }) }));
67
64
  };
68
65
  //# sourceMappingURL=ContextSummaryDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextSummaryDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/ContextSummaryDisplay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContextSummaryDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/ContextSummaryDisplay.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare const ContextUsageDisplay: ({ promptTokenCount, model, }: {
7
+ promptTokenCount: number;
8
+ model: string;
9
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { Text } from 'ink';
8
+ import { Colors } from '../colors.js';
9
+ import { tokenLimit } from '@google/gemini-cli-core';
10
+ export const ContextUsageDisplay = ({ promptTokenCount, model, }) => {
11
+ const percentage = promptTokenCount / tokenLimit(model);
12
+ return (_jsxs(Text, { color: Colors.Gray, children: ["(", ((1 - percentage) * 100).toFixed(0), "% context left)"] }));
13
+ };
14
+ //# sourceMappingURL=ContextUsageDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextUsageDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/ContextUsageDisplay.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,gBAAgB,EAChB,KAAK,GAIN,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAExD,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,kBACpB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,uBAChC,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -1,15 +1,24 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
- import { Colors } from '../colors.js';
4
- import { shortenPath, tildeifyPath, tokenLimit } from '@google/gemini-cli-core';
3
+ import { theme } from '../semantic-colors.js';
4
+ import { shortenPath, tildeifyPath } from '@google/gemini-cli-core';
5
5
  import { ConsoleSummaryDisplay } from './ConsoleSummaryDisplay.js';
6
6
  import process from 'node:process';
7
+ import path from 'node:path';
7
8
  import Gradient from 'ink-gradient';
8
9
  import { MemoryUsageDisplay } from './MemoryUsageDisplay.js';
10
+ import { ContextUsageDisplay } from './ContextUsageDisplay.js';
9
11
  import { DebugProfiler } from './DebugProfiler.js';
12
+ import { useTerminalSize } from '../hooks/useTerminalSize.js';
13
+ import { isNarrowWidth } from '../utils/isNarrowWidth.js';
10
14
  export const Footer = ({ model, targetDir, branchName, debugMode, debugMessage, corgiMode, errorCount, showErrorDetails, showMemoryUsage, promptTokenCount, nightly, vimMode, }) => {
11
- const limit = tokenLimit(model);
12
- const percentage = promptTokenCount / limit;
13
- return (_jsxs(Box, { justifyContent: "space-between", width: "100%", children: [_jsxs(Box, { children: [debugMode && _jsx(DebugProfiler, {}), vimMode && _jsxs(Text, { color: Colors.Gray, children: ["[", vimMode, "] "] }), nightly ? (_jsx(Gradient, { colors: Colors.GradientColors, children: _jsxs(Text, { children: [shortenPath(tildeifyPath(targetDir), 70), branchName && _jsxs(Text, { children: [" (", branchName, "*)"] })] }) })) : (_jsxs(Text, { color: Colors.LightBlue, children: [shortenPath(tildeifyPath(targetDir), 70), branchName && _jsxs(Text, { color: Colors.Gray, children: [" (", branchName, "*)"] })] })), debugMode && (_jsx(Text, { color: Colors.AccentRed, children: ' ' + (debugMessage || '--debug') }))] }), _jsx(Box, { flexGrow: 1, alignItems: "center", justifyContent: "center", display: "flex", children: process.env.SANDBOX && process.env.SANDBOX !== 'sandbox-exec' ? (_jsx(Text, { color: "green", children: process.env.SANDBOX.replace(/^gemini-(?:cli-)?/, '') })) : process.env.SANDBOX === 'sandbox-exec' ? (_jsxs(Text, { color: Colors.AccentYellow, children: ["macOS Seatbelt", ' ', _jsxs(Text, { color: Colors.Gray, children: ["(", process.env.SEATBELT_PROFILE, ")"] })] })) : (_jsxs(Text, { color: Colors.AccentRed, children: ["no sandbox ", _jsx(Text, { color: Colors.Gray, children: "(see /docs)" })] })) }), _jsxs(Box, { alignItems: "center", children: [_jsxs(Text, { color: Colors.AccentBlue, children: [' ', model, ' ', _jsxs(Text, { color: Colors.Gray, children: ["(", ((1 - percentage) * 100).toFixed(0), "% context left)"] })] }), corgiMode && (_jsxs(Text, { children: [_jsx(Text, { color: Colors.Gray, children: "| " }), _jsx(Text, { color: Colors.AccentRed, children: "\u25BC" }), _jsx(Text, { color: Colors.Foreground, children: "(\u00B4" }), _jsx(Text, { color: Colors.AccentRed, children: "\u1D25" }), _jsx(Text, { color: Colors.Foreground, children: "`)" }), _jsx(Text, { color: Colors.AccentRed, children: "\u25BC " })] })), !showErrorDetails && errorCount > 0 && (_jsxs(Box, { children: [_jsx(Text, { color: Colors.Gray, children: "| " }), _jsx(ConsoleSummaryDisplay, { errorCount: errorCount })] })), showMemoryUsage && _jsx(MemoryUsageDisplay, {})] })] }));
15
+ const { columns: terminalWidth } = useTerminalSize();
16
+ const isNarrow = isNarrowWidth(terminalWidth);
17
+ // Adjust path length based on terminal width
18
+ const pathLength = Math.max(20, Math.floor(terminalWidth * 0.4));
19
+ const displayPath = isNarrow
20
+ ? path.basename(tildeifyPath(targetDir))
21
+ : shortenPath(tildeifyPath(targetDir), pathLength);
22
+ return (_jsxs(Box, { justifyContent: "space-between", width: "100%", flexDirection: isNarrow ? 'column' : 'row', alignItems: isNarrow ? 'flex-start' : 'center', children: [_jsxs(Box, { children: [debugMode && _jsx(DebugProfiler, {}), vimMode && _jsxs(Text, { color: theme.text.secondary, children: ["[", vimMode, "] "] }), nightly ? (_jsx(Gradient, { colors: theme.ui.gradient, children: _jsxs(Text, { children: [displayPath, branchName && _jsxs(Text, { children: [" (", branchName, "*)"] })] }) })) : (_jsxs(Text, { color: theme.text.link, children: [displayPath, branchName && (_jsxs(Text, { color: theme.text.secondary, children: [" (", branchName, "*)"] }))] })), debugMode && (_jsx(Text, { color: theme.status.error, children: ' ' + (debugMessage || '--debug') }))] }), _jsx(Box, { flexGrow: isNarrow ? 0 : 1, alignItems: "center", justifyContent: isNarrow ? 'flex-start' : 'center', display: "flex", paddingX: isNarrow ? 0 : 1, paddingTop: isNarrow ? 1 : 0, children: process.env.SANDBOX && process.env.SANDBOX !== 'sandbox-exec' ? (_jsx(Text, { color: "green", children: process.env.SANDBOX.replace(/^gemini-(?:cli-)?/, '') })) : process.env.SANDBOX === 'sandbox-exec' ? (_jsxs(Text, { color: theme.status.warning, children: ["macOS Seatbelt", ' ', _jsxs(Text, { color: theme.text.secondary, children: ["(", process.env.SEATBELT_PROFILE, ")"] })] })) : (_jsxs(Text, { color: theme.status.error, children: ["no sandbox ", _jsx(Text, { color: theme.text.secondary, children: "(see /docs)" })] })) }), _jsxs(Box, { alignItems: "center", paddingTop: isNarrow ? 1 : 0, children: [_jsxs(Text, { color: theme.text.accent, children: [isNarrow ? '' : ' ', model, ' ', _jsx(ContextUsageDisplay, { promptTokenCount: promptTokenCount, model: model })] }), corgiMode && (_jsxs(Text, { children: [_jsx(Text, { color: theme.ui.symbol, children: "| " }), _jsx(Text, { color: theme.status.error, children: "\u25BC" }), _jsx(Text, { color: theme.text.primary, children: "(\u00B4" }), _jsx(Text, { color: theme.status.error, children: "\u1D25" }), _jsx(Text, { color: theme.text.primary, children: "`)" }), _jsx(Text, { color: theme.status.error, children: "\u25BC " })] })), !showErrorDetails && errorCount > 0 && (_jsxs(Box, { children: [_jsx(Text, { color: theme.ui.symbol, children: "| " }), _jsx(ConsoleSummaryDisplay, { errorCount: errorCount })] })), showMemoryUsage && _jsx(MemoryUsageDisplay, {})] })] }));
14
23
  };
15
24
  //# sourceMappingURL=Footer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../../src/ui/components/Footer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Footer.js","sourceRoot":"","sources":["../../../../src/ui/components/Footer.tsx"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@
6
6
  import React from 'react';
7
7
  interface HeaderProps {
8
8
  customAsciiArt?: string;
9
- terminalWidth: number;
10
9
  version: string;
11
10
  nightly: boolean;
12
11
  }
@@ -2,19 +2,27 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  import Gradient from 'ink-gradient';
4
4
  import { Colors } from '../colors.js';
5
- import { shortAsciiLogo, longAsciiLogo } from './AsciiArt.js';
5
+ import { shortAsciiLogo, longAsciiLogo, tinyAsciiLogo } from './AsciiArt.js';
6
6
  import { getAsciiArtWidth } from '../utils/textUtils.js';
7
- export const Header = ({ customAsciiArt, terminalWidth, version, nightly, }) => {
7
+ import { useTerminalSize } from '../hooks/useTerminalSize.js';
8
+ export const Header = ({ customAsciiArt, version, nightly, }) => {
9
+ const { columns: terminalWidth } = useTerminalSize();
8
10
  let displayTitle;
9
11
  const widthOfLongLogo = getAsciiArtWidth(longAsciiLogo);
12
+ const widthOfShortLogo = getAsciiArtWidth(shortAsciiLogo);
10
13
  if (customAsciiArt) {
11
14
  displayTitle = customAsciiArt;
12
15
  }
16
+ else if (terminalWidth >= widthOfLongLogo) {
17
+ displayTitle = longAsciiLogo;
18
+ }
19
+ else if (terminalWidth >= widthOfShortLogo) {
20
+ displayTitle = shortAsciiLogo;
21
+ }
13
22
  else {
14
- displayTitle =
15
- terminalWidth >= widthOfLongLogo ? longAsciiLogo : shortAsciiLogo;
23
+ displayTitle = tinyAsciiLogo;
16
24
  }
17
25
  const artWidth = getAsciiArtWidth(displayTitle);
18
- return (_jsxs(Box, { alignItems: "flex-start", width: artWidth, flexShrink: 0, flexDirection: "column", children: [Colors.GradientColors ? (_jsx(Gradient, { colors: Colors.GradientColors, children: _jsx(Text, { children: displayTitle }) })) : (_jsx(Text, { children: displayTitle })), nightly && (_jsx(Box, { width: "100%", flexDirection: "row", justifyContent: "flex-end", children: _jsx(Gradient, { colors: Colors.GradientColors, children: _jsxs(Text, { children: ["v", version] }) }) }))] }));
26
+ return (_jsxs(Box, { alignItems: "flex-start", width: artWidth, flexShrink: 0, flexDirection: "column", children: [Colors.GradientColors ? (_jsx(Gradient, { colors: Colors.GradientColors, children: _jsx(Text, { children: displayTitle }) })) : (_jsx(Text, { children: displayTitle })), nightly && (_jsx(Box, { width: "100%", flexDirection: "row", justifyContent: "flex-end", children: Colors.GradientColors ? (_jsx(Gradient, { colors: Colors.GradientColors, children: _jsxs(Text, { children: ["v", version] }) })) : (_jsxs(Text, { children: ["v", version] })) }))] }));
19
27
  };
20
28
  //# sourceMappingURL=Header.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/ui/components/Header.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,QAAQ,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AASzD,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAC5C,cAAc,EACd,aAAa,EACb,OAAO,EACP,OAAO,GACR,EAAE,EAAE;IACH,IAAI,YAAY,CAAC;IACjB,MAAM,eAAe,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,cAAc,EAAE,CAAC;QACnB,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,YAAY;YACV,aAAa,IAAI,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;IACtE,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEhD,OAAO,CACL,MAAC,GAAG,IACF,UAAU,EAAC,YAAY,EACvB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,CAAC,EACb,aAAa,EAAC,QAAQ,aAErB,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CACvB,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,YACrC,KAAC,IAAI,cAAE,YAAY,GAAQ,GAClB,CACZ,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,cAAE,YAAY,GAAQ,CAC5B,EACA,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,KAAK,EAAC,MAAM,EAAC,aAAa,EAAC,KAAK,EAAC,cAAc,EAAC,UAAU,YAC7D,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,YACrC,MAAC,IAAI,oBAAG,OAAO,IAAQ,GACd,GACP,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/ui/components/Header.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,QAAQ,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAQ9D,MAAM,CAAC,MAAM,MAAM,GAA0B,CAAC,EAC5C,cAAc,EACd,OAAO,EACP,OAAO,GACR,EAAE,EAAE;IACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE,CAAC;IACrD,IAAI,YAAY,CAAC;IACjB,MAAM,eAAe,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAE1D,IAAI,cAAc,EAAE,CAAC;QACnB,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;SAAM,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;QAC5C,YAAY,GAAG,aAAa,CAAC;IAC/B,CAAC;SAAM,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAAC;QAC7C,YAAY,GAAG,cAAc,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,aAAa,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEhD,OAAO,CACL,MAAC,GAAG,IACF,UAAU,EAAC,YAAY,EACvB,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,CAAC,EACb,aAAa,EAAC,QAAQ,aAErB,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CACvB,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,YACrC,KAAC,IAAI,cAAE,YAAY,GAAQ,GAClB,CACZ,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,cAAE,YAAY,GAAQ,CAC5B,EACA,OAAO,IAAI,CACV,KAAC,GAAG,IAAC,KAAK,EAAC,MAAM,EAAC,aAAa,EAAC,KAAK,EAAC,cAAc,EAAC,UAAU,YAC5D,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CACvB,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,CAAC,cAAc,YACrC,MAAC,IAAI,oBAAG,OAAO,IAAQ,GACd,CACZ,CAAC,CAAC,CAAC,CACF,MAAC,IAAI,oBAAG,OAAO,IAAQ,CACxB,GACG,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -6,6 +6,7 @@
6
6
  import React from 'react';
7
7
  import type { HistoryItem } from '../types.js';
8
8
  import { Config } from '@google/gemini-cli-core';
9
+ import { SlashCommand } from '../commands/types.js';
9
10
  interface HistoryItemDisplayProps {
10
11
  item: HistoryItem;
11
12
  availableTerminalHeight?: number;
@@ -13,6 +14,7 @@ interface HistoryItemDisplayProps {
13
14
  isPending: boolean;
14
15
  config?: Config;
15
16
  isFocused?: boolean;
17
+ commands?: readonly SlashCommand[];
16
18
  }
17
19
  export declare const HistoryItemDisplay: React.FC<HistoryItemDisplayProps>;
18
20
  export {};
@@ -13,5 +13,6 @@ import { StatsDisplay } from './StatsDisplay.js';
13
13
  import { ModelStatsDisplay } from './ModelStatsDisplay.js';
14
14
  import { ToolStatsDisplay } from './ToolStatsDisplay.js';
15
15
  import { SessionSummaryDisplay } from './SessionSummaryDisplay.js';
16
- export const HistoryItemDisplay = ({ item, availableTerminalHeight, terminalWidth, isPending, config, isFocused = true, }) => (_jsxs(Box, { flexDirection: "column", children: [item.type === 'user' && _jsx(UserMessage, { text: item.text }), item.type === 'user_shell' && _jsx(UserShellMessage, { text: item.text }), item.type === 'gemini' && (_jsx(GeminiMessage, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'gemini_content' && (_jsx(GeminiMessageContent, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'info' && _jsx(InfoMessage, { text: item.text }), item.type === 'error' && _jsx(ErrorMessage, { text: item.text }), item.type === 'about' && (_jsx(AboutBox, { cliVersion: item.cliVersion, osVersion: item.osVersion, sandboxEnv: item.sandboxEnv, modelVersion: item.modelVersion, selectedAuthType: item.selectedAuthType, gcpProject: item.gcpProject })), item.type === 'stats' && _jsx(StatsDisplay, { duration: item.duration }), item.type === 'model_stats' && _jsx(ModelStatsDisplay, {}), item.type === 'tool_stats' && _jsx(ToolStatsDisplay, {}), item.type === 'quit' && _jsx(SessionSummaryDisplay, { duration: item.duration }), item.type === 'tool_group' && (_jsx(ToolGroupMessage, { toolCalls: item.tools, groupId: item.id, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, config: config, isFocused: isFocused })), item.type === 'compression' && (_jsx(CompressionMessage, { compression: item.compression }))] }, item.id));
16
+ import { Help } from './Help.js';
17
+ export const HistoryItemDisplay = ({ item, availableTerminalHeight, terminalWidth, isPending, config, commands, isFocused = true, }) => (_jsxs(Box, { flexDirection: "column", children: [item.type === 'user' && _jsx(UserMessage, { text: item.text }), item.type === 'user_shell' && _jsx(UserShellMessage, { text: item.text }), item.type === 'gemini' && (_jsx(GeminiMessage, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'gemini_content' && (_jsx(GeminiMessageContent, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'info' && _jsx(InfoMessage, { text: item.text }), item.type === 'error' && _jsx(ErrorMessage, { text: item.text }), item.type === 'about' && (_jsx(AboutBox, { cliVersion: item.cliVersion, osVersion: item.osVersion, sandboxEnv: item.sandboxEnv, modelVersion: item.modelVersion, selectedAuthType: item.selectedAuthType, gcpProject: item.gcpProject })), item.type === 'help' && commands && _jsx(Help, { commands: commands }), item.type === 'stats' && _jsx(StatsDisplay, { duration: item.duration }), item.type === 'model_stats' && _jsx(ModelStatsDisplay, {}), item.type === 'tool_stats' && _jsx(ToolStatsDisplay, {}), item.type === 'quit' && _jsx(SessionSummaryDisplay, { duration: item.duration }), item.type === 'tool_group' && (_jsx(ToolGroupMessage, { toolCalls: item.tools, groupId: item.id, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, config: config, isFocused: isFocused })), item.type === 'compression' && (_jsx(CompressionMessage, { compression: item.compression }))] }, item.id));
17
18
  //# sourceMappingURL=HistoryItemDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAYnE,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EACpE,IAAI,EACJ,uBAAuB,EACvB,aAAa,EACb,SAAS,EACT,MAAM,EACN,SAAS,GAAG,IAAI,GACjB,EAAE,EAAE,CAAC,CACJ,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aAExB,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EACxD,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EACnE,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CACzB,KAAC,aAAa,IACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,GAC5B,CACH,EACA,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,CACjC,KAAC,oBAAoB,IACnB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,SAAS,EACpB,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,GAC5B,CACH,EACA,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EACxD,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EAC1D,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CACxB,KAAC,QAAQ,IACP,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,GAC3B,CACH,EACA,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,KAAC,YAAY,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAI,EAClE,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,KAAC,iBAAiB,KAAG,EACpD,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,KAAC,gBAAgB,KAAG,EAClD,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAC,qBAAqB,IAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAI,EAC1E,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,CAC7B,KAAC,gBAAgB,IACf,SAAS,EAAE,IAAI,CAAC,KAAK,EACrB,OAAO,EAAE,IAAI,CAAC,EAAE,EAChB,uBAAuB,EAAE,uBAAuB,EAChD,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GACpB,CACH,EACA,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,CAC9B,KAAC,kBAAkB,IAAC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAI,CACtD,KAhD8B,IAAI,CAAC,EAAE,CAiDlC,CACP,CAAC"}
1
+ {"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,19 @@ export function IDEContextDetailDisplay({ ideContext, detectedIdeDisplay, }) {
7
7
  if (!openFiles || openFiles.length === 0) {
8
8
  return null;
9
9
  }
10
- return (_jsxs(Box, { flexDirection: "column", marginTop: 1, borderStyle: "round", borderColor: Colors.AccentCyan, paddingX: 1, children: [_jsxs(Text, { color: Colors.AccentCyan, bold: true, children: [detectedIdeDisplay ? detectedIdeDisplay : 'IDE', " Context (ctrl+e to toggle)"] }), openFiles.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "Open files:" }), openFiles.map((file) => (_jsxs(Text, { children: ["- ", path.basename(file.path), file.isActive ? ' (active)' : ''] }, file.path)))] }))] }));
10
+ const basenameCounts = new Map();
11
+ for (const file of openFiles) {
12
+ const basename = path.basename(file.path);
13
+ basenameCounts.set(basename, (basenameCounts.get(basename) || 0) + 1);
14
+ }
15
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, borderStyle: "round", borderColor: Colors.AccentCyan, paddingX: 1, children: [_jsxs(Text, { color: Colors.AccentCyan, bold: true, children: [detectedIdeDisplay ? detectedIdeDisplay : 'IDE', " Context (ctrl+e to toggle)"] }), openFiles.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: "Open files:" }), openFiles.map((file) => {
16
+ const basename = path.basename(file.path);
17
+ const isDuplicate = (basenameCounts.get(basename) || 0) > 1;
18
+ const parentDir = path.basename(path.dirname(file.path));
19
+ const displayName = isDuplicate
20
+ ? `${basename} (/${parentDir})`
21
+ : basename;
22
+ return (_jsxs(Text, { children: ["- ", displayName, file.isActive ? ' (active)' : ''] }, file.path));
23
+ })] }))] }));
11
24
  }
12
25
  //# sourceMappingURL=IDEContextDetailDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IDEContextDetailDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/IDEContextDetailDisplay.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,MAAM,UAAU,uBAAuB,CAAC,EACtC,UAAU,EACV,kBAAkB,GACW;IAC7B,MAAM,SAAS,GAAG,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC;IACxD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,SAAS,EAAE,CAAC,EACZ,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,UAAU,EAC9B,QAAQ,EAAE,CAAC,aAEX,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,mBACjC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,mCAE3C,EACN,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC5B,SAAS,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE,CAAC,CAC7B,MAAC,IAAI,qBACA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAFxB,IAAI,CAAC,IAAI,CAGb,CACR,CAAC,IACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"IDEContextDetailDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/IDEContextDetailDisplay.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,MAAM,UAAU,uBAAuB,CAAC,EACtC,UAAU,EACV,kBAAkB,GACW;IAC7B,MAAM,SAAS,GAAG,UAAU,EAAE,cAAc,EAAE,SAAS,CAAC;IACxD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,SAAS,EAAE,CAAC,EACZ,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,UAAU,EAC9B,QAAQ,EAAE,CAAC,aAEX,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,mBACjC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,mCAE3C,EACN,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,IAAI,kCAAmB,EAC5B,SAAS,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,EAAE;wBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1C,MAAM,WAAW,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACzD,MAAM,WAAW,GAAG,WAAW;4BAC7B,CAAC,CAAC,GAAG,QAAQ,MAAM,SAAS,GAAG;4BAC/B,CAAC,CAAC,QAAQ,CAAC;wBAEb,OAAO,CACL,MAAC,IAAI,qBACA,WAAW,EACb,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAFxB,IAAI,CAAC,IAAI,CAGb,CACR,CAAC;oBACJ,CAAC,CAAC,IACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -6,14 +6,16 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
6
6
  */
7
7
  import { useCallback, useEffect, useState } from 'react';
8
8
  import { Box, Text } from 'ink';
9
- import { Colors } from '../colors.js';
9
+ import { theme } from '../semantic-colors.js';
10
10
  import { SuggestionsDisplay } from './SuggestionsDisplay.js';
11
11
  import { useInputHistory } from '../hooks/useInputHistory.js';
12
+ import { logicalPosToOffset } from './shared/text-buffer.js';
12
13
  import { cpSlice, cpLen } from '../utils/textUtils.js';
13
14
  import chalk from 'chalk';
14
15
  import stringWidth from 'string-width';
15
16
  import { useShellHistory } from '../hooks/useShellHistory.js';
16
- import { useCompletion } from '../hooks/useCompletion.js';
17
+ import { useReverseSearchCompletion } from '../hooks/useReverseSearchCompletion.js';
18
+ import { useCommandCompletion } from '../hooks/useCommandCompletion.js';
17
19
  import { useKeypress } from '../hooks/useKeypress.js';
18
20
  import { clipboardHasImage, saveClipboardImage, cleanupOldClipboardImages, } from '../utils/clipboardUtils.js';
19
21
  import * as path from 'path';
@@ -26,9 +28,17 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
26
28
  setDirs(dirsChanged);
27
29
  }
28
30
  }, [dirs.length, dirsChanged]);
29
- const completion = useCompletion(buffer, dirs, config.getTargetDir(), slashCommands, commandContext, config);
30
- const resetCompletionState = completion.resetCompletionState;
31
+ const [reverseSearchActive, setReverseSearchActive] = useState(false);
32
+ const [textBeforeReverseSearch, setTextBeforeReverseSearch] = useState('');
33
+ const [cursorPosition, setCursorPosition] = useState([
34
+ 0, 0,
35
+ ]);
31
36
  const shellHistory = useShellHistory(config.getProjectRoot());
37
+ const historyData = shellHistory.history;
38
+ const completion = useCommandCompletion(buffer, dirs, config.getTargetDir(), slashCommands, commandContext, reverseSearchActive, config);
39
+ const reverseSearchCompletion = useReverseSearchCompletion(buffer, historyData, reverseSearchActive);
40
+ const resetCompletionState = completion.resetCompletionState;
41
+ const resetReverseSearchCompletionState = reverseSearchCompletion.resetCompletionState;
32
42
  const handleSubmitAndClear = useCallback((submittedValue) => {
33
43
  if (shellModeActive) {
34
44
  shellHistory.addCommandToHistory(submittedValue);
@@ -38,7 +48,15 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
38
48
  buffer.setText('');
39
49
  onSubmit(submittedValue);
40
50
  resetCompletionState();
41
- }, [onSubmit, buffer, resetCompletionState, shellModeActive, shellHistory]);
51
+ resetReverseSearchCompletionState();
52
+ }, [
53
+ onSubmit,
54
+ buffer,
55
+ resetCompletionState,
56
+ shellModeActive,
57
+ shellHistory,
58
+ resetReverseSearchCompletionState,
59
+ ]);
42
60
  const customSetTextAndResetCompletionSignal = useCallback((newText) => {
43
61
  buffer.setText(newText);
44
62
  setJustNavigatedHistory(true);
@@ -55,6 +73,7 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
55
73
  useEffect(() => {
56
74
  if (justNavigatedHistory) {
57
75
  resetCompletionState();
76
+ resetReverseSearchCompletionState();
58
77
  setJustNavigatedHistory(false);
59
78
  }
60
79
  }, [
@@ -62,6 +81,7 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
62
81
  buffer.text,
63
82
  resetCompletionState,
64
83
  setJustNavigatedHistory,
84
+ resetReverseSearchCompletionState,
65
85
  ]);
66
86
  // Handle clipboard image pasting with Ctrl+V
67
87
  const handleClipboardImage = useCallback(async () => {
@@ -120,6 +140,14 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
120
140
  return;
121
141
  }
122
142
  if (key.name === 'escape') {
143
+ if (reverseSearchActive) {
144
+ setReverseSearchActive(false);
145
+ reverseSearchCompletion.resetCompletionState();
146
+ buffer.setText(textBeforeReverseSearch);
147
+ const offset = logicalPosToOffset(buffer.lines, cursorPosition[0], cursorPosition[1]);
148
+ buffer.moveToOffset(offset);
149
+ return;
150
+ }
123
151
  if (shellModeActive) {
124
152
  setShellModeActive(false);
125
153
  return;
@@ -129,10 +157,48 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
129
157
  return;
130
158
  }
131
159
  }
160
+ if (shellModeActive && key.ctrl && key.name === 'r') {
161
+ setReverseSearchActive(true);
162
+ setTextBeforeReverseSearch(buffer.text);
163
+ setCursorPosition(buffer.cursor);
164
+ return;
165
+ }
132
166
  if (key.ctrl && key.name === 'l') {
133
167
  onClearScreen();
134
168
  return;
135
169
  }
170
+ if (reverseSearchActive) {
171
+ const { activeSuggestionIndex, navigateUp, navigateDown, showSuggestions, suggestions, } = reverseSearchCompletion;
172
+ if (showSuggestions) {
173
+ if (key.name === 'up') {
174
+ navigateUp();
175
+ return;
176
+ }
177
+ if (key.name === 'down') {
178
+ navigateDown();
179
+ return;
180
+ }
181
+ if (key.name === 'tab') {
182
+ reverseSearchCompletion.handleAutocomplete(activeSuggestionIndex);
183
+ reverseSearchCompletion.resetCompletionState();
184
+ setReverseSearchActive(false);
185
+ return;
186
+ }
187
+ }
188
+ if (key.name === 'return' && !key.ctrl) {
189
+ const textToSubmit = showSuggestions && activeSuggestionIndex > -1
190
+ ? suggestions[activeSuggestionIndex].value
191
+ : buffer.text;
192
+ handleSubmitAndClear(textToSubmit);
193
+ reverseSearchCompletion.resetCompletionState();
194
+ setReverseSearchActive(false);
195
+ return;
196
+ }
197
+ // Prevent up/down from falling through to regular history navigation
198
+ if (key.name === 'up' || key.name === 'down') {
199
+ return;
200
+ }
201
+ }
136
202
  // If the command is a perfect match, pressing enter should execute it.
137
203
  if (completion.isPerfectMatch && key.name === 'return') {
138
204
  handleSubmitAndClear(buffer.text);
@@ -185,7 +251,6 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
185
251
  }
186
252
  }
187
253
  else {
188
- // Shell History Navigation
189
254
  if (key.name === 'up') {
190
255
  const prevCommand = shellHistory.getPreviousCommand();
191
256
  if (prevCommand !== null)
@@ -270,15 +335,19 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
270
335
  inputHistory,
271
336
  handleSubmitAndClear,
272
337
  shellHistory,
338
+ reverseSearchCompletion,
273
339
  handleClipboardImage,
274
340
  resetCompletionState,
275
341
  vimHandleInput,
342
+ reverseSearchActive,
343
+ textBeforeReverseSearch,
344
+ cursorPosition,
276
345
  ]);
277
346
  useKeypress(handleInput, { isActive: true });
278
347
  const linesToRender = buffer.viewportVisualLines;
279
348
  const [cursorVisualRowAbsolute, cursorVisualColAbsolute] = buffer.visualCursor;
280
349
  const scrollVisualRow = buffer.visualScrollRow;
281
- return (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: shellModeActive ? Colors.AccentYellow : Colors.AccentBlue, paddingX: 1, children: [_jsx(Text, { color: shellModeActive ? Colors.AccentYellow : Colors.AccentPurple, children: shellModeActive ? '! ' : '> ' }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: buffer.text.length === 0 && placeholder ? (focus ? (_jsxs(Text, { children: [chalk.inverse(placeholder.slice(0, 1)), _jsx(Text, { color: Colors.Gray, children: placeholder.slice(1) })] })) : (_jsx(Text, { color: Colors.Gray, children: placeholder }))) : (linesToRender.map((lineText, visualIdxInRenderedSet) => {
350
+ return (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: shellModeActive ? theme.status.warning : theme.border.focused, paddingX: 1, children: [_jsx(Text, { color: shellModeActive ? theme.status.warning : theme.text.accent, children: shellModeActive ? (reverseSearchActive ? (_jsx(Text, { color: theme.text.link, children: "(r:) " })) : ('! ')) : ('> ') }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: buffer.text.length === 0 && placeholder ? (focus ? (_jsxs(Text, { children: [chalk.inverse(placeholder.slice(0, 1)), _jsx(Text, { color: theme.text.secondary, children: placeholder.slice(1) })] })) : (_jsx(Text, { color: theme.text.secondary, children: placeholder }))) : (linesToRender.map((lineText, visualIdxInRenderedSet) => {
282
351
  const cursorVisualRow = cursorVisualRowAbsolute - scrollVisualRow;
283
352
  let display = cpSlice(lineText, 0, inputWidth);
284
353
  const currentVisualWidth = stringWidth(display);
@@ -303,6 +372,6 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
303
372
  }
304
373
  }
305
374
  return (_jsx(Text, { children: display }, `line-${visualIdxInRenderedSet}`));
306
- })) })] }), completion.showSuggestions && (_jsx(Box, { children: _jsx(SuggestionsDisplay, { suggestions: completion.suggestions, activeIndex: completion.activeSuggestionIndex, isLoading: completion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: completion.visibleStartIndex, userInput: buffer.text }) }))] }));
375
+ })) })] }), completion.showSuggestions && (_jsx(Box, { paddingRight: 2, children: _jsx(SuggestionsDisplay, { suggestions: completion.suggestions, activeIndex: completion.activeSuggestionIndex, isLoading: completion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: completion.visibleStartIndex, userInput: buffer.text }) })), reverseSearchActive && (_jsx(Box, { paddingRight: 2, children: _jsx(SuggestionsDisplay, { suggestions: reverseSearchCompletion.suggestions, activeIndex: reverseSearchCompletion.activeSuggestionIndex, isLoading: reverseSearchCompletion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: reverseSearchCompletion.visibleStartIndex, userInput: buffer.text }) }))] }));
307
376
  };
308
377
  //# sourceMappingURL=InputPrompt.js.map