centaurus-cli 2.8.3 → 2.8.5

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 (59) hide show
  1. package/dist/cli-adapter.d.ts +14 -0
  2. package/dist/cli-adapter.d.ts.map +1 -1
  3. package/dist/cli-adapter.js +204 -35
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/config/models.d.ts.map +1 -1
  6. package/dist/config/models.js +14 -4
  7. package/dist/config/models.js.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/tools/file-ops.d.ts.map +1 -1
  11. package/dist/tools/file-ops.js +69 -14
  12. package/dist/tools/file-ops.js.map +1 -1
  13. package/dist/tools/find-files.d.ts +1 -0
  14. package/dist/tools/find-files.d.ts.map +1 -1
  15. package/dist/tools/find-files.js +77 -13
  16. package/dist/tools/find-files.js.map +1 -1
  17. package/dist/tools/grep-search.d.ts.map +1 -1
  18. package/dist/tools/grep-search.js +68 -15
  19. package/dist/tools/grep-search.js.map +1 -1
  20. package/dist/types/index.d.ts +6 -0
  21. package/dist/types/index.d.ts.map +1 -1
  22. package/dist/ui/components/App.d.ts +2 -0
  23. package/dist/ui/components/App.d.ts.map +1 -1
  24. package/dist/ui/components/App.js +70 -6
  25. package/dist/ui/components/App.js.map +1 -1
  26. package/dist/ui/components/ConnectionStatusMessage.d.ts +17 -0
  27. package/dist/ui/components/ConnectionStatusMessage.d.ts.map +1 -0
  28. package/dist/ui/components/ConnectionStatusMessage.js +66 -0
  29. package/dist/ui/components/ConnectionStatusMessage.js.map +1 -0
  30. package/dist/ui/components/InputBox.d.ts +1 -0
  31. package/dist/ui/components/InputBox.d.ts.map +1 -1
  32. package/dist/ui/components/InputBox.js +10 -2
  33. package/dist/ui/components/InputBox.js.map +1 -1
  34. package/dist/ui/components/InteractiveShell.d.ts +2 -0
  35. package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
  36. package/dist/ui/components/InteractiveShell.js +11 -2
  37. package/dist/ui/components/InteractiveShell.js.map +1 -1
  38. package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
  39. package/dist/ui/components/MessageDisplay.js +13 -0
  40. package/dist/ui/components/MessageDisplay.js.map +1 -1
  41. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
  42. package/dist/ui/components/StreamingMessageDisplay.js +8 -0
  43. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  44. package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
  45. package/dist/ui/components/ToolExecutionMessage.js +66 -33
  46. package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
  47. package/dist/utils/editor-utils.d.ts +3 -3
  48. package/dist/utils/editor-utils.d.ts.map +1 -1
  49. package/dist/utils/editor-utils.js +25 -18
  50. package/dist/utils/editor-utils.js.map +1 -1
  51. package/dist/utils/file.d.ts +40 -0
  52. package/dist/utils/file.d.ts.map +1 -1
  53. package/dist/utils/file.js +164 -0
  54. package/dist/utils/file.js.map +1 -1
  55. package/dist/utils/terminal-output.d.ts.map +1 -1
  56. package/dist/utils/terminal-output.js +55 -1
  57. package/dist/utils/terminal-output.js.map +1 -1
  58. package/models-config.json +24 -4
  59. package/package.json +1 -1
@@ -58,6 +58,170 @@ export function listDirectory(dirPath, recursive = false) {
58
58
  walk(dirPath);
59
59
  return results;
60
60
  }
61
+ /**
62
+ * Get the count of items in a directory (non-recursive, fast)
63
+ */
64
+ function getDirectoryItemCount(dirPath) {
65
+ try {
66
+ const entries = fs.readdirSync(dirPath);
67
+ return entries.length;
68
+ }
69
+ catch {
70
+ return 0;
71
+ }
72
+ }
73
+ /**
74
+ * Format file size in KB with appropriate precision
75
+ */
76
+ function formatSizeKB(bytes) {
77
+ const kb = bytes / 1024;
78
+ if (kb < 1)
79
+ return `${(kb).toFixed(2)}KB`;
80
+ if (kb < 10)
81
+ return `${kb.toFixed(1)}KB`;
82
+ if (kb < 1024)
83
+ return `${Math.round(kb)}KB`;
84
+ const mb = kb / 1024;
85
+ if (mb < 10)
86
+ return `${mb.toFixed(1)}MB`;
87
+ return `${Math.round(mb)}MB`;
88
+ }
89
+ /**
90
+ * Enhanced directory listing with statistics and smart limiting
91
+ * Shows all directories (navigation is critical) but limits files
92
+ */
93
+ export function listDirectoryEnhanced(dirPath, options = {}) {
94
+ const { fileLimit = 100, dirLimit = 50, showHidden = true, largeThreshold = 100 } = options;
95
+ const directories = [];
96
+ const files = [];
97
+ const largeDirectories = [];
98
+ let totalDirectories = 0;
99
+ let totalFiles = 0;
100
+ try {
101
+ const entries = fs.readdirSync(dirPath, { withFileTypes: true });
102
+ for (const entry of entries) {
103
+ // Skip hidden files if showHidden is false
104
+ if (!showHidden && entry.name.startsWith('.')) {
105
+ continue;
106
+ }
107
+ const fullPath = path.join(dirPath, entry.name);
108
+ if (entry.isDirectory()) {
109
+ totalDirectories++;
110
+ const itemCount = getDirectoryItemCount(fullPath);
111
+ directories.push({
112
+ name: entry.name,
113
+ itemCount,
114
+ isDirectory: true
115
+ });
116
+ // Track large directories
117
+ if (itemCount >= largeThreshold) {
118
+ largeDirectories.push({ name: entry.name, itemCount });
119
+ }
120
+ }
121
+ else {
122
+ totalFiles++;
123
+ try {
124
+ const stat = fs.statSync(fullPath);
125
+ files.push({
126
+ name: entry.name,
127
+ sizeKB: formatSizeKB(stat.size),
128
+ isDirectory: false
129
+ });
130
+ }
131
+ catch {
132
+ files.push({
133
+ name: entry.name,
134
+ sizeKB: '?',
135
+ isDirectory: false
136
+ });
137
+ }
138
+ }
139
+ }
140
+ }
141
+ catch (error) {
142
+ throw new Error(`Failed to read directory: ${error.message}`);
143
+ }
144
+ // Sort directories by item count (descending) for visibility
145
+ directories.sort((a, b) => (b.itemCount || 0) - (a.itemCount || 0));
146
+ largeDirectories.sort((a, b) => b.itemCount - a.itemCount);
147
+ // Sort files by name for consistency
148
+ files.sort((a, b) => a.name.localeCompare(b.name));
149
+ // Apply limits
150
+ const limitedDirs = directories.slice(0, dirLimit);
151
+ const limitedFiles = files.slice(0, fileLimit);
152
+ const hiddenDirCount = Math.max(0, directories.length - dirLimit);
153
+ const hiddenFileCount = Math.max(0, files.length - fileLimit);
154
+ return {
155
+ stats: {
156
+ totalDirectories,
157
+ totalFiles,
158
+ totalItems: totalDirectories + totalFiles,
159
+ largeDirectories: largeDirectories.slice(0, 5) // Top 5 large dirs
160
+ },
161
+ directories: limitedDirs,
162
+ files: limitedFiles,
163
+ hiddenFileCount,
164
+ hiddenDirCount
165
+ };
166
+ }
167
+ /**
168
+ * Format enhanced directory listing as a human/AI-readable string
169
+ */
170
+ export function formatDirectoryListing(dirPath, listing) {
171
+ const lines = [];
172
+ const { stats, directories, files, hiddenFileCount, hiddenDirCount } = listing;
173
+ // Header
174
+ lines.push(`📁 Directory: ${dirPath}`);
175
+ lines.push('═'.repeat(50));
176
+ // Stats line
177
+ lines.push(`Total: ${stats.totalDirectories} directories, ${stats.totalFiles} files, ${stats.totalItems} items`);
178
+ // Warning if items are hidden
179
+ const totalHidden = hiddenFileCount + hiddenDirCount;
180
+ if (totalHidden > 0) {
181
+ const shownCount = directories.length + files.length;
182
+ lines.push(`⚠️ Showing ${shownCount} of ${stats.totalItems} items (${totalHidden} hidden)`);
183
+ }
184
+ // Large directories warning
185
+ if (stats.largeDirectories.length > 0) {
186
+ const largeList = stats.largeDirectories
187
+ .map(d => `${d.name} (${d.itemCount} items)`)
188
+ .join(', ');
189
+ lines.push(`📦 Large directories: ${largeList}`);
190
+ }
191
+ lines.push(''); // Blank line
192
+ // Directories section
193
+ if (directories.length > 0) {
194
+ lines.push('📂 Directories:');
195
+ for (const dir of directories) {
196
+ const countStr = dir.itemCount !== undefined ? ` (${dir.itemCount} items)` : '';
197
+ lines.push(` ${dir.name}/${countStr}`);
198
+ }
199
+ if (hiddenDirCount > 0) {
200
+ lines.push(` ... and ${hiddenDirCount} more directories`);
201
+ }
202
+ lines.push('');
203
+ }
204
+ // Files section
205
+ if (files.length > 0) {
206
+ const fileHeader = hiddenFileCount > 0
207
+ ? `📄 Files (${files.length} of ${stats.totalFiles} shown):`
208
+ : '📄 Files:';
209
+ lines.push(fileHeader);
210
+ for (const file of files) {
211
+ const sizeStr = file.sizeKB ? ` (${file.sizeKB})` : '';
212
+ lines.push(` ${file.name}${sizeStr}`);
213
+ }
214
+ if (hiddenFileCount > 0) {
215
+ lines.push(` ... and ${hiddenFileCount} more files`);
216
+ }
217
+ lines.push('');
218
+ }
219
+ // Helpful tip if items were hidden
220
+ if (totalHidden > 0) {
221
+ lines.push('💡 To see more: List subdirectories individually or use find_files to search');
222
+ }
223
+ return lines.join('\n');
224
+ }
61
225
  /**
62
226
  * Check if path is safe (not trying to escape cwd)
63
227
  */
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-output.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA6EzD"}
1
+ {"version":3,"file":"terminal-output.d.ts","sourceRoot":"","sources":["../../src/utils/terminal-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+CH;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwFzD"}
@@ -7,6 +7,50 @@
7
7
  * This module provides functions to correctly process such output so that only the
8
8
  * final rendered state is preserved (not intermediate states that should be overwritten).
9
9
  */
10
+ /**
11
+ * Process backspace characters to simulate terminal buffer behavior.
12
+ *
13
+ * Terminals send \x08 (backspace) to move cursor left, often followed by
14
+ * space and another backspace to visually erase the character.
15
+ * This function simulates that behavior on a virtual buffer.
16
+ *
17
+ * @param input - String containing backspace characters
18
+ * @returns String with backspaces applied
19
+ */
20
+ function processBackspaces(input) {
21
+ if (!input.includes('\x08'))
22
+ return input;
23
+ // Process the string character by character, simulating a terminal buffer
24
+ let result = '';
25
+ let cursorPos = 0;
26
+ for (let i = 0; i < input.length; i++) {
27
+ const char = input[i];
28
+ if (char === '\x08') {
29
+ // Backspace: move cursor left (but not past beginning)
30
+ if (cursorPos > 0) {
31
+ cursorPos--;
32
+ }
33
+ }
34
+ else if (char === '\n' || char === '\r') {
35
+ // Newline/CR: append and reset cursor
36
+ result = result.substring(0, cursorPos);
37
+ result += char;
38
+ cursorPos = result.length;
39
+ }
40
+ else {
41
+ // Regular character: insert/overwrite at cursor position
42
+ if (cursorPos < result.length) {
43
+ result = result.substring(0, cursorPos) + char + result.substring(cursorPos + 1);
44
+ }
45
+ else {
46
+ result += char;
47
+ }
48
+ cursorPos++;
49
+ }
50
+ }
51
+ // Trim any trailing content after cursor (for partial backspace at end)
52
+ return result.substring(0, cursorPos);
53
+ }
10
54
  /**
11
55
  * Process terminal output to properly handle carriage returns and ANSI sequences.
12
56
  *
@@ -62,8 +106,18 @@ export function processTerminalOutput(raw) {
62
106
  .replace(/\x1b\[\d*X/g, '')
63
107
  // SGR (Select Graphic Rendition) reset: \x1b[m
64
108
  .replace(/\x1b\[m/g, '')
109
+ // SGR with parameters (colors, etc.): \x1b[n;n;...m - strip all color codes
110
+ .replace(/\x1b\[\d+(?:;\d+)*m/g, '')
65
111
  // Strip any remaining escape sequences ending with letters that might leak through
66
- .replace(/\x1b\[\d*[a-zA-Z]/g, '');
112
+ .replace(/\x1b\[\d*[a-zA-Z]/g, '')
113
+ // Strip any remaining bare escape sequences
114
+ .replace(/\x1b\[/g, '')
115
+ // Convert tab characters to spaces for consistent display
116
+ .replace(/\t/g, ' ');
117
+ // Process backspace sequences to simulate terminal behavior
118
+ // Terminal sends \b \b (backspace-space-backspace) to visually erase characters
119
+ // We need to simulate this in a virtual buffer
120
+ cleaned = processBackspaces(cleaned);
67
121
  // Clean up multiple consecutive newlines (max 2)
68
122
  cleaned = cleaned.replace(/\n{3,}/g, '\n\n');
69
123
  // Split by newlines first, then process each "line segment" for carriage returns
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-output.js","sourceRoot":"","sources":["../../src/utils/terminal-output.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC7C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,iFAAiF;IACjF,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAE5C,6EAA6E;IAC7E,wGAAwG;IACxG,kFAAkF;IAClF,OAAO,GAAG,OAAO;QACb,4EAA4E;QAC5E,sFAAsF;SACrF,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC;QAClD,mFAAmF;SAClF,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACnC,gGAAgG;SAC/F,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3B,4FAA4F;SAC3F,OAAO,CAAC,oBAAoB,EAAE,IAAI,CAAC;QACpC,6EAA6E;SAC5E,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC9B,uDAAuD;SACtD,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC;QAC7B,mFAAmF;SAClF,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC/B,oDAAoD;SACnD,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,mDAAmD;SAClD,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3B,mCAAmC;SAClC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC9B,yCAAyC;SACxC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAC/B,mFAAmF;SAClF,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAChC,iCAAiC;SAChC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;QACpC,qEAAqE;SACpE,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3B,+CAA+C;SAC9C,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACxB,mFAAmF;SAClF,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAEvC,iDAAiD;IACjD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAE7C,iFAAiF;IACjF,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,qFAAqF;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEhC,6EAA6E;YAC7E,2CAA2C;YAC3C,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBAClC,SAAS,GAAG,IAAI,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACJ,8CAA8C;gBAC9C,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,sCAAsC;IACtC,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"terminal-output.js","sourceRoot":"","sources":["../../src/utils/terminal-output.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  "name": "Gemini 3 Pro (High Thinking)",
6
6
  "description": "Next generation flagship with deep reasoning",
7
7
  "provider": "google",
8
- "contextWindow": 2000000,
8
+ "contextWindow": 1000000,
9
9
  "region": "global",
10
10
  "supportsThinking": true,
11
11
  "thinkingConfig": {
@@ -26,7 +26,7 @@
26
26
  "name": "Gemini 3 Pro (Low Thinking)",
27
27
  "description": "Next generation flagship with faster responses",
28
28
  "provider": "google",
29
- "contextWindow": 2000000,
29
+ "contextWindow": 1000000,
30
30
  "region": "global",
31
31
  "supportsThinking": true,
32
32
  "thinkingConfig": {
@@ -42,12 +42,32 @@
42
42
  "maxOutputTokens": 32768
43
43
  }
44
44
  },
45
+ {
46
+ "id": "gemini-3-flash-preview",
47
+ "name": "Gemini 3 Flash Preview",
48
+ "description": "Next generation fast and efficient model",
49
+ "provider": "google",
50
+ "contextWindow": 1000000,
51
+ "region": "global",
52
+ "supportsThinking": true,
53
+ "thinkingConfig": {
54
+ "thinking_config": {
55
+ "include_thoughts": true
56
+ }
57
+ },
58
+ "generationConfig": {
59
+ "temperature": 0.1,
60
+ "topP": 0.95,
61
+ "topK": 64,
62
+ "maxOutputTokens": 32768
63
+ }
64
+ },
45
65
  {
46
66
  "id": "gemini-2.5-flash",
47
67
  "name": "Gemini 2.5 Flash",
48
68
  "description": "Fast and efficient",
49
69
  "provider": "google",
50
- "contextWindow": 2000000,
70
+ "contextWindow": 1000000,
51
71
  "region": "us-central1",
52
72
  "supportsThinking": true,
53
73
  "thinkingConfig": {
@@ -67,7 +87,7 @@
67
87
  "name": "Gemini 2.5 Pro",
68
88
  "description": "Most capable model",
69
89
  "provider": "google",
70
- "contextWindow": 2000000,
90
+ "contextWindow": 1000000,
71
91
  "region": "us-central1",
72
92
  "supportsThinking": true,
73
93
  "thinkingConfig": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaurus-cli",
3
- "version": "2.8.3",
3
+ "version": "2.8.5",
4
4
  "description": "A powerful command-line AI coding assistant with Google Gemini support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",