centaurus-cli 2.7.3 → 2.8.0

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 (48) hide show
  1. package/dist/cli-adapter.d.ts +2 -0
  2. package/dist/cli-adapter.d.ts.map +1 -1
  3. package/dist/cli-adapter.js +46 -4
  4. package/dist/cli-adapter.js.map +1 -1
  5. package/dist/context/handlers/wsl-handler.d.ts.map +1 -1
  6. package/dist/context/handlers/wsl-handler.js +2 -1
  7. package/dist/context/handlers/wsl-handler.js.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/services/ai-service-client.d.ts.map +1 -1
  11. package/dist/services/ai-service-client.js +20 -0
  12. package/dist/services/ai-service-client.js.map +1 -1
  13. package/dist/tools/file-ops.d.ts.map +1 -1
  14. package/dist/tools/file-ops.js +13 -3
  15. package/dist/tools/file-ops.js.map +1 -1
  16. package/dist/ui/components/App.d.ts +1 -0
  17. package/dist/ui/components/App.d.ts.map +1 -1
  18. package/dist/ui/components/App.js +73 -74
  19. package/dist/ui/components/App.js.map +1 -1
  20. package/dist/ui/components/InteractiveShell.d.ts +2 -1
  21. package/dist/ui/components/InteractiveShell.d.ts.map +1 -1
  22. package/dist/ui/components/InteractiveShell.js +41 -106
  23. package/dist/ui/components/InteractiveShell.js.map +1 -1
  24. package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
  25. package/dist/ui/components/MarkdownRenderer.js +12 -8
  26. package/dist/ui/components/MarkdownRenderer.js.map +1 -1
  27. package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
  28. package/dist/ui/components/MessageDisplay.js +10 -2
  29. package/dist/ui/components/MessageDisplay.js.map +1 -1
  30. package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
  31. package/dist/ui/components/StreamingMessageDisplay.js +5 -5
  32. package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
  33. package/dist/utils/editor-utils.d.ts +50 -0
  34. package/dist/utils/editor-utils.d.ts.map +1 -0
  35. package/dist/utils/editor-utils.js +501 -0
  36. package/dist/utils/editor-utils.js.map +1 -0
  37. package/dist/utils/input-classifier.d.ts.map +1 -1
  38. package/dist/utils/input-classifier.js +2 -1
  39. package/dist/utils/input-classifier.js.map +1 -1
  40. package/dist/utils/shell.d.ts +32 -1
  41. package/dist/utils/shell.d.ts.map +1 -1
  42. package/dist/utils/shell.js +97 -161
  43. package/dist/utils/shell.js.map +1 -1
  44. package/dist/utils/syntax-checker.d.ts +24 -0
  45. package/dist/utils/syntax-checker.d.ts.map +1 -0
  46. package/dist/utils/syntax-checker.js +320 -0
  47. package/dist/utils/syntax-checker.js.map +1 -0
  48. package/package.json +4 -3
@@ -0,0 +1,320 @@
1
+ import * as vm from 'vm';
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import { spawn } from 'child_process';
5
+ import * as ts from 'typescript';
6
+ /**
7
+ * File extension to language mapping
8
+ */
9
+ const LANGUAGE_MAP = {
10
+ // JavaScript
11
+ '.js': 'javascript',
12
+ '.mjs': 'javascript',
13
+ '.cjs': 'javascript',
14
+ '.jsx': 'javascript',
15
+ // TypeScript
16
+ '.ts': 'typescript',
17
+ '.tsx': 'typescript',
18
+ '.mts': 'typescript',
19
+ '.cts': 'typescript',
20
+ // Python
21
+ '.py': 'python',
22
+ '.pyw': 'python',
23
+ // JSON
24
+ '.json': 'json',
25
+ '.jsonc': 'json',
26
+ // Skip syntax checking for these (text/markup/config)
27
+ '.txt': 'text',
28
+ '.md': 'markdown',
29
+ '.markdown': 'markdown',
30
+ '.log': 'log',
31
+ '.csv': 'csv',
32
+ '.html': 'html',
33
+ '.htm': 'html',
34
+ '.css': 'css',
35
+ '.scss': 'scss',
36
+ '.sass': 'sass',
37
+ '.less': 'less',
38
+ '.xml': 'xml',
39
+ '.yaml': 'yaml',
40
+ '.yml': 'yaml',
41
+ '.toml': 'toml',
42
+ '.ini': 'ini',
43
+ '.cfg': 'config',
44
+ '.conf': 'config',
45
+ '.env': 'env',
46
+ '.gitignore': 'gitignore',
47
+ '.dockerignore': 'dockerignore',
48
+ '.editorconfig': 'config',
49
+ '.prettierrc': 'config',
50
+ '.eslintrc': 'config',
51
+ '.babelrc': 'config',
52
+ };
53
+ /**
54
+ * Languages that should skip syntax checking
55
+ */
56
+ const SKIP_SYNTAX_CHECK = new Set([
57
+ 'text',
58
+ 'markdown',
59
+ 'log',
60
+ 'csv',
61
+ 'html',
62
+ 'css',
63
+ 'scss',
64
+ 'sass',
65
+ 'less',
66
+ 'xml',
67
+ 'yaml',
68
+ 'toml',
69
+ 'ini',
70
+ 'config',
71
+ 'env',
72
+ 'gitignore',
73
+ 'dockerignore',
74
+ ]);
75
+ /**
76
+ * Detect language from file path
77
+ */
78
+ export function detectLanguage(filePath) {
79
+ const ext = path.extname(filePath).toLowerCase();
80
+ const basename = path.basename(filePath).toLowerCase();
81
+ // Check for special filenames without extensions
82
+ if (!ext) {
83
+ // Common config files without extensions
84
+ if (basename === 'dockerfile')
85
+ return 'dockerfile';
86
+ if (basename === 'makefile')
87
+ return 'makefile';
88
+ if (basename === '.gitignore')
89
+ return 'gitignore';
90
+ if (basename === '.dockerignore')
91
+ return 'dockerignore';
92
+ if (basename === '.env')
93
+ return 'env';
94
+ return 'unknown';
95
+ }
96
+ return LANGUAGE_MAP[ext] || 'unknown';
97
+ }
98
+ /**
99
+ * Check JavaScript syntax using vm.Script
100
+ */
101
+ function checkJavaScriptSyntax(content) {
102
+ try {
103
+ // Use vm.Script to parse and check syntax without execution
104
+ new vm.Script(content, { filename: 'syntax-check.js' });
105
+ return {
106
+ success: true,
107
+ language: 'JavaScript',
108
+ };
109
+ }
110
+ catch (error) {
111
+ const err = error;
112
+ return {
113
+ success: false,
114
+ language: 'JavaScript',
115
+ error: err.message,
116
+ };
117
+ }
118
+ }
119
+ /**
120
+ * Check TypeScript syntax using the TypeScript compiler API
121
+ */
122
+ function checkTypeScriptSyntax(content, filePath) {
123
+ try {
124
+ const isTsx = filePath.endsWith('.tsx');
125
+ const compilerOptions = {
126
+ noEmit: true,
127
+ target: ts.ScriptTarget.ESNext,
128
+ module: ts.ModuleKind.ESNext,
129
+ jsx: isTsx ? ts.JsxEmit.React : undefined,
130
+ strict: false, // Don't enforce strict mode for syntax checking
131
+ skipLibCheck: true,
132
+ allowJs: true,
133
+ };
134
+ // Create a simple in-memory source file
135
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.ESNext, true, isTsx ? ts.ScriptKind.TSX : ts.ScriptKind.TS);
136
+ // Check for parse errors (syntax errors)
137
+ const parseErrors = [];
138
+ // Walk through the source file to find syntax errors
139
+ // TypeScript's createSourceFile doesn't throw on syntax errors,
140
+ // but we can check for diagnostic messages
141
+ const parseDiagnostics = sourceFile.parseDiagnostics;
142
+ if (parseDiagnostics && parseDiagnostics.length > 0) {
143
+ for (const diag of parseDiagnostics) {
144
+ const message = ts.flattenDiagnosticMessageText(diag.messageText, '\n');
145
+ const lineAndChar = sourceFile.getLineAndCharacterOfPosition(diag.start || 0);
146
+ parseErrors.push(`Line ${lineAndChar.line + 1}: ${message}`);
147
+ }
148
+ }
149
+ if (parseErrors.length > 0) {
150
+ return {
151
+ success: false,
152
+ language: 'TypeScript',
153
+ error: parseErrors.join('\n'),
154
+ };
155
+ }
156
+ return {
157
+ success: true,
158
+ language: 'TypeScript',
159
+ };
160
+ }
161
+ catch (error) {
162
+ const err = error;
163
+ return {
164
+ success: false,
165
+ language: 'TypeScript',
166
+ error: err.message,
167
+ };
168
+ }
169
+ }
170
+ /**
171
+ * Check Python syntax using the py_compile module
172
+ */
173
+ async function checkPythonSyntax(filePath) {
174
+ return new Promise((resolve) => {
175
+ // Use python -m py_compile to check syntax
176
+ const pythonCommands = process.platform === 'win32'
177
+ ? ['python', 'python3', 'py']
178
+ : ['python3', 'python'];
179
+ let attemptIndex = 0;
180
+ const tryNextCommand = () => {
181
+ if (attemptIndex >= pythonCommands.length) {
182
+ // No Python found
183
+ resolve({
184
+ success: true,
185
+ language: 'Python',
186
+ skipped: true,
187
+ skipReason: 'Python interpreter not found. Syntax check skipped.',
188
+ });
189
+ return;
190
+ }
191
+ const pythonCmd = pythonCommands[attemptIndex];
192
+ attemptIndex++;
193
+ const proc = spawn(pythonCmd, ['-m', 'py_compile', filePath], {
194
+ stdio: ['pipe', 'pipe', 'pipe'],
195
+ timeout: 5000, // 5 second timeout
196
+ });
197
+ let stderr = '';
198
+ proc.stderr.on('data', (data) => {
199
+ stderr += data.toString();
200
+ });
201
+ proc.on('error', () => {
202
+ // This python command failed, try next
203
+ tryNextCommand();
204
+ });
205
+ proc.on('close', (code) => {
206
+ if (code === 0) {
207
+ resolve({
208
+ success: true,
209
+ language: 'Python',
210
+ });
211
+ }
212
+ else {
213
+ // Parse the error message
214
+ const errorLines = stderr.trim().split('\n');
215
+ const relevantError = errorLines.length > 0
216
+ ? errorLines[errorLines.length - 1]
217
+ : 'Syntax error detected';
218
+ resolve({
219
+ success: false,
220
+ language: 'Python',
221
+ error: relevantError,
222
+ });
223
+ }
224
+ });
225
+ };
226
+ tryNextCommand();
227
+ });
228
+ }
229
+ /**
230
+ * Check JSON syntax using JSON.parse
231
+ */
232
+ function checkJsonSyntax(content) {
233
+ try {
234
+ JSON.parse(content);
235
+ return {
236
+ success: true,
237
+ language: 'JSON',
238
+ };
239
+ }
240
+ catch (error) {
241
+ const err = error;
242
+ return {
243
+ success: false,
244
+ language: 'JSON',
245
+ error: err.message,
246
+ };
247
+ }
248
+ }
249
+ /**
250
+ * Main syntax check function
251
+ * Checks the syntax of a file based on its extension
252
+ */
253
+ export async function checkSyntax(filePath, content) {
254
+ const language = detectLanguage(filePath);
255
+ // Skip syntax checking for text/config files
256
+ if (SKIP_SYNTAX_CHECK.has(language)) {
257
+ return {
258
+ success: true,
259
+ language: language.charAt(0).toUpperCase() + language.slice(1),
260
+ skipped: true,
261
+ skipReason: `Syntax check skipped for ${language} files`,
262
+ };
263
+ }
264
+ // Skip unknown file types
265
+ if (language === 'unknown') {
266
+ return {
267
+ success: true,
268
+ language: 'Unknown',
269
+ skipped: true,
270
+ skipReason: 'Syntax check skipped for unknown file type',
271
+ };
272
+ }
273
+ // Read content from file if not provided
274
+ let fileContent = content;
275
+ if (!fileContent) {
276
+ try {
277
+ fileContent = fs.readFileSync(filePath, 'utf-8');
278
+ }
279
+ catch (error) {
280
+ return {
281
+ success: true,
282
+ language: language.charAt(0).toUpperCase() + language.slice(1),
283
+ skipped: true,
284
+ skipReason: 'Could not read file for syntax check',
285
+ };
286
+ }
287
+ }
288
+ // Perform language-specific syntax check
289
+ switch (language) {
290
+ case 'javascript':
291
+ return checkJavaScriptSyntax(fileContent);
292
+ case 'typescript':
293
+ return checkTypeScriptSyntax(fileContent, filePath);
294
+ case 'python':
295
+ // Python requires the file to be on disk for py_compile
296
+ return await checkPythonSyntax(filePath);
297
+ case 'json':
298
+ return checkJsonSyntax(fileContent);
299
+ default:
300
+ return {
301
+ success: true,
302
+ language: language.charAt(0).toUpperCase() + language.slice(1),
303
+ skipped: true,
304
+ skipReason: `Syntax check not implemented for ${language}`,
305
+ };
306
+ }
307
+ }
308
+ /**
309
+ * Format syntax check result as a human-readable string
310
+ */
311
+ export function formatSyntaxCheckResult(result) {
312
+ if (result.skipped) {
313
+ return `(${result.skipReason})`;
314
+ }
315
+ if (result.success) {
316
+ return `✓ Syntax check passed (${result.language})`;
317
+ }
318
+ return `✗ Syntax error (${result.language}): ${result.error}`;
319
+ }
320
+ //# sourceMappingURL=syntax-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax-checker.js","sourceRoot":"","sources":["../../src/utils/syntax-checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAajC;;GAEG;AACH,MAAM,YAAY,GAA2B;IACzC,aAAa;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IAEpB,aAAa;IACb,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IAEpB,SAAS;IACT,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAEhB,OAAO;IACP,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,MAAM;IAEhB,sDAAsD;IACtD,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,WAAW;IACzB,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,QAAQ;IACzB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAC9B,MAAM;IACN,UAAU;IACV,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,WAAW;IACX,cAAc;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAEvD,iDAAiD;IACjD,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,yCAAyC;QACzC,IAAI,QAAQ,KAAK,YAAY;YAAE,OAAO,YAAY,CAAC;QACnD,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,UAAU,CAAC;QAC/C,IAAI,QAAQ,KAAK,YAAY;YAAE,OAAO,WAAW,CAAC;QAClD,IAAI,QAAQ,KAAK,eAAe;YAAE,OAAO,cAAc,CAAC;QACxD,IAAI,QAAQ,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC1C,IAAI,CAAC;QACD,4DAA4D;QAC5D,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACxD,OAAO;YACH,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,YAAY;SACzB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,OAAO;YACH,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;IACN,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,OAAe,EAAE,QAAgB;IAC5D,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,eAAe,GAAuB;YACxC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM;YAC9B,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;YAC5B,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzC,MAAM,EAAE,KAAK,EAAE,gDAAgD;YAC/D,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,IAAI;SAChB,CAAC;QAEF,wCAAwC;QACxC,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAClC,QAAQ,EACR,OAAO,EACP,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAC/C,CAAC;QAEF,yCAAyC;QACzC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,qDAAqD;QACrD,gEAAgE;QAChE,2CAA2C;QAC3C,MAAM,gBAAgB,GAAI,UAAkB,CAAC,gBAAgB,CAAC;QAC9D,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;gBAClC,MAAM,OAAO,GAAG,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACxE,MAAM,WAAW,GAAG,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAC9E,WAAW,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,IAAI,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YACjE,CAAC;QACL,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;aAChC,CAAC;QACN,CAAC;QAED,OAAO;YACH,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,YAAY;SACzB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,KAAc,CAAC;QAC3B,OAAO;YACH,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;IACN,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,2CAA2C;QAC3C,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC/C,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;YAC7B,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE5B,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,MAAM,cAAc,GAAG,GAAG,EAAE;YACxB,IAAI,YAAY,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBACxC,kBAAkB;gBAClB,OAAO,CAAC;oBACJ,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,QAAQ;oBAClB,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,qDAAqD;iBACpE,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;YAC/C,YAAY,EAAE,CAAC;YAEf,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE;gBAC1D,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,mBAAmB;aACrC,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC5B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAClB,uCAAuC;gBACvC,cAAc,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACb,OAAO,CAAC;wBACJ,OAAO,EAAE,IAAI;wBACb,QAAQ,EAAE,QAAQ;qBACrB,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,0BAA0B;oBAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;wBACvC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;wBACnC,CAAC,CAAC,uBAAuB,CAAC;oBAE9B,OAAO,CAAC;wBACJ,OAAO,EAAE,KAAK;wBACd,QAAQ,EAAE,QAAQ;wBAClB,KAAK,EAAE,aAAa;qBACvB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF,cAAc,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,OAAe;IACpC,IAAI,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO;YACH,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,MAAM;SACnB,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,KAAoB,CAAC;QACjC,OAAO;YACH,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC;IACN,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAgB;IAChE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE1C,6CAA6C;IAC7C,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO;YACH,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC9D,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,4BAA4B,QAAQ,QAAQ;SAC3D,CAAC;IACN,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;YACH,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,4CAA4C;SAC3D,CAAC;IACN,CAAC;IAED,yCAAyC;IACzC,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,IAAI,CAAC;YACD,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9D,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,sCAAsC;aACrD,CAAC;QACN,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,QAAQ,QAAQ,EAAE,CAAC;QACf,KAAK,YAAY;YACb,OAAO,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAE9C,KAAK,YAAY;YACb,OAAO,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAExD,KAAK,QAAQ;YACT,wDAAwD;YACxD,OAAO,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE7C,KAAK,MAAM;YACP,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;QAExC;YACI,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9D,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,oCAAoC,QAAQ,EAAE;aAC7D,CAAC;IACV,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAyB;IAC7D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,0BAA0B,MAAM,CAAC,QAAQ,GAAG,CAAC;IACxD,CAAC;IAED,OAAO,mBAAmB,MAAM,CAAC,QAAQ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;AAClE,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "centaurus-cli",
3
- "version": "2.7.3",
3
+ "version": "2.8.0",
4
4
  "description": "A powerful command-line AI coding assistant with Google Gemini support",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
- "centaurus": "./dist/index.js",
9
- "centaurus-cli": "./dist/index.js"
8
+ "centaurus": "dist/index.js",
9
+ "centaurus-cli": "dist/index.js"
10
10
  },
11
11
  "scripts": {
12
12
  "build": "tsc",
@@ -45,6 +45,7 @@
45
45
  "AUTH_FLOW.md"
46
46
  ],
47
47
  "dependencies": {
48
+ "@homebridge/node-pty-prebuilt-multiarch": "^0.13.1",
48
49
  "@modelcontextprotocol/sdk": "^1.24.2",
49
50
  "@types/node": "^24.7.2",
50
51
  "@types/react": "^18.3.26",