centaurus-cli 2.5.2 → 2.6.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.
- package/dist/cli-adapter.d.ts +6 -0
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +215 -29
- package/dist/cli-adapter.js.map +1 -1
- package/dist/commands/CommandParser.js +2 -2
- package/dist/commands/CommandParser.js.map +1 -1
- package/dist/config/defaultConfig.js +1 -1
- package/dist/config/defaultConfig.js.map +1 -1
- package/dist/config/models.d.ts +50 -5
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +144 -20
- package/dist/config/models.js.map +1 -1
- package/dist/config/types.d.ts +3 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +3 -1
- package/dist/config/types.js.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/services/ai-service-client.d.ts +8 -2
- package/dist/services/ai-service-client.d.ts.map +1 -1
- package/dist/services/ai-service-client.js +2 -1
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/environment-context-injector.d.ts +69 -0
- package/dist/services/environment-context-injector.d.ts.map +1 -0
- package/dist/services/environment-context-injector.js +198 -0
- package/dist/services/environment-context-injector.js.map +1 -0
- package/dist/tools/ToolRegistry.d.ts.map +1 -1
- package/dist/tools/ToolRegistry.js +120 -26
- package/dist/tools/ToolRegistry.js.map +1 -1
- package/dist/tools/command.d.ts.map +1 -1
- package/dist/tools/command.js +30 -6
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/file-ops.d.ts.map +1 -1
- package/dist/tools/file-ops.js +70 -23
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/find-files.d.ts +47 -0
- package/dist/tools/find-files.d.ts.map +1 -0
- package/dist/tools/find-files.js +190 -0
- package/dist/tools/find-files.js.map +1 -0
- package/dist/tools/get-diff.d.ts +45 -0
- package/dist/tools/get-diff.d.ts.map +1 -0
- package/dist/tools/get-diff.js +138 -0
- package/dist/tools/get-diff.js.map +1 -0
- package/dist/tools/grep-search.d.ts +85 -0
- package/dist/tools/grep-search.d.ts.map +1 -0
- package/dist/tools/grep-search.js +497 -0
- package/dist/tools/grep-search.js.map +1 -0
- package/dist/tools/inspect-symbol.d.ts +27 -0
- package/dist/tools/inspect-symbol.d.ts.map +1 -0
- package/dist/tools/inspect-symbol.js +259 -0
- package/dist/tools/inspect-symbol.js.map +1 -0
- package/dist/tools/validation.d.ts +49 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js +125 -0
- package/dist/tools/validation.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/components/App.d.ts +3 -0
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +272 -72
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/ContextWindowIndicator.d.ts +8 -0
- package/dist/ui/components/ContextWindowIndicator.d.ts.map +1 -0
- package/dist/ui/components/ContextWindowIndicator.js +34 -0
- package/dist/ui/components/ContextWindowIndicator.js.map +1 -0
- package/dist/ui/components/FontRecommendation.d.ts +1 -0
- package/dist/ui/components/FontRecommendation.d.ts.map +1 -0
- package/dist/ui/components/FontRecommendation.js +1 -0
- package/dist/ui/components/FontRecommendation.js.map +1 -0
- package/dist/ui/components/InputBox.d.ts +2 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -1
- package/dist/ui/components/InputBox.js +9 -4
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/ui/components/MarkdownRenderer.js +34 -9
- package/dist/ui/components/MarkdownRenderer.js.map +1 -1
- package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/MessageDisplay.js +9 -2
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/StreamingMessageDisplay.js +11 -3
- package/dist/ui/components/StreamingMessageDisplay.js.map +1 -1
- package/dist/ui/components/ThinkingDisplay.d.ts +12 -0
- package/dist/ui/components/ThinkingDisplay.d.ts.map +1 -0
- package/dist/ui/components/ThinkingDisplay.js +41 -0
- package/dist/ui/components/ThinkingDisplay.js.map +1 -0
- package/dist/utils/markdown-parser.d.ts +4 -0
- package/dist/utils/markdown-parser.d.ts.map +1 -1
- package/dist/utils/markdown-parser.js +15 -1
- package/dist/utils/markdown-parser.js.map +1 -1
- package/dist/utils/version-checker.d.ts.map +1 -1
- package/dist/utils/version-checker.js +3 -31
- package/dist/utils/version-checker.js.map +1 -1
- package/package.json +6 -5
- package/README.md +0 -501
- package/dist/ai/provider-factory.d.ts +0 -6
- package/dist/ai/provider-factory.d.ts.map +0 -1
- package/dist/ai/provider-factory.js +0 -27
- package/dist/ai/provider-factory.js.map +0 -1
- package/dist/ai/providers/base.d.ts +0 -25
- package/dist/ai/providers/base.d.ts.map +0 -1
- package/dist/ai/providers/base.js +0 -9
- package/dist/ai/providers/base.js.map +0 -1
- package/dist/ai/providers/gemini.d.ts +0 -34
- package/dist/ai/providers/gemini.d.ts.map +0 -1
- package/dist/ai/providers/gemini.js +0 -146
- package/dist/ai/providers/gemini.js.map +0 -1
- package/dist/commands/view-duplication-logs.d.ts +0 -5
- package/dist/commands/view-duplication-logs.d.ts.map +0 -1
- package/dist/commands/view-duplication-logs.js +0 -14
- package/dist/commands/view-duplication-logs.js.map +0 -1
- package/dist/context/__tests__/command-detector.test.d.ts +0 -14
- package/dist/context/__tests__/command-detector.test.d.ts.map +0 -1
- package/dist/context/__tests__/command-detector.test.js +0 -318
- package/dist/context/__tests__/command-detector.test.js.map +0 -1
- package/dist/context/__tests__/context-manager.test.d.ts +0 -16
- package/dist/context/__tests__/context-manager.test.d.ts.map +0 -1
- package/dist/context/__tests__/context-manager.test.js +0 -375
- package/dist/context/__tests__/context-manager.test.js.map +0 -1
- package/dist/context/__tests__/error-handling.test.d.ts +0 -15
- package/dist/context/__tests__/error-handling.test.d.ts.map +0 -1
- package/dist/context/__tests__/error-handling.test.js +0 -447
- package/dist/context/__tests__/error-handling.test.js.map +0 -1
- package/dist/context/handlers/__tests__/docker-handler.test.d.ts +0 -13
- package/dist/context/handlers/__tests__/docker-handler.test.d.ts.map +0 -1
- package/dist/context/handlers/__tests__/docker-handler.test.js +0 -285
- package/dist/context/handlers/__tests__/docker-handler.test.js.map +0 -1
- package/dist/context/handlers/__tests__/ssh-handler.test.d.ts +0 -13
- package/dist/context/handlers/__tests__/ssh-handler.test.d.ts.map +0 -1
- package/dist/context/handlers/__tests__/ssh-handler.test.js +0 -251
- package/dist/context/handlers/__tests__/ssh-handler.test.js.map +0 -1
- package/dist/context/handlers/__tests__/wsl-handler.test.d.ts +0 -7
- package/dist/context/handlers/__tests__/wsl-handler.test.d.ts.map +0 -1
- package/dist/context/handlers/__tests__/wsl-handler.test.js +0 -331
- package/dist/context/handlers/__tests__/wsl-handler.test.js.map +0 -1
- package/dist/index-custom.d.ts +0 -3
- package/dist/index-custom.d.ts.map +0 -1
- package/dist/index-custom.js +0 -65
- package/dist/index-custom.js.map +0 -1
- package/dist/prompts/system-prompt.d.ts +0 -47
- package/dist/prompts/system-prompt.d.ts.map +0 -1
- package/dist/prompts/system-prompt.js +0 -377
- package/dist/prompts/system-prompt.js.map +0 -1
- package/dist/providers/GoogleProvider.d.ts +0 -26
- package/dist/providers/GoogleProvider.d.ts.map +0 -1
- package/dist/providers/GoogleProvider.js +0 -313
- package/dist/providers/GoogleProvider.js.map +0 -1
- package/dist/providers/Provider.d.ts +0 -114
- package/dist/providers/Provider.d.ts.map +0 -1
- package/dist/providers/Provider.js +0 -44
- package/dist/providers/Provider.js.map +0 -1
- package/dist/services/__tests__/ai-context-injector.test.d.ts +0 -15
- package/dist/services/__tests__/ai-context-injector.test.d.ts.map +0 -1
- package/dist/services/__tests__/ai-context-injector.test.js +0 -326
- package/dist/services/__tests__/ai-context-injector.test.js.map +0 -1
- package/dist/src/context/types.js +0 -27
- package/dist/src/services/ai-context-injector.js +0 -96
- package/dist/src/services/ai-service-client.js +0 -270
- package/dist/src/services/api-client.js +0 -349
- package/dist/src/tools/types.js +0 -1
- package/dist/src/types/index.js +0 -1
- package/dist/test/context/types.js +0 -27
- package/dist/test/services/__tests__/ai-context-injector.test.js +0 -325
- package/dist/test/services/ai-context-injector.js +0 -96
- package/dist/test/services/ai-service-client.js +0 -270
- package/dist/test/services/api-client.js +0 -349
- package/dist/test/tools/types.js +0 -1
- package/dist/test/types/index.js +0 -1
- package/dist/test-ai-context-injector.js +0 -97
- package/dist/tests/automated-verification.d.ts +0 -27
- package/dist/tests/automated-verification.d.ts.map +0 -1
- package/dist/tests/automated-verification.js +0 -359
- package/dist/tests/automated-verification.js.map +0 -1
- package/dist/tests/integration-tests.d.ts +0 -50
- package/dist/tests/integration-tests.d.ts.map +0 -1
- package/dist/tests/integration-tests.js +0 -648
- package/dist/tests/integration-tests.js.map +0 -1
- package/dist/tools/file-ops-test.d.ts +0 -6
- package/dist/tools/file-ops-test.d.ts.map +0 -1
- package/dist/tools/file-ops-test.js +0 -197
- package/dist/tools/file-ops-test.js.map +0 -1
- package/dist/ui/DisplayHistory.d.ts +0 -53
- package/dist/ui/DisplayHistory.d.ts.map +0 -1
- package/dist/ui/DisplayHistory.js +0 -82
- package/dist/ui/DisplayHistory.js.map +0 -1
- package/dist/ui/clack-ui.d.ts +0 -83
- package/dist/ui/clack-ui.d.ts.map +0 -1
- package/dist/ui/clack-ui.js +0 -304
- package/dist/ui/clack-ui.js.map +0 -1
- package/dist/ui/components/DisplayItemRenderer.d.ts +0 -18
- package/dist/ui/components/DisplayItemRenderer.d.ts.map +0 -1
- package/dist/ui/components/DisplayItemRenderer.js +0 -53
- package/dist/ui/components/DisplayItemRenderer.js.map +0 -1
- package/dist/ui/components/DynamicMessage.d.ts +0 -13
- package/dist/ui/components/DynamicMessage.d.ts.map +0 -1
- package/dist/ui/components/DynamicMessage.js +0 -27
- package/dist/ui/components/DynamicMessage.js.map +0 -1
- package/dist/ui/components/FileViewerScreen.d.ts +0 -14
- package/dist/ui/components/FileViewerScreen.d.ts.map +0 -1
- package/dist/ui/components/FileViewerScreen.js +0 -74
- package/dist/ui/components/FileViewerScreen.js.map +0 -1
- package/dist/ui/components/ScrollableContent.d.ts +0 -7
- package/dist/ui/components/ScrollableContent.d.ts.map +0 -1
- package/dist/ui/components/ScrollableContent.js +0 -6
- package/dist/ui/components/ScrollableContent.js.map +0 -1
- package/dist/ui/components/ScrollableMessageList.d.ts +0 -10
- package/dist/ui/components/ScrollableMessageList.d.ts.map +0 -1
- package/dist/ui/components/ScrollableMessageList.js +0 -133
- package/dist/ui/components/ScrollableMessageList.js.map +0 -1
- package/dist/ui/components/ScrollableScreen.d.ts +0 -9
- package/dist/ui/components/ScrollableScreen.d.ts.map +0 -1
- package/dist/ui/components/ScrollableScreen.js +0 -22
- package/dist/ui/components/ScrollableScreen.js.map +0 -1
- package/dist/ui/components/StaticMessageHistory.d.ts +0 -14
- package/dist/ui/components/StaticMessageHistory.d.ts.map +0 -1
- package/dist/ui/components/StaticMessageHistory.js +0 -19
- package/dist/ui/components/StaticMessageHistory.js.map +0 -1
- package/dist/ui/components/code-block.d.ts +0 -10
- package/dist/ui/components/code-block.d.ts.map +0 -1
- package/dist/ui/components/code-block.js +0 -74
- package/dist/ui/components/code-block.js.map +0 -1
- package/dist/ui/components/confirm-prompt.d.ts +0 -12
- package/dist/ui/components/confirm-prompt.d.ts.map +0 -1
- package/dist/ui/components/confirm-prompt.js +0 -104
- package/dist/ui/components/confirm-prompt.js.map +0 -1
- package/dist/ui/components/diff-viewer.d.ts +0 -9
- package/dist/ui/components/diff-viewer.d.ts.map +0 -1
- package/dist/ui/components/diff-viewer.js +0 -57
- package/dist/ui/components/diff-viewer.js.map +0 -1
- package/dist/ui/components/input-box.d.ts +0 -18
- package/dist/ui/components/input-box.d.ts.map +0 -1
- package/dist/ui/components/input-box.js +0 -157
- package/dist/ui/components/input-box.js.map +0 -1
- package/dist/ui/components/keyboard-help.d.ts +0 -7
- package/dist/ui/components/keyboard-help.d.ts.map +0 -1
- package/dist/ui/components/keyboard-help.js +0 -43
- package/dist/ui/components/keyboard-help.js.map +0 -1
- package/dist/ui/components/loading-indicator.d.ts +0 -3
- package/dist/ui/components/loading-indicator.d.ts.map +0 -1
- package/dist/ui/components/loading-indicator.js +0 -42
- package/dist/ui/components/loading-indicator.js.map +0 -1
- package/dist/ui/components/message-display.d.ts +0 -7
- package/dist/ui/components/message-display.d.ts.map +0 -1
- package/dist/ui/components/message-display.js +0 -104
- package/dist/ui/components/message-display.js.map +0 -1
- package/dist/ui/components/misc.d.ts +0 -28
- package/dist/ui/components/misc.d.ts.map +0 -1
- package/dist/ui/components/misc.js +0 -128
- package/dist/ui/components/misc.js.map +0 -1
- package/dist/ui/components/select-prompt.d.ts +0 -13
- package/dist/ui/components/select-prompt.d.ts.map +0 -1
- package/dist/ui/components/select-prompt.js +0 -42
- package/dist/ui/components/select-prompt.js.map +0 -1
- package/dist/ui/components/status-bar.d.ts +0 -11
- package/dist/ui/components/status-bar.d.ts.map +0 -1
- package/dist/ui/components/status-bar.js +0 -47
- package/dist/ui/components/status-bar.js.map +0 -1
- package/dist/ui/components/tool-execution.d.ts +0 -3
- package/dist/ui/components/tool-execution.d.ts.map +0 -1
- package/dist/ui/components/tool-execution.js +0 -374
- package/dist/ui/components/tool-execution.js.map +0 -1
- package/dist/ui/components/tool-result.d.ts +0 -11
- package/dist/ui/components/tool-result.d.ts.map +0 -1
- package/dist/ui/components/tool-result.js +0 -58
- package/dist/ui/components/tool-result.js.map +0 -1
- package/dist/ui/components/welcome-banner.d.ts +0 -3
- package/dist/ui/components/welcome-banner.d.ts.map +0 -1
- package/dist/ui/components/welcome-banner.js +0 -46
- package/dist/ui/components/welcome-banner.js.map +0 -1
- package/dist/ui/hooks/useDisplayHistory.d.ts +0 -13
- package/dist/ui/hooks/useDisplayHistory.d.ts.map +0 -1
- package/dist/ui/hooks/useDisplayHistory.js +0 -45
- package/dist/ui/hooks/useDisplayHistory.js.map +0 -1
- package/dist/ui/render-engine.d.ts +0 -69
- package/dist/ui/render-engine.d.ts.map +0 -1
- package/dist/ui/render-engine.js +0 -197
- package/dist/ui/render-engine.js.map +0 -1
- package/dist/ui/terminal/TerminalRenderer.d.ts +0 -84
- package/dist/ui/terminal/TerminalRenderer.d.ts.map +0 -1
- package/dist/ui/terminal/TerminalRenderer.js +0 -154
- package/dist/ui/terminal/TerminalRenderer.js.map +0 -1
- package/dist/ui/terminal/TerminalUI.d.ts +0 -139
- package/dist/ui/terminal/TerminalUI.d.ts.map +0 -1
- package/dist/ui/terminal/TerminalUI.js +0 -430
- package/dist/ui/terminal/TerminalUI.js.map +0 -1
- package/dist/ui/terminal/VirtualChatBuffer.d.ts +0 -32
- package/dist/ui/terminal/VirtualChatBuffer.d.ts.map +0 -1
- package/dist/ui/terminal/VirtualChatBuffer.js +0 -37
- package/dist/ui/terminal/VirtualChatBuffer.js.map +0 -1
- package/dist/ui/terminal-kit-base.d.ts +0 -117
- package/dist/ui/terminal-kit-base.d.ts.map +0 -1
- package/dist/ui/terminal-kit-base.js +0 -188
- package/dist/ui/terminal-kit-base.js.map +0 -1
- package/dist/ui/utils/duplication-detector.d.ts +0 -32
- package/dist/ui/utils/duplication-detector.d.ts.map +0 -1
- package/dist/ui/utils/duplication-detector.js +0 -227
- package/dist/ui/utils/duplication-detector.js.map +0 -1
- package/dist/ui/utils/duplication-logger.d.ts +0 -21
- package/dist/ui/utils/duplication-logger.d.ts.map +0 -1
- package/dist/ui/utils/duplication-logger.js +0 -85
- package/dist/ui/utils/duplication-logger.js.map +0 -1
- package/dist/ui/utils/terminal-scanner.d.ts +0 -19
- package/dist/ui/utils/terminal-scanner.d.ts.map +0 -1
- package/dist/ui/utils/terminal-scanner.js +0 -217
- package/dist/ui/utils/terminal-scanner.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -3
- package/dist/version.js.map +0 -1
- package/scripts/generate-version.js +0 -25
|
@@ -1,359 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Automated Functionality Verification Tests
|
|
3
|
-
*
|
|
4
|
-
* This script tests core functionality of Centaurus CLI to ensure
|
|
5
|
-
* all features work correctly after the UI rendering refactor.
|
|
6
|
-
*/
|
|
7
|
-
import { CentaurusCLI } from '../cli-adapter.js';
|
|
8
|
-
import * as fs from 'fs';
|
|
9
|
-
import * as path from 'path';
|
|
10
|
-
class TestRunner {
|
|
11
|
-
results = [];
|
|
12
|
-
cli;
|
|
13
|
-
testDir;
|
|
14
|
-
constructor() {
|
|
15
|
-
this.cli = new CentaurusCLI();
|
|
16
|
-
this.testDir = path.join(process.cwd(), 'test-temp');
|
|
17
|
-
}
|
|
18
|
-
async setup() {
|
|
19
|
-
console.log('🔧 Setting up test environment...\n');
|
|
20
|
-
// Create test directory
|
|
21
|
-
if (!fs.existsSync(this.testDir)) {
|
|
22
|
-
fs.mkdirSync(this.testDir, { recursive: true });
|
|
23
|
-
}
|
|
24
|
-
// Initialize CLI
|
|
25
|
-
await this.cli.initialize();
|
|
26
|
-
console.log('✅ Test environment ready\n');
|
|
27
|
-
}
|
|
28
|
-
async cleanup() {
|
|
29
|
-
console.log('\n🧹 Cleaning up test environment...');
|
|
30
|
-
// Remove test directory
|
|
31
|
-
if (fs.existsSync(this.testDir)) {
|
|
32
|
-
fs.rmSync(this.testDir, { recursive: true, force: true });
|
|
33
|
-
}
|
|
34
|
-
console.log('✅ Cleanup complete\n');
|
|
35
|
-
}
|
|
36
|
-
async runTest(name, testFn) {
|
|
37
|
-
const startTime = Date.now();
|
|
38
|
-
try {
|
|
39
|
-
await testFn();
|
|
40
|
-
const duration = Date.now() - startTime;
|
|
41
|
-
this.results.push({ name, passed: true, duration });
|
|
42
|
-
console.log(`✅ ${name} (${duration}ms)`);
|
|
43
|
-
}
|
|
44
|
-
catch (error) {
|
|
45
|
-
const duration = Date.now() - startTime;
|
|
46
|
-
this.results.push({ name, passed: false, error: error.message, duration });
|
|
47
|
-
console.log(`❌ ${name} (${duration}ms)`);
|
|
48
|
-
console.log(` Error: ${error.message}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
printSummary() {
|
|
52
|
-
console.log('\n' + '='.repeat(60));
|
|
53
|
-
console.log('TEST SUMMARY');
|
|
54
|
-
console.log('='.repeat(60) + '\n');
|
|
55
|
-
const passed = this.results.filter(r => r.passed).length;
|
|
56
|
-
const failed = this.results.filter(r => !r.passed).length;
|
|
57
|
-
const total = this.results.length;
|
|
58
|
-
const passRate = ((passed / total) * 100).toFixed(1);
|
|
59
|
-
console.log(`Total Tests: ${total}`);
|
|
60
|
-
console.log(`Passed: ${passed}`);
|
|
61
|
-
console.log(`Failed: ${failed}`);
|
|
62
|
-
console.log(`Pass Rate: ${passRate}%\n`);
|
|
63
|
-
if (failed > 0) {
|
|
64
|
-
console.log('Failed Tests:');
|
|
65
|
-
this.results
|
|
66
|
-
.filter(r => !r.passed)
|
|
67
|
-
.forEach(r => {
|
|
68
|
-
console.log(` - ${r.name}`);
|
|
69
|
-
console.log(` ${r.error}`);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
console.log('\n' + '='.repeat(60) + '\n');
|
|
73
|
-
}
|
|
74
|
-
// Test: Slash command handling
|
|
75
|
-
async testSlashCommands() {
|
|
76
|
-
let responseReceived = false;
|
|
77
|
-
let responseMessage = '';
|
|
78
|
-
this.cli.setOnResponseCallback((message) => {
|
|
79
|
-
responseReceived = true;
|
|
80
|
-
responseMessage = message;
|
|
81
|
-
});
|
|
82
|
-
// Test /help command
|
|
83
|
-
await this.runTest('Slash Command: /help', async () => {
|
|
84
|
-
responseReceived = false;
|
|
85
|
-
await this.cli.handleMessage('/help');
|
|
86
|
-
if (!responseReceived) {
|
|
87
|
-
throw new Error('No response received for /help command');
|
|
88
|
-
}
|
|
89
|
-
if (!responseMessage.includes('Available Commands')) {
|
|
90
|
-
throw new Error('Help message does not contain expected content');
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
// Test /config command
|
|
94
|
-
await this.runTest('Slash Command: /config', async () => {
|
|
95
|
-
responseReceived = false;
|
|
96
|
-
await this.cli.handleMessage('/config');
|
|
97
|
-
if (!responseReceived) {
|
|
98
|
-
throw new Error('No response received for /config command');
|
|
99
|
-
}
|
|
100
|
-
if (!responseMessage.includes('Current Configuration')) {
|
|
101
|
-
throw new Error('Config message does not contain expected content');
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
// Test /clear command
|
|
105
|
-
await this.runTest('Slash Command: /clear', async () => {
|
|
106
|
-
responseReceived = false;
|
|
107
|
-
await this.cli.handleMessage('/clear');
|
|
108
|
-
if (!responseReceived) {
|
|
109
|
-
throw new Error('No response received for /clear command');
|
|
110
|
-
}
|
|
111
|
-
if (!responseMessage.includes('cleared')) {
|
|
112
|
-
throw new Error('Clear message does not contain expected content');
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
// Test /plan command
|
|
116
|
-
await this.runTest('Slash Command: /plan', async () => {
|
|
117
|
-
responseReceived = false;
|
|
118
|
-
await this.cli.handleMessage('/plan');
|
|
119
|
-
if (!responseReceived) {
|
|
120
|
-
throw new Error('No response received for /plan command');
|
|
121
|
-
}
|
|
122
|
-
if (!responseMessage.includes('Plan mode')) {
|
|
123
|
-
throw new Error('Plan message does not contain expected content');
|
|
124
|
-
}
|
|
125
|
-
const planMode = this.cli.getPlanMode();
|
|
126
|
-
if (!planMode) {
|
|
127
|
-
throw new Error('Plan mode was not enabled');
|
|
128
|
-
}
|
|
129
|
-
// Toggle back off
|
|
130
|
-
await this.cli.handleMessage('/plan');
|
|
131
|
-
});
|
|
132
|
-
// Test /model command with direct argument
|
|
133
|
-
await this.runTest('Slash Command: /model <name>', async () => {
|
|
134
|
-
responseReceived = false;
|
|
135
|
-
await this.cli.handleMessage('/model gemini-2.0-flash-exp');
|
|
136
|
-
if (!responseReceived) {
|
|
137
|
-
throw new Error('No response received for /model command');
|
|
138
|
-
}
|
|
139
|
-
if (!responseMessage.includes('Model changed')) {
|
|
140
|
-
throw new Error('Model change message does not contain expected content');
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
// Test invalid command
|
|
144
|
-
await this.runTest('Slash Command: Invalid command', async () => {
|
|
145
|
-
responseReceived = false;
|
|
146
|
-
await this.cli.handleMessage('/invalid');
|
|
147
|
-
if (!responseReceived) {
|
|
148
|
-
throw new Error('No response received for invalid command');
|
|
149
|
-
}
|
|
150
|
-
if (!responseMessage.includes('Unknown command')) {
|
|
151
|
-
throw new Error('Error message does not contain expected content');
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
// Test: Tool registry
|
|
156
|
-
async testToolRegistry() {
|
|
157
|
-
await this.runTest('Tool Registry: All tools registered', async () => {
|
|
158
|
-
const tools = [
|
|
159
|
-
'read_file',
|
|
160
|
-
'write_file',
|
|
161
|
-
'edit_file',
|
|
162
|
-
'list_directory',
|
|
163
|
-
'execute_command',
|
|
164
|
-
'grep_search',
|
|
165
|
-
'web_search',
|
|
166
|
-
'fetch_url'
|
|
167
|
-
];
|
|
168
|
-
// We can't directly access the registry, but we can verify
|
|
169
|
-
// the tools are imported and available
|
|
170
|
-
// This is a basic check that the module structure is correct
|
|
171
|
-
const toolModules = [
|
|
172
|
-
'tools/file-ops.js',
|
|
173
|
-
'tools/command.js',
|
|
174
|
-
'tools/web-search.js'
|
|
175
|
-
];
|
|
176
|
-
for (const modulePath of toolModules) {
|
|
177
|
-
const fullPath = path.resolve(process.cwd(), 'dist', modulePath);
|
|
178
|
-
if (!fs.existsSync(fullPath)) {
|
|
179
|
-
throw new Error(`Tool module not found: ${modulePath}`);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
// Test: Streaming callbacks
|
|
185
|
-
async testStreamingCallbacks() {
|
|
186
|
-
await this.runTest('Streaming: Callback registration', async () => {
|
|
187
|
-
let streamStarted = false;
|
|
188
|
-
let chunkReceived = false;
|
|
189
|
-
let streamCompleted = false;
|
|
190
|
-
this.cli.setOnStreamStart((messageId) => {
|
|
191
|
-
streamStarted = true;
|
|
192
|
-
});
|
|
193
|
-
this.cli.setOnStreamChunk((messageId, chunk) => {
|
|
194
|
-
chunkReceived = true;
|
|
195
|
-
});
|
|
196
|
-
this.cli.setOnStreamComplete((messageId) => {
|
|
197
|
-
streamCompleted = true;
|
|
198
|
-
});
|
|
199
|
-
// Verify callbacks are registered (they should not throw)
|
|
200
|
-
// Actual streaming would require AI provider interaction
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
// Test: Tool execution callbacks
|
|
204
|
-
async testToolExecutionCallbacks() {
|
|
205
|
-
await this.runTest('Tool Execution: Callback registration', async () => {
|
|
206
|
-
let toolUpdateReceived = false;
|
|
207
|
-
this.cli.setOnToolExecutionUpdate((update) => {
|
|
208
|
-
toolUpdateReceived = true;
|
|
209
|
-
});
|
|
210
|
-
// Verify callback is registered
|
|
211
|
-
// Actual tool execution would require AI provider interaction
|
|
212
|
-
});
|
|
213
|
-
await this.runTest('Tool Approval: Callback registration', async () => {
|
|
214
|
-
let approvalRequested = false;
|
|
215
|
-
this.cli.setOnToolApprovalRequest(async (request) => {
|
|
216
|
-
approvalRequested = true;
|
|
217
|
-
return true; // Auto-approve for testing
|
|
218
|
-
});
|
|
219
|
-
// Verify callback is registered
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
// Test: Configuration management
|
|
223
|
-
async testConfiguration() {
|
|
224
|
-
await this.runTest('Configuration: Get model', async () => {
|
|
225
|
-
const model = this.cli.getModel();
|
|
226
|
-
if (!model) {
|
|
227
|
-
throw new Error('Model is not set');
|
|
228
|
-
}
|
|
229
|
-
if (typeof model !== 'string') {
|
|
230
|
-
throw new Error('Model is not a string');
|
|
231
|
-
}
|
|
232
|
-
});
|
|
233
|
-
await this.runTest('Configuration: Get plan mode', async () => {
|
|
234
|
-
const planMode = this.cli.getPlanMode();
|
|
235
|
-
if (typeof planMode !== 'boolean') {
|
|
236
|
-
throw new Error('Plan mode is not a boolean');
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
// Test: Picker callbacks
|
|
241
|
-
async testPickerCallbacks() {
|
|
242
|
-
await this.runTest('Picker: Model selection callback', async () => {
|
|
243
|
-
let pickerShown = false;
|
|
244
|
-
this.cli.setOnShowPickerCallback((options) => {
|
|
245
|
-
pickerShown = true;
|
|
246
|
-
if (options.type !== 'model' && options.type !== 'provider') {
|
|
247
|
-
throw new Error('Invalid picker type');
|
|
248
|
-
}
|
|
249
|
-
if (!Array.isArray(options.choices)) {
|
|
250
|
-
throw new Error('Choices is not an array');
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
// Trigger model picker
|
|
254
|
-
await this.cli.handleMessage('/model');
|
|
255
|
-
if (!pickerShown) {
|
|
256
|
-
throw new Error('Picker was not shown');
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
await this.runTest('Picker: Provider selection callback', async () => {
|
|
260
|
-
let pickerShown = false;
|
|
261
|
-
this.cli.setOnShowPickerCallback((options) => {
|
|
262
|
-
pickerShown = true;
|
|
263
|
-
});
|
|
264
|
-
// Trigger provider picker
|
|
265
|
-
await this.cli.handleMessage('/provider');
|
|
266
|
-
if (!pickerShown) {
|
|
267
|
-
throw new Error('Picker was not shown');
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
await this.runTest('Picker: Handle selection', async () => {
|
|
271
|
-
let responseReceived = false;
|
|
272
|
-
this.cli.setOnResponseCallback((message) => {
|
|
273
|
-
responseReceived = true;
|
|
274
|
-
});
|
|
275
|
-
// Simulate picker selection
|
|
276
|
-
await this.cli.handlePickerSelection('gemini-2.0-flash-exp', 'model');
|
|
277
|
-
if (!responseReceived) {
|
|
278
|
-
throw new Error('No response received after picker selection');
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
// Test: Plan mode callbacks
|
|
283
|
-
async testPlanModeCallbacks() {
|
|
284
|
-
await this.runTest('Plan Mode: Change callback', async () => {
|
|
285
|
-
let planModeChanged = false;
|
|
286
|
-
let newPlanMode = false;
|
|
287
|
-
this.cli.setOnPlanModeChange((planMode) => {
|
|
288
|
-
planModeChanged = true;
|
|
289
|
-
newPlanMode = planMode;
|
|
290
|
-
});
|
|
291
|
-
// Toggle plan mode
|
|
292
|
-
await this.cli.handleMessage('/plan');
|
|
293
|
-
if (!planModeChanged) {
|
|
294
|
-
throw new Error('Plan mode change callback was not called');
|
|
295
|
-
}
|
|
296
|
-
// Toggle back
|
|
297
|
-
await this.cli.handleMessage('/plan');
|
|
298
|
-
});
|
|
299
|
-
await this.runTest('Plan Mode: Approval callback registration', async () => {
|
|
300
|
-
let approvalRequested = false;
|
|
301
|
-
this.cli.setOnPlanApprovalRequest(async (plan) => {
|
|
302
|
-
approvalRequested = true;
|
|
303
|
-
return true; // Auto-approve for testing
|
|
304
|
-
});
|
|
305
|
-
// Verify callback is registered
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
// Test: File operations
|
|
309
|
-
async testFileOperations() {
|
|
310
|
-
const testFile = path.join(this.testDir, 'test.txt');
|
|
311
|
-
const testContent = 'Test content for verification';
|
|
312
|
-
await this.runTest('File Operations: Create test file', async () => {
|
|
313
|
-
fs.writeFileSync(testFile, testContent);
|
|
314
|
-
if (!fs.existsSync(testFile)) {
|
|
315
|
-
throw new Error('Test file was not created');
|
|
316
|
-
}
|
|
317
|
-
});
|
|
318
|
-
await this.runTest('File Operations: Read test file', async () => {
|
|
319
|
-
const content = fs.readFileSync(testFile, 'utf-8');
|
|
320
|
-
if (content !== testContent) {
|
|
321
|
-
throw new Error('File content does not match');
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
await this.runTest('File Operations: Delete test file', async () => {
|
|
325
|
-
fs.unlinkSync(testFile);
|
|
326
|
-
if (fs.existsSync(testFile)) {
|
|
327
|
-
throw new Error('Test file was not deleted');
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
async runAllTests() {
|
|
332
|
-
console.log('🚀 Starting Automated Functionality Verification Tests\n');
|
|
333
|
-
console.log('='.repeat(60) + '\n');
|
|
334
|
-
await this.setup();
|
|
335
|
-
console.log('📋 Running Tests...\n');
|
|
336
|
-
// Run all test suites
|
|
337
|
-
await this.testSlashCommands();
|
|
338
|
-
await this.testToolRegistry();
|
|
339
|
-
await this.testStreamingCallbacks();
|
|
340
|
-
await this.testToolExecutionCallbacks();
|
|
341
|
-
await this.testConfiguration();
|
|
342
|
-
await this.testPickerCallbacks();
|
|
343
|
-
await this.testPlanModeCallbacks();
|
|
344
|
-
await this.testFileOperations();
|
|
345
|
-
await this.cleanup();
|
|
346
|
-
this.printSummary();
|
|
347
|
-
// Exit with appropriate code
|
|
348
|
-
const failed = this.results.filter(r => !r.passed).length;
|
|
349
|
-
process.exit(failed > 0 ? 1 : 0);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
// Run tests if this file is executed directly
|
|
353
|
-
const runner = new TestRunner();
|
|
354
|
-
runner.runAllTests().catch((error) => {
|
|
355
|
-
console.error('❌ Test runner failed:', error);
|
|
356
|
-
process.exit(1);
|
|
357
|
-
});
|
|
358
|
-
export { TestRunner };
|
|
359
|
-
//# sourceMappingURL=automated-verification.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"automated-verification.js","sourceRoot":"","sources":["../../src/tests/automated-verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Integration Tests for UI Rendering Refactor
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive tests for:
|
|
5
|
-
* - Complete conversation flows
|
|
6
|
-
* - Approval and modal flows
|
|
7
|
-
* - Error scenarios
|
|
8
|
-
* - Performance testing
|
|
9
|
-
*/
|
|
10
|
-
declare class IntegrationTestRunner {
|
|
11
|
-
private results;
|
|
12
|
-
private cli;
|
|
13
|
-
private testDir;
|
|
14
|
-
private conversationHistory;
|
|
15
|
-
private streamingMessages;
|
|
16
|
-
private toolExecutions;
|
|
17
|
-
private duplicateDetector;
|
|
18
|
-
constructor();
|
|
19
|
-
setup(): Promise<void>;
|
|
20
|
-
private setupCallbacks;
|
|
21
|
-
private trackMessage;
|
|
22
|
-
private checkForDuplicates;
|
|
23
|
-
cleanup(): Promise<void>;
|
|
24
|
-
runTest(name: string, testFn: () => Promise<void>): Promise<void>;
|
|
25
|
-
printSummary(): void;
|
|
26
|
-
testUserMessageFlow(): Promise<void>;
|
|
27
|
-
testStreamingResponseFlow(): Promise<void>;
|
|
28
|
-
testToolExecutionFlow(): Promise<void>;
|
|
29
|
-
testRapidMessageSending(): Promise<void>;
|
|
30
|
-
testLongConversation(): Promise<void>;
|
|
31
|
-
testCompleteConversationFlows(): Promise<void>;
|
|
32
|
-
testApprovalPromptDisplay(): Promise<void>;
|
|
33
|
-
testPreviewContentDisplay(): Promise<void>;
|
|
34
|
-
testAutoAcceptModeBypass(): Promise<void>;
|
|
35
|
-
testPlanApprovalFlow(): Promise<void>;
|
|
36
|
-
testApprovalAndModalFlows(): Promise<void>;
|
|
37
|
-
testStreamingInterruption(): Promise<void>;
|
|
38
|
-
testToolExecutionFailure(): Promise<void>;
|
|
39
|
-
testNetworkError(): Promise<void>;
|
|
40
|
-
testErrorMessageNoDuplication(): Promise<void>;
|
|
41
|
-
testErrorScenarios(): Promise<void>;
|
|
42
|
-
testLargeConversationPerformance(): Promise<void>;
|
|
43
|
-
testResponsiveInput(): Promise<void>;
|
|
44
|
-
testMemoryUsage(): Promise<void>;
|
|
45
|
-
testRerenderFrequency(): Promise<void>;
|
|
46
|
-
testPerformance(): Promise<void>;
|
|
47
|
-
runAllTests(): Promise<void>;
|
|
48
|
-
}
|
|
49
|
-
export { IntegrationTestRunner };
|
|
50
|
-
//# sourceMappingURL=integration-tests.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration-tests.d.ts","sourceRoot":"","sources":["../../src/tests/integration-tests.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,cAAM,qBAAqB;IACzB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,iBAAiB,CAAkC;;IAOrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB5B,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,kBAAkB;IAUpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BvE,YAAY,IAAI,IAAI;IAgCd,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBpC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C1C,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CtC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBxC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BrC,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9C,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiC1C,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B1C,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBzC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCrC,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAa1C,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC1C,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAkDzC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB9C,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAanC,gCAAgC,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCjD,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCpC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBhC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCtC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAahC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BnC;AASD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|