@google/gemini-cli 0.1.9-nightly.250707.d1c0a211 → 0.1.9-nightly.250708.a4097ae6
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.
- package/README.md +14 -0
- package/dist/google-gemini-cli-0.1.9.tgz +0 -0
- package/dist/package.json +2 -2
- package/dist/src/config/auth.js +3 -2
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/config.d.ts +0 -1
- package/dist/src/config/config.js +15 -41
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settings.d.ts +2 -0
- package/dist/src/config/settings.js +63 -1
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.js +16 -17
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/services/CommandService.d.ts +13 -0
- package/dist/src/services/CommandService.js +30 -0
- package/dist/src/services/CommandService.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
- package/dist/src/test-utils/mockCommandContext.js +75 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -0
- package/dist/src/ui/App.js +8 -5
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/App.test.js +1 -0
- package/dist/src/ui/App.test.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.d.ts +7 -0
- package/dist/src/ui/commands/clearCommand.js +15 -0
- package/dist/src/ui/commands/clearCommand.js.map +1 -0
- package/dist/src/ui/commands/helpCommand.d.ts +7 -0
- package/dist/src/ui/commands/helpCommand.js +18 -0
- package/dist/src/ui/commands/helpCommand.js.map +1 -0
- package/dist/src/ui/commands/memoryCommand.d.ts +7 -0
- package/dist/src/ui/commands/memoryCommand.js +81 -0
- package/dist/src/ui/commands/memoryCommand.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +63 -0
- package/dist/src/ui/commands/types.js +7 -0
- package/dist/src/ui/commands/types.js.map +1 -0
- package/dist/src/ui/components/AuthDialog.js +21 -2
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.test.js +20 -3
- package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/components/Help.d.ts +1 -1
- package/dist/src/ui/components/Help.js +3 -2
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +2 -1
- package/dist/src/ui/components/InputPrompt.js +106 -157
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +180 -0
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +5 -7
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -10
- package/dist/src/ui/hooks/slashCommandProcessor.js +193 -124
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useCompletion.d.ts +2 -2
- package/dist/src/ui/hooks/useCompletion.js +106 -56
- package/dist/src/ui/hooks/useCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
- package/dist/src/ui/hooks/useGeminiStream.js +4 -10
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +26 -44
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/types.d.ts +10 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +16 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +104 -0
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -0
- package/dist/src/ui/utils/MarkdownDisplay.js +1 -80
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +35 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +50 -32
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
- package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
- package/dist/src/utils/userStartupWarnings.d.ts +6 -0
- package/dist/src/utils/userStartupWarnings.js +33 -0
- package/dist/src/utils/userStartupWarnings.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -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
|
|
18
|
-
const maxRowWidth = Math.max(...rows.map((row) => (row[index] || '')
|
|
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 (
|
|
31
|
+
if (displayWidth > contentWidth) {
|
|
30
32
|
if (contentWidth <= 3) {
|
|
31
|
-
//
|
|
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
|
-
|
|
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
|
-
//
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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: [
|
|
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":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TableRenderer.js","sourceRoot":"","sources":["../../../../src/ui/utils/TableRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
;; deny all outbound network traffic EXCEPT through proxy on localhost:8877
|
|
26
26
|
;; set `GEMINI_SANDBOX_PROXY_COMMAND=<command>` to run proxy alongside sandbox
|
|
27
|
-
;; proxy must listen on :::8877 (see
|
|
27
|
+
;; proxy must listen on :::8877 (see docs/examples/proxy-script.md)
|
|
28
28
|
(deny network-outbound)
|
|
29
29
|
(allow network-outbound (remote tcp "localhost:8877"))
|
|
30
30
|
|
|
@@ -88,5 +88,5 @@
|
|
|
88
88
|
|
|
89
89
|
;; allow outbound network traffic through proxy on localhost:8877
|
|
90
90
|
;; set `GEMINI_SANDBOX_PROXY_COMMAND=<command>` to run proxy alongside sandbox
|
|
91
|
-
;; proxy must listen on :::8877 (see
|
|
91
|
+
;; proxy must listen on :::8877 (see docs/examples/proxy-script.md)
|
|
92
92
|
(allow network-outbound (remote tcp "localhost:8877"))
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'fs/promises';
|
|
7
|
+
import * as os from 'os';
|
|
8
|
+
// Individual warning checks
|
|
9
|
+
const homeDirectoryCheck = {
|
|
10
|
+
id: 'home-directory',
|
|
11
|
+
check: async (workspaceRoot) => {
|
|
12
|
+
try {
|
|
13
|
+
const [workspaceRealPath, homeRealPath] = await Promise.all([
|
|
14
|
+
fs.realpath(workspaceRoot),
|
|
15
|
+
fs.realpath(os.homedir()),
|
|
16
|
+
]);
|
|
17
|
+
if (workspaceRealPath === homeRealPath) {
|
|
18
|
+
return 'You are running Gemini CLI in your home directory. It is recommended to run in a project-specific directory.';
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
catch (_err) {
|
|
23
|
+
return 'Could not verify the current directory due to a file system error.';
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
// All warning checks
|
|
28
|
+
const WARNING_CHECKS = [homeDirectoryCheck];
|
|
29
|
+
export async function getUserStartupWarnings(workspaceRoot) {
|
|
30
|
+
const results = await Promise.all(WARNING_CHECKS.map((check) => check.check(workspaceRoot)));
|
|
31
|
+
return results.filter((msg) => msg !== null);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=userStartupWarnings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userStartupWarnings.js","sourceRoot":"","sources":["../../../src/utils/userStartupWarnings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAOzB,4BAA4B;AAC5B,MAAM,kBAAkB,GAAiB;IACvC,EAAE,EAAE,gBAAgB;IACpB,KAAK,EAAE,KAAK,EAAE,aAAqB,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC1D,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAC1B,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;aAC1B,CAAC,CAAC;YAEH,IAAI,iBAAiB,KAAK,YAAY,EAAE,CAAC;gBACvC,OAAO,8GAA8G,CAAC;YACxH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,IAAa,EAAE,CAAC;YACvB,OAAO,oEAAoE,CAAC;QAC9E,CAAC;IACH,CAAC;CACF,CAAC;AAEF,qBAAqB;AACrB,MAAM,cAAc,GAA4B,CAAC,kBAAkB,CAAC,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,aAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAC1D,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;AAC/C,CAAC"}
|