@google/gemini-cli 0.1.10-dev.15 → 0.1.11-nightly.250713.4442e893

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 (170) hide show
  1. package/README.md +16 -2
  2. package/dist/google-gemini-cli-0.1.11.tgz +0 -0
  3. package/dist/package.json +7 -8
  4. package/dist/src/config/auth.js +6 -5
  5. package/dist/src/config/auth.js.map +1 -1
  6. package/dist/src/config/config.d.ts +23 -2
  7. package/dist/src/config/config.js +78 -54
  8. package/dist/src/config/config.js.map +1 -1
  9. package/dist/src/config/extension.d.ts +1 -0
  10. package/dist/src/config/extension.js +34 -6
  11. package/dist/src/config/extension.js.map +1 -1
  12. package/dist/src/config/sandboxConfig.d.ts +1 -1
  13. package/dist/src/config/sandboxConfig.js +1 -1
  14. package/dist/src/config/sandboxConfig.js.map +1 -1
  15. package/dist/src/config/settings.d.ts +8 -2
  16. package/dist/src/config/settings.js +101 -3
  17. package/dist/src/config/settings.js.map +1 -1
  18. package/dist/src/gemini.js +53 -29
  19. package/dist/src/gemini.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +1 -1
  21. package/dist/src/generated/git-commit.js +1 -1
  22. package/dist/src/nonInteractiveCli.d.ts +1 -1
  23. package/dist/src/nonInteractiveCli.js +12 -3
  24. package/dist/src/nonInteractiveCli.js.map +1 -1
  25. package/dist/src/services/CommandService.d.ts +13 -0
  26. package/dist/src/services/CommandService.js +32 -0
  27. package/dist/src/services/CommandService.js.map +1 -0
  28. package/dist/src/ui/App.d.ts +1 -0
  29. package/dist/src/ui/App.js +138 -26
  30. package/dist/src/ui/App.js.map +1 -1
  31. package/dist/src/ui/commands/clearCommand.d.ts +7 -0
  32. package/dist/src/ui/commands/clearCommand.js +15 -0
  33. package/dist/src/ui/commands/clearCommand.js.map +1 -0
  34. package/dist/src/ui/commands/helpCommand.d.ts +7 -0
  35. package/dist/src/ui/commands/helpCommand.js +18 -0
  36. package/dist/src/ui/commands/helpCommand.js.map +1 -0
  37. package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
  38. package/dist/src/ui/commands/memoryCommand.js +81 -0
  39. package/dist/src/ui/commands/memoryCommand.js.map +1 -0
  40. package/dist/src/ui/commands/themeCommand.d.ts +7 -0
  41. package/dist/src/ui/commands/themeCommand.js +14 -0
  42. package/dist/src/ui/commands/themeCommand.js.map +1 -0
  43. package/dist/src/ui/commands/types.d.ts +63 -0
  44. package/dist/src/{gemini.test.d.ts → ui/commands/types.js} +1 -0
  45. package/dist/src/ui/commands/types.js.map +1 -0
  46. package/dist/src/ui/components/AuthDialog.js +36 -8
  47. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  48. package/dist/src/ui/components/Footer.d.ts +1 -0
  49. package/dist/src/ui/components/Footer.js +3 -2
  50. package/dist/src/ui/components/Footer.js.map +1 -1
  51. package/dist/src/ui/components/Header.d.ts +2 -0
  52. package/dist/src/ui/components/Header.js +3 -3
  53. package/dist/src/ui/components/Header.js.map +1 -1
  54. package/dist/src/ui/components/Help.d.ts +1 -1
  55. package/dist/src/ui/components/Help.js +3 -2
  56. package/dist/src/ui/components/Help.js.map +1 -1
  57. package/dist/src/ui/components/InputPrompt.d.ts +2 -1
  58. package/dist/src/ui/components/InputPrompt.js +153 -155
  59. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  60. package/dist/src/ui/components/LoadingIndicator.js +2 -1
  61. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  62. package/dist/src/ui/components/ThemeDialog.js +18 -17
  63. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  64. package/dist/src/ui/components/messages/CompressionMessage.js +1 -1
  65. package/dist/src/ui/components/shared/MaxSizedBox.js +1 -1
  66. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  67. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +10 -7
  68. package/dist/src/ui/components/shared/RadioButtonSelect.js +57 -40
  69. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  70. package/dist/src/ui/components/shared/text-buffer.d.ts +2 -1
  71. package/dist/src/ui/components/shared/text-buffer.js +3 -3
  72. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  73. package/dist/src/ui/contexts/SessionContext.d.ts +4 -1
  74. package/dist/src/ui/contexts/SessionContext.js +12 -2
  75. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  76. package/dist/src/ui/hooks/atCommandProcessor.js +5 -7
  77. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  78. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -10
  79. package/dist/src/ui/hooks/slashCommandProcessor.js +221 -129
  80. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  81. package/dist/src/ui/hooks/useAuthCommand.js +12 -2
  82. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  83. package/dist/src/ui/hooks/useCompletion.d.ts +2 -2
  84. package/dist/src/ui/hooks/useCompletion.js +106 -56
  85. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  86. package/dist/src/ui/hooks/useGeminiStream.d.ts +3 -3
  87. package/dist/src/ui/hooks/useGeminiStream.js +54 -28
  88. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  89. package/dist/src/ui/hooks/useKeypress.js +74 -4
  90. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  91. package/dist/src/ui/types.d.ts +10 -0
  92. package/dist/src/ui/utils/ConsolePatcher.d.ts +23 -0
  93. package/dist/src/ui/utils/ConsolePatcher.js +42 -0
  94. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -0
  95. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
  96. package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
  97. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
  98. package/dist/src/ui/utils/MarkdownDisplay.js +30 -101
  99. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  100. package/dist/src/ui/utils/TableRenderer.js +50 -32
  101. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  102. package/dist/src/ui/utils/clipboardUtils.d.ts +22 -0
  103. package/dist/src/ui/utils/clipboardUtils.js +127 -0
  104. package/dist/src/ui/utils/clipboardUtils.js.map +1 -0
  105. package/dist/src/ui/utils/errorParsing.d.ts +2 -10
  106. package/dist/src/ui/utils/errorParsing.js +34 -23
  107. package/dist/src/ui/utils/errorParsing.js.map +1 -1
  108. package/dist/src/utils/cleanup.d.ts +2 -0
  109. package/dist/src/utils/cleanup.js +15 -0
  110. package/dist/src/utils/cleanup.js.map +1 -1
  111. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
  112. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
  113. package/dist/src/utils/userStartupWarnings.d.ts +6 -0
  114. package/dist/src/utils/userStartupWarnings.js +33 -0
  115. package/dist/src/utils/userStartupWarnings.js.map +1 -0
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/package.json +8 -9
  118. package/dist/src/gemini.test.js +0 -122
  119. package/dist/src/gemini.test.js.map +0 -1
  120. package/dist/src/ui/App.test.d.ts +0 -6
  121. package/dist/src/ui/App.test.js +0 -299
  122. package/dist/src/ui/App.test.js.map +0 -1
  123. package/dist/src/ui/components/AuthDialog.test.d.ts +0 -6
  124. package/dist/src/ui/components/AuthDialog.test.js +0 -69
  125. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  126. package/dist/src/ui/components/ConsolePatcher.d.ts +0 -12
  127. package/dist/src/ui/components/ConsolePatcher.js +0 -40
  128. package/dist/src/ui/components/ConsolePatcher.js.map +0 -1
  129. package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +0 -6
  130. package/dist/src/ui/components/HistoryItemDisplay.test.js +0 -81
  131. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +0 -1
  132. package/dist/src/ui/components/InputPrompt.test.d.ts +0 -6
  133. package/dist/src/ui/components/InputPrompt.test.js +0 -154
  134. package/dist/src/ui/components/InputPrompt.test.js.map +0 -1
  135. package/dist/src/ui/components/LoadingIndicator.test.d.ts +0 -6
  136. package/dist/src/ui/components/LoadingIndicator.test.js +0 -141
  137. package/dist/src/ui/components/LoadingIndicator.test.js.map +0 -1
  138. package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +0 -6
  139. package/dist/src/ui/components/ModelStatsDisplay.test.js +0 -217
  140. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +0 -1
  141. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +0 -6
  142. package/dist/src/ui/components/SessionSummaryDisplay.test.js +0 -60
  143. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +0 -1
  144. package/dist/src/ui/components/StatsDisplay.test.d.ts +0 -6
  145. package/dist/src/ui/components/StatsDisplay.test.js +0 -275
  146. package/dist/src/ui/components/StatsDisplay.test.js.map +0 -1
  147. package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +0 -6
  148. package/dist/src/ui/components/ToolStatsDisplay.test.js +0 -160
  149. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +0 -1
  150. package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +0 -6
  151. package/dist/src/ui/components/messages/DiffRenderer.test.js +0 -239
  152. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +0 -1
  153. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +0 -6
  154. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -37
  155. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +0 -1
  156. package/dist/src/ui/components/messages/ToolMessage.test.d.ts +0 -6
  157. package/dist/src/ui/components/messages/ToolMessage.test.js +0 -116
  158. package/dist/src/ui/components/messages/ToolMessage.test.js.map +0 -1
  159. package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +0 -6
  160. package/dist/src/ui/components/shared/MaxSizedBox.test.js +0 -134
  161. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +0 -1
  162. package/dist/src/ui/contexts/SessionContext.test.d.ts +0 -6
  163. package/dist/src/ui/contexts/SessionContext.test.js +0 -96
  164. package/dist/src/ui/contexts/SessionContext.test.js.map +0 -1
  165. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +0 -6
  166. package/dist/src/ui/hooks/useGeminiStream.test.js +0 -775
  167. package/dist/src/ui/hooks/useGeminiStream.test.js.map +0 -1
  168. package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +0 -6
  169. package/dist/src/ui/utils/MarkdownDisplay.test.js +0 -176
  170. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +0 -1
@@ -9,15 +9,10 @@ import { Text, Box } from 'ink';
9
9
  import { Colors } from '../colors.js';
10
10
  import { colorizeCode } from './CodeColorizer.js';
11
11
  import { TableRenderer } from './TableRenderer.js';
12
+ import { RenderInline } from './InlineMarkdownRenderer.js';
12
13
  // Constants for Markdown parsing and rendering
13
- const BOLD_MARKER_LENGTH = 2; // For "**"
14
- const ITALIC_MARKER_LENGTH = 1; // For "*" or "_"
15
- const STRIKETHROUGH_MARKER_LENGTH = 2; // For "~~"
16
- const INLINE_CODE_MARKER_LENGTH = 1; // For "`"
17
- const UNDERLINE_TAG_START_LENGTH = 3; // For "<u>"
18
- const UNDERLINE_TAG_END_LENGTH = 4; // For "</u>"
19
14
  const EMPTY_LINE_HEIGHT = 1;
20
- const CODE_BLOCK_PADDING = 1;
15
+ const CODE_BLOCK_PREFIX_PADDING = 1;
21
16
  const LIST_ITEM_PREFIX_PADDING = 1;
22
17
  const LIST_ITEM_TEXT_FLEX_GROW = 1;
23
18
  const MarkdownDisplayInternal = ({ text, isPending, availableTerminalHeight, terminalWidth, }) => {
@@ -33,12 +28,19 @@ const MarkdownDisplayInternal = ({ text, isPending, availableTerminalHeight, ter
33
28
  const tableSeparatorRegex = /^\s*\|?\s*(:?-+:?)\s*(\|\s*(:?-+:?)\s*)+\|?\s*$/;
34
29
  const contentBlocks = [];
35
30
  let inCodeBlock = false;
31
+ let lastLineEmpty = true;
36
32
  let codeBlockContent = [];
37
33
  let codeBlockLang = null;
38
34
  let codeBlockFence = '';
39
35
  let inTable = false;
40
36
  let tableRows = [];
41
37
  let tableHeaders = [];
38
+ function addContentBlock(block) {
39
+ if (block) {
40
+ contentBlocks.push(block);
41
+ lastLineEmpty = false;
42
+ }
43
+ }
42
44
  lines.forEach((line, index) => {
43
45
  const key = `line-${index}`;
44
46
  if (inCodeBlock) {
@@ -46,7 +48,7 @@ const MarkdownDisplayInternal = ({ text, isPending, availableTerminalHeight, ter
46
48
  if (fenceMatch &&
47
49
  fenceMatch[1].startsWith(codeBlockFence[0]) &&
48
50
  fenceMatch[1].length >= codeBlockFence.length) {
49
- contentBlocks.push(_jsx(RenderCodeBlock, { content: codeBlockContent, lang: codeBlockLang, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }, key));
51
+ addContentBlock(_jsx(RenderCodeBlock, { content: codeBlockContent, lang: codeBlockLang, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }, key));
50
52
  inCodeBlock = false;
51
53
  codeBlockContent = [];
52
54
  codeBlockLang = null;
@@ -79,7 +81,7 @@ const MarkdownDisplayInternal = ({ text, isPending, availableTerminalHeight, ter
79
81
  }
80
82
  else {
81
83
  // Not a table, treat as regular text
82
- contentBlocks.push(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
84
+ addContentBlock(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
83
85
  }
84
86
  }
85
87
  else if (inTable && tableSeparatorMatch) {
@@ -100,18 +102,18 @@ const MarkdownDisplayInternal = ({ text, isPending, availableTerminalHeight, ter
100
102
  else if (inTable && !tableRowMatch) {
101
103
  // End of table
102
104
  if (tableHeaders.length > 0 && tableRows.length > 0) {
103
- contentBlocks.push(_jsx(RenderTable, { headers: tableHeaders, rows: tableRows, terminalWidth: terminalWidth }, `table-${contentBlocks.length}`));
105
+ addContentBlock(_jsx(RenderTable, { headers: tableHeaders, rows: tableRows, terminalWidth: terminalWidth }, `table-${contentBlocks.length}`));
104
106
  }
105
107
  inTable = false;
106
108
  tableRows = [];
107
109
  tableHeaders = [];
108
110
  // Process current line as normal
109
111
  if (line.trim().length > 0) {
110
- contentBlocks.push(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
112
+ addContentBlock(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
111
113
  }
112
114
  }
113
115
  else if (hrMatch) {
114
- contentBlocks.push(_jsx(Box, { children: _jsx(Text, { dimColor: true, children: "---" }) }, key));
116
+ addContentBlock(_jsx(Box, { children: _jsx(Text, { dimColor: true, children: "---" }) }, key));
115
117
  }
116
118
  else if (headerMatch) {
117
119
  const level = headerMatch[1].length;
@@ -135,132 +137,59 @@ const MarkdownDisplayInternal = ({ text, isPending, availableTerminalHeight, ter
135
137
  break;
136
138
  }
137
139
  if (headerNode)
138
- contentBlocks.push(_jsx(Box, { children: headerNode }, key));
140
+ addContentBlock(_jsx(Box, { children: headerNode }, key));
139
141
  }
140
142
  else if (ulMatch) {
141
143
  const leadingWhitespace = ulMatch[1];
142
144
  const marker = ulMatch[2];
143
145
  const itemText = ulMatch[3];
144
- contentBlocks.push(_jsx(RenderListItem, { itemText: itemText, type: "ul", marker: marker, leadingWhitespace: leadingWhitespace }, key));
146
+ addContentBlock(_jsx(RenderListItem, { itemText: itemText, type: "ul", marker: marker, leadingWhitespace: leadingWhitespace }, key));
145
147
  }
146
148
  else if (olMatch) {
147
149
  const leadingWhitespace = olMatch[1];
148
150
  const marker = olMatch[2];
149
151
  const itemText = olMatch[3];
150
- contentBlocks.push(_jsx(RenderListItem, { itemText: itemText, type: "ol", marker: marker, leadingWhitespace: leadingWhitespace }, key));
152
+ addContentBlock(_jsx(RenderListItem, { itemText: itemText, type: "ol", marker: marker, leadingWhitespace: leadingWhitespace }, key));
151
153
  }
152
154
  else {
153
- if (line.trim().length === 0) {
154
- if (contentBlocks.length > 0 && !inCodeBlock) {
155
- contentBlocks.push(_jsx(Box, { height: EMPTY_LINE_HEIGHT }, key));
155
+ if (line.trim().length === 0 && !inCodeBlock) {
156
+ if (!lastLineEmpty) {
157
+ contentBlocks.push(_jsx(Box, { height: EMPTY_LINE_HEIGHT }, `spacer-${index}`));
158
+ lastLineEmpty = true;
156
159
  }
157
160
  }
158
161
  else {
159
- contentBlocks.push(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
162
+ addContentBlock(_jsx(Box, { children: _jsx(Text, { wrap: "wrap", children: _jsx(RenderInline, { text: line }) }) }, key));
160
163
  }
161
164
  }
162
165
  });
163
166
  if (inCodeBlock) {
164
- contentBlocks.push(_jsx(RenderCodeBlock, { content: codeBlockContent, lang: codeBlockLang, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }, "line-eof"));
167
+ addContentBlock(_jsx(RenderCodeBlock, { content: codeBlockContent, lang: codeBlockLang, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth }, "line-eof"));
165
168
  }
166
169
  // Handle table at end of content
167
170
  if (inTable && tableHeaders.length > 0 && tableRows.length > 0) {
168
- contentBlocks.push(_jsx(RenderTable, { headers: tableHeaders, rows: tableRows, terminalWidth: terminalWidth }, `table-${contentBlocks.length}`));
171
+ addContentBlock(_jsx(RenderTable, { headers: tableHeaders, rows: tableRows, terminalWidth: terminalWidth }, `table-${contentBlocks.length}`));
169
172
  }
170
173
  return _jsx(_Fragment, { children: contentBlocks });
171
174
  };
172
- const RenderInlineInternal = ({ text }) => {
173
- const nodes = [];
174
- let lastIndex = 0;
175
- const inlineRegex = /(\*\*.*?\*\*|\*.*?\*|_.*?_|~~.*?~~|\[.*?\]\(.*?\)|`+.+?`+|<u>.*?<\/u>)/g;
176
- let match;
177
- while ((match = inlineRegex.exec(text)) !== null) {
178
- if (match.index > lastIndex) {
179
- nodes.push(_jsx(Text, { children: text.slice(lastIndex, match.index) }, `t-${lastIndex}`));
180
- }
181
- const fullMatch = match[0];
182
- let renderedNode = null;
183
- const key = `m-${match.index}`;
184
- try {
185
- if (fullMatch.startsWith('**') &&
186
- fullMatch.endsWith('**') &&
187
- fullMatch.length > BOLD_MARKER_LENGTH * 2) {
188
- renderedNode = (_jsx(Text, { bold: true, children: fullMatch.slice(BOLD_MARKER_LENGTH, -BOLD_MARKER_LENGTH) }, key));
189
- }
190
- else if (fullMatch.length > ITALIC_MARKER_LENGTH * 2 &&
191
- ((fullMatch.startsWith('*') && fullMatch.endsWith('*')) ||
192
- (fullMatch.startsWith('_') && fullMatch.endsWith('_'))) &&
193
- !/\w/.test(text.substring(match.index - 1, match.index)) &&
194
- !/\w/.test(text.substring(inlineRegex.lastIndex, inlineRegex.lastIndex + 1)) &&
195
- !/\S[./\\]/.test(text.substring(match.index - 2, match.index)) &&
196
- !/[./\\]\S/.test(text.substring(inlineRegex.lastIndex, inlineRegex.lastIndex + 2))) {
197
- renderedNode = (_jsx(Text, { italic: true, children: fullMatch.slice(ITALIC_MARKER_LENGTH, -ITALIC_MARKER_LENGTH) }, key));
198
- }
199
- else if (fullMatch.startsWith('~~') &&
200
- fullMatch.endsWith('~~') &&
201
- fullMatch.length > STRIKETHROUGH_MARKER_LENGTH * 2) {
202
- renderedNode = (_jsx(Text, { strikethrough: true, children: fullMatch.slice(STRIKETHROUGH_MARKER_LENGTH, -STRIKETHROUGH_MARKER_LENGTH) }, key));
203
- }
204
- else if (fullMatch.startsWith('`') &&
205
- fullMatch.endsWith('`') &&
206
- fullMatch.length > INLINE_CODE_MARKER_LENGTH) {
207
- const codeMatch = fullMatch.match(/^(`+)(.+?)\1$/s);
208
- if (codeMatch && codeMatch[2]) {
209
- renderedNode = (_jsx(Text, { color: Colors.AccentPurple, children: codeMatch[2] }, key));
210
- }
211
- else {
212
- renderedNode = (_jsx(Text, { color: Colors.AccentPurple, children: fullMatch.slice(INLINE_CODE_MARKER_LENGTH, -INLINE_CODE_MARKER_LENGTH) }, key));
213
- }
214
- }
215
- else if (fullMatch.startsWith('[') &&
216
- fullMatch.includes('](') &&
217
- fullMatch.endsWith(')')) {
218
- const linkMatch = fullMatch.match(/\[(.*?)\]\((.*?)\)/);
219
- if (linkMatch) {
220
- const linkText = linkMatch[1];
221
- const url = linkMatch[2];
222
- renderedNode = (_jsxs(Text, { children: [linkText, _jsxs(Text, { color: Colors.AccentBlue, children: [" (", url, ")"] })] }, key));
223
- }
224
- }
225
- else if (fullMatch.startsWith('<u>') &&
226
- fullMatch.endsWith('</u>') &&
227
- fullMatch.length >
228
- UNDERLINE_TAG_START_LENGTH + UNDERLINE_TAG_END_LENGTH - 1 // -1 because length is compared to combined length of start and end tags
229
- ) {
230
- renderedNode = (_jsx(Text, { underline: true, children: fullMatch.slice(UNDERLINE_TAG_START_LENGTH, -UNDERLINE_TAG_END_LENGTH) }, key));
231
- }
232
- }
233
- catch (e) {
234
- console.error('Error parsing inline markdown part:', fullMatch, e);
235
- renderedNode = null;
236
- }
237
- nodes.push(renderedNode ?? _jsx(Text, { children: fullMatch }, key));
238
- lastIndex = inlineRegex.lastIndex;
239
- }
240
- if (lastIndex < text.length) {
241
- nodes.push(_jsx(Text, { children: text.slice(lastIndex) }, `t-${lastIndex}`));
242
- }
243
- return _jsx(_Fragment, { children: nodes.filter((node) => node !== null) });
244
- };
245
- const RenderInline = React.memo(RenderInlineInternal);
246
175
  const RenderCodeBlockInternal = ({ content, lang, isPending, availableTerminalHeight, terminalWidth, }) => {
247
176
  const MIN_LINES_FOR_MESSAGE = 1; // Minimum lines to show before the "generating more" message
248
177
  const RESERVED_LINES = 2; // Lines reserved for the message itself and potential padding
249
178
  if (isPending && availableTerminalHeight !== undefined) {
250
- const MAX_CODE_LINES_WHEN_PENDING = Math.max(0, availableTerminalHeight - CODE_BLOCK_PADDING * 2 - RESERVED_LINES);
179
+ const MAX_CODE_LINES_WHEN_PENDING = Math.max(0, availableTerminalHeight - RESERVED_LINES);
251
180
  if (content.length > MAX_CODE_LINES_WHEN_PENDING) {
252
181
  if (MAX_CODE_LINES_WHEN_PENDING < MIN_LINES_FOR_MESSAGE) {
253
182
  // Not enough space to even show the message meaningfully
254
- return (_jsx(Box, { padding: CODE_BLOCK_PADDING, children: _jsx(Text, { color: Colors.Gray, children: "... code is being written ..." }) }));
183
+ return (_jsx(Box, { paddingLeft: CODE_BLOCK_PREFIX_PADDING, children: _jsx(Text, { color: Colors.Gray, children: "... code is being written ..." }) }));
255
184
  }
256
185
  const truncatedContent = content.slice(0, MAX_CODE_LINES_WHEN_PENDING);
257
- const colorizedTruncatedCode = colorizeCode(truncatedContent.join('\n'), lang, availableTerminalHeight, terminalWidth - CODE_BLOCK_PADDING * 2);
258
- return (_jsxs(Box, { flexDirection: "column", padding: CODE_BLOCK_PADDING, children: [colorizedTruncatedCode, _jsx(Text, { color: Colors.Gray, children: "... generating more ..." })] }));
186
+ const colorizedTruncatedCode = colorizeCode(truncatedContent.join('\n'), lang, availableTerminalHeight, terminalWidth - CODE_BLOCK_PREFIX_PADDING);
187
+ return (_jsxs(Box, { paddingLeft: CODE_BLOCK_PREFIX_PADDING, flexDirection: "column", children: [colorizedTruncatedCode, _jsx(Text, { color: Colors.Gray, children: "... generating more ..." })] }));
259
188
  }
260
189
  }
261
190
  const fullContent = content.join('\n');
262
- const colorizedCode = colorizeCode(fullContent, lang, availableTerminalHeight, terminalWidth - CODE_BLOCK_PADDING * 2);
263
- return (_jsx(Box, { flexDirection: "column", padding: CODE_BLOCK_PADDING, width: terminalWidth, flexShrink: 0, children: colorizedCode }));
191
+ const colorizedCode = colorizeCode(fullContent, lang, availableTerminalHeight, terminalWidth - CODE_BLOCK_PREFIX_PADDING);
192
+ return (_jsx(Box, { paddingLeft: CODE_BLOCK_PREFIX_PADDING, flexDirection: "column", width: terminalWidth, flexShrink: 0, children: colorizedCode }));
264
193
  };
265
194
  const RenderCodeBlock = React.memo(RenderCodeBlockInternal);
266
195
  const RenderListItemInternal = ({ itemText, type, marker, leadingWhitespace = '', }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownDisplay.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarkdownDisplay.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.tsx"],"names":[],"mappings":"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"}
@@ -7,60 +7,78 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  import React from 'react';
8
8
  import { Text, Box } from 'ink';
9
9
  import { Colors } from '../colors.js';
10
+ import { RenderInline, getPlainTextLength } from './InlineMarkdownRenderer.js';
10
11
  /**
11
12
  * Custom table renderer for markdown tables
12
13
  * We implement our own instead of using ink-table due to module compatibility issues
13
14
  */
14
15
  export const TableRenderer = ({ headers, rows, terminalWidth, }) => {
15
- // Calculate column widths
16
+ // Calculate column widths using actual display width after markdown processing
16
17
  const columnWidths = headers.map((header, index) => {
17
- const headerWidth = header.length;
18
- const maxRowWidth = Math.max(...rows.map((row) => (row[index] || '').length));
18
+ const headerWidth = getPlainTextLength(header);
19
+ const maxRowWidth = Math.max(...rows.map((row) => getPlainTextLength(row[index] || '')));
19
20
  return Math.max(headerWidth, maxRowWidth) + 2; // Add padding
20
21
  });
21
22
  // Ensure table fits within terminal width
22
23
  const totalWidth = columnWidths.reduce((sum, width) => sum + width + 1, 1);
23
24
  const scaleFactor = totalWidth > terminalWidth ? terminalWidth / totalWidth : 1;
24
25
  const adjustedWidths = columnWidths.map((width) => Math.floor(width * scaleFactor));
26
+ // Helper function to render a cell with proper width
25
27
  const renderCell = (content, width, isHeader = false) => {
26
- // The actual space for content inside the padding
27
28
  const contentWidth = Math.max(0, width - 2);
29
+ const displayWidth = getPlainTextLength(content);
28
30
  let cellContent = content;
29
- if (content.length > contentWidth) {
31
+ if (displayWidth > contentWidth) {
30
32
  if (contentWidth <= 3) {
31
- // Not enough space for '...'
32
- cellContent = content.substring(0, contentWidth);
33
+ // Just truncate by character count
34
+ cellContent = content.substring(0, Math.min(content.length, contentWidth));
33
35
  }
34
36
  else {
35
- cellContent = content.substring(0, contentWidth - 3) + '...';
37
+ // Truncate preserving markdown formatting using binary search
38
+ let left = 0;
39
+ let right = content.length;
40
+ let bestTruncated = content;
41
+ // Binary search to find the optimal truncation point
42
+ while (left <= right) {
43
+ const mid = Math.floor((left + right) / 2);
44
+ const candidate = content.substring(0, mid);
45
+ const candidateWidth = getPlainTextLength(candidate);
46
+ if (candidateWidth <= contentWidth - 3) {
47
+ bestTruncated = candidate;
48
+ left = mid + 1;
49
+ }
50
+ else {
51
+ right = mid - 1;
52
+ }
53
+ }
54
+ cellContent = bestTruncated + '...';
36
55
  }
37
56
  }
38
- // Pad the content to fill the cell
39
- const padded = cellContent.padEnd(contentWidth, ' ');
40
- if (isHeader) {
41
- return (_jsx(Text, { bold: true, color: Colors.AccentCyan, children: padded }));
42
- }
43
- return _jsx(Text, { children: padded });
44
- };
45
- const renderRow = (cells, isHeader = false) => (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "\u2502 " }), cells.map((cell, index) => (_jsxs(React.Fragment, { children: [renderCell(cell, adjustedWidths[index] || 0, isHeader), _jsx(Text, { children: " \u2502 " })] }, index)))] }));
46
- const renderSeparator = () => {
47
- const separator = adjustedWidths
48
- .map((width) => '─'.repeat(Math.max(0, (width || 0) - 2)))
49
- .join('─┼─');
50
- return _jsxs(Text, { children: ["\u251C\u2500", separator, "\u2500\u2524"] });
57
+ // Calculate exact padding needed
58
+ const actualDisplayWidth = getPlainTextLength(cellContent);
59
+ const paddingNeeded = Math.max(0, contentWidth - actualDisplayWidth);
60
+ return (_jsxs(Text, { children: [isHeader ? (_jsx(Text, { bold: true, color: Colors.AccentCyan, children: _jsx(RenderInline, { text: cellContent }) })) : (_jsx(RenderInline, { text: cellContent })), ' '.repeat(paddingNeeded)] }));
51
61
  };
52
- const renderTopBorder = () => {
53
- const border = adjustedWidths
54
- .map((width) => '─'.repeat(Math.max(0, (width || 0) - 2)))
55
- .join('─┬─');
56
- return _jsxs(Text, { children: ["\u250C\u2500", border, "\u2500\u2510"] });
62
+ // Helper function to render border
63
+ const renderBorder = (type) => {
64
+ const chars = {
65
+ top: { left: '', middle: '┬', right: '┐', horizontal: '─' },
66
+ middle: { left: '├', middle: '┼', right: '┤', horizontal: '─' },
67
+ bottom: { left: '└', middle: '┴', right: '┘', horizontal: '─' },
68
+ };
69
+ const char = chars[type];
70
+ const borderParts = adjustedWidths.map((w) => char.horizontal.repeat(w));
71
+ const border = char.left + borderParts.join(char.middle) + char.right;
72
+ return _jsx(Text, { children: border });
57
73
  };
58
- const renderBottomBorder = () => {
59
- const border = adjustedWidths
60
- .map((width) => '─'.repeat(Math.max(0, (width || 0) - 2)))
61
- .join('─┴─');
62
- return _jsxs(Text, { children: ["\u2514\u2500", border, "\u2500\u2518"] });
74
+ // Helper function to render a table row
75
+ const renderRow = (cells, isHeader = false) => {
76
+ const renderedCells = cells.map((cell, index) => {
77
+ const width = adjustedWidths[index] || 0;
78
+ return renderCell(cell || '', width, isHeader);
79
+ });
80
+ return (_jsxs(Text, { children: ["\u2502", ' ', renderedCells.map((cell, index) => (_jsxs(React.Fragment, { children: [cell, index < renderedCells.length - 1 ? ' │ ' : ''] }, index))), ' ', "\u2502"] }));
63
81
  };
64
- return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [renderTopBorder(), renderRow(headers, true), renderSeparator(), rows.map((row, index) => (_jsx(React.Fragment, { children: renderRow(row) }, index))), renderBottomBorder()] }));
82
+ return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [renderBorder('top'), renderRow(headers, true), renderBorder('middle'), rows.map((row, index) => (_jsx(React.Fragment, { children: renderRow(row) }, index))), renderBorder('bottom')] }));
65
83
  };
66
84
  //# sourceMappingURL=TableRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableRenderer.js","sourceRoot":"","sources":["../../../../src/ui/utils/TableRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TableRenderer.js","sourceRoot":"","sources":["../../../../src/ui/utils/TableRenderer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Checks if the system clipboard contains an image (macOS only for now)
8
+ * @returns true if clipboard contains an image
9
+ */
10
+ export declare function clipboardHasImage(): Promise<boolean>;
11
+ /**
12
+ * Saves the image from clipboard to a temporary file (macOS only for now)
13
+ * @param targetDir The target directory to create temp files within
14
+ * @returns The path to the saved image file, or null if no image or error
15
+ */
16
+ export declare function saveClipboardImage(targetDir?: string): Promise<string | null>;
17
+ /**
18
+ * Cleans up old temporary clipboard image files
19
+ * Removes files older than 1 hour
20
+ * @param targetDir The target directory where temp files are stored
21
+ */
22
+ export declare function cleanupOldClipboardImages(targetDir?: string): Promise<void>;
@@ -0,0 +1,127 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { exec } from 'child_process';
7
+ import { promisify } from 'util';
8
+ import * as fs from 'fs/promises';
9
+ import * as path from 'path';
10
+ const execAsync = promisify(exec);
11
+ /**
12
+ * Checks if the system clipboard contains an image (macOS only for now)
13
+ * @returns true if clipboard contains an image
14
+ */
15
+ export async function clipboardHasImage() {
16
+ if (process.platform !== 'darwin') {
17
+ return false;
18
+ }
19
+ try {
20
+ // Use osascript to check clipboard type
21
+ const { stdout } = await execAsync(`osascript -e 'clipboard info' 2>/dev/null | grep -qE "«class PNGf»|TIFF picture|JPEG picture|GIF picture|«class JPEG»|«class TIFF»" && echo "true" || echo "false"`, { shell: '/bin/bash' });
22
+ return stdout.trim() === 'true';
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ /**
29
+ * Saves the image from clipboard to a temporary file (macOS only for now)
30
+ * @param targetDir The target directory to create temp files within
31
+ * @returns The path to the saved image file, or null if no image or error
32
+ */
33
+ export async function saveClipboardImage(targetDir) {
34
+ if (process.platform !== 'darwin') {
35
+ return null;
36
+ }
37
+ try {
38
+ // Create a temporary directory for clipboard images within the target directory
39
+ // This avoids security restrictions on paths outside the target directory
40
+ const baseDir = targetDir || process.cwd();
41
+ const tempDir = path.join(baseDir, '.gemini-clipboard');
42
+ await fs.mkdir(tempDir, { recursive: true });
43
+ // Generate a unique filename with timestamp
44
+ const timestamp = new Date().getTime();
45
+ // Try different image formats in order of preference
46
+ const formats = [
47
+ { class: 'PNGf', extension: 'png' },
48
+ { class: 'JPEG', extension: 'jpg' },
49
+ { class: 'TIFF', extension: 'tiff' },
50
+ { class: 'GIFf', extension: 'gif' },
51
+ ];
52
+ for (const format of formats) {
53
+ const tempFilePath = path.join(tempDir, `clipboard-${timestamp}.${format.extension}`);
54
+ // Try to save clipboard as this format
55
+ const script = `
56
+ try
57
+ set imageData to the clipboard as «class ${format.class}»
58
+ set fileRef to open for access POSIX file "${tempFilePath}" with write permission
59
+ write imageData to fileRef
60
+ close access fileRef
61
+ return "success"
62
+ on error errMsg
63
+ try
64
+ close access POSIX file "${tempFilePath}"
65
+ end try
66
+ return "error"
67
+ end try
68
+ `;
69
+ const { stdout } = await execAsync(`osascript -e '${script}'`);
70
+ if (stdout.trim() === 'success') {
71
+ // Verify the file was created and has content
72
+ try {
73
+ const stats = await fs.stat(tempFilePath);
74
+ if (stats.size > 0) {
75
+ return tempFilePath;
76
+ }
77
+ }
78
+ catch {
79
+ // File doesn't exist, continue to next format
80
+ }
81
+ }
82
+ // Clean up failed attempt
83
+ try {
84
+ await fs.unlink(tempFilePath);
85
+ }
86
+ catch {
87
+ // Ignore cleanup errors
88
+ }
89
+ }
90
+ // No format worked
91
+ return null;
92
+ }
93
+ catch (error) {
94
+ console.error('Error saving clipboard image:', error);
95
+ return null;
96
+ }
97
+ }
98
+ /**
99
+ * Cleans up old temporary clipboard image files
100
+ * Removes files older than 1 hour
101
+ * @param targetDir The target directory where temp files are stored
102
+ */
103
+ export async function cleanupOldClipboardImages(targetDir) {
104
+ try {
105
+ const baseDir = targetDir || process.cwd();
106
+ const tempDir = path.join(baseDir, '.gemini-clipboard');
107
+ const files = await fs.readdir(tempDir);
108
+ const oneHourAgo = Date.now() - 60 * 60 * 1000;
109
+ for (const file of files) {
110
+ if (file.startsWith('clipboard-') &&
111
+ (file.endsWith('.png') ||
112
+ file.endsWith('.jpg') ||
113
+ file.endsWith('.tiff') ||
114
+ file.endsWith('.gif'))) {
115
+ const filePath = path.join(tempDir, file);
116
+ const stats = await fs.stat(filePath);
117
+ if (stats.mtimeMs < oneHourAgo) {
118
+ await fs.unlink(filePath);
119
+ }
120
+ }
121
+ }
122
+ }
123
+ catch {
124
+ // Ignore errors in cleanup
125
+ }
126
+ }
127
+ //# sourceMappingURL=clipboardUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboardUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/clipboardUtils.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,5 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { AuthType } from '@google/gemini-cli-core';
7
- export interface ApiError {
8
- error: {
9
- code: number;
10
- message: string;
11
- status: string;
12
- details: unknown[];
13
- };
14
- }
15
- export declare function parseAndFormatApiError(error: unknown, authType?: AuthType): string;
6
+ import { AuthType, UserTierId } from '@google/gemini-cli-core';
7
+ export declare function parseAndFormatApiError(error: unknown, authType?: AuthType, userTier?: UserTierId, currentModel?: string, fallbackModel?: string): string;