erosolar-cli 1.3.6 → 1.3.9
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/StringUtils.d.ts +8 -0
- package/dist/StringUtils.d.ts.map +1 -0
- package/dist/StringUtils.js +11 -0
- package/dist/StringUtils.js.map +1 -0
- package/dist/alpha-zero/index.d.ts +1 -1
- package/dist/alpha-zero/index.js +1 -1
- package/dist/capabilities/index.d.ts +1 -1
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +1 -1
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/skillCapability.d.ts +2 -6
- package/dist/capabilities/skillCapability.d.ts.map +1 -1
- package/dist/capabilities/skillCapability.js +70 -20
- package/dist/capabilities/skillCapability.js.map +1 -1
- package/dist/core/agent.d.ts +16 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +171 -54
- package/dist/core/agent.js.map +1 -1
- package/dist/core/contextManager.js +6 -6
- package/dist/core/contextManager.js.map +1 -1
- package/dist/core/contextWindow.d.ts +6 -0
- package/dist/core/contextWindow.d.ts.map +1 -1
- package/dist/core/contextWindow.js +12 -4
- package/dist/core/contextWindow.js.map +1 -1
- package/dist/plugins/tools/skills/skillPlugin.js +2 -2
- package/dist/plugins/tools/skills/skillPlugin.js.map +1 -1
- package/dist/shell/interactiveShell.d.ts +19 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +178 -1
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/skills/skillRepository.d.ts +99 -23
- package/dist/skills/skillRepository.d.ts.map +1 -1
- package/dist/skills/skillRepository.js +213 -329
- package/dist/skills/skillRepository.js.map +1 -1
- package/dist/tools/skillTools.d.ts.map +1 -1
- package/dist/tools/skillTools.js +24 -62
- package/dist/tools/skillTools.js.map +1 -1
- package/package.json +21 -5
- package/scripts/ai-code-reviewer.mjs +343 -0
- package/scripts/code-intelligence-enhancer.mjs +415 -0
- package/scripts/dev-productivity-booster.mjs +342 -0
- package/dist/ui/advancedPrompt.d.ts +0 -58
- package/dist/ui/advancedPrompt.d.ts.map +0 -1
- package/dist/ui/advancedPrompt.js +0 -219
- package/dist/ui/advancedPrompt.js.map +0 -1
- package/dist/ui/overlay/OverlayManager.d.ts +0 -105
- package/dist/ui/overlay/OverlayManager.d.ts.map +0 -1
- package/dist/ui/overlay/OverlayManager.js +0 -291
- package/dist/ui/overlay/OverlayManager.js.map +0 -1
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Development Productivity Booster
|
|
5
|
+
*
|
|
6
|
+
* Enhances developer workflow with intelligent automation,
|
|
7
|
+
* code generation, and productivity tools.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Automated code scaffolding
|
|
11
|
+
* - Intelligent file generation
|
|
12
|
+
* - Development workflow optimization
|
|
13
|
+
* - Code snippet library
|
|
14
|
+
* - Project template management
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
18
|
+
import { join, dirname, basename } from 'path';
|
|
19
|
+
import { fileURLToPath } from 'url';
|
|
20
|
+
|
|
21
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
22
|
+
const __dirname = dirname(__filename);
|
|
23
|
+
|
|
24
|
+
class DevProductivityBooster {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.projectRoot = join(__dirname, '..');
|
|
27
|
+
this.templates = this.loadTemplates();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
loadTemplates() {
|
|
31
|
+
return {
|
|
32
|
+
'component': `/**
|
|
33
|
+
* Component Template
|
|
34
|
+
*
|
|
35
|
+
* Auto-generated component with TypeScript and best practices
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
export interface {{name}}Props {
|
|
39
|
+
// Component props interface
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export const {{name}} = (props: {{name}}Props) => {
|
|
43
|
+
return (
|
|
44
|
+
<div>
|
|
45
|
+
{/* Component content */}
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export default {{name}};`,
|
|
51
|
+
|
|
52
|
+
'service': `/**
|
|
53
|
+
* Service Template
|
|
54
|
+
*
|
|
55
|
+
* Auto-generated service with error handling and TypeScript
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
export class {{name}}Service {
|
|
59
|
+
constructor() {
|
|
60
|
+
// Service initialization
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async execute(): Promise<any> {
|
|
64
|
+
try {
|
|
65
|
+
// Service logic here
|
|
66
|
+
return { success: true };
|
|
67
|
+
} catch (error) {
|
|
68
|
+
console.error('Service error:', error);
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export default {{name}}Service;`,
|
|
75
|
+
|
|
76
|
+
'utility': `/**
|
|
77
|
+
* Utility Function Template
|
|
78
|
+
*
|
|
79
|
+
* Auto-generated utility function with TypeScript
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
export const {{name}} = (input: any): any => {
|
|
83
|
+
// Utility logic here
|
|
84
|
+
return input;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export default {{name}};`,
|
|
88
|
+
|
|
89
|
+
'test': `/**
|
|
90
|
+
* Test Template
|
|
91
|
+
*
|
|
92
|
+
* Auto-generated test with Jest and TypeScript
|
|
93
|
+
*/
|
|
94
|
+
|
|
95
|
+
import { {{name}} } from './{{name}}';
|
|
96
|
+
|
|
97
|
+
describe('{{name}}', () => {
|
|
98
|
+
it('should work correctly', () => {
|
|
99
|
+
expect({{name}}()).toBeDefined();
|
|
100
|
+
});
|
|
101
|
+
});`
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
generateFile(type, name, targetPath = 'src') {
|
|
106
|
+
if (!this.templates[type]) {
|
|
107
|
+
throw new Error(`Unknown template type: ${type}`);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const template = this.templates[type];
|
|
111
|
+
const content = template.replace(/\{\{name\}\}/g, name);
|
|
112
|
+
|
|
113
|
+
const fileName = this.getFileName(type, name);
|
|
114
|
+
const fullPath = join(this.projectRoot, targetPath, fileName);
|
|
115
|
+
|
|
116
|
+
// Ensure directory exists
|
|
117
|
+
const dir = dirname(fullPath);
|
|
118
|
+
if (!existsSync(dir)) {
|
|
119
|
+
mkdirSync(dir, { recursive: true });
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Write file
|
|
123
|
+
writeFileSync(fullPath, content, 'utf8');
|
|
124
|
+
|
|
125
|
+
return {
|
|
126
|
+
type,
|
|
127
|
+
name,
|
|
128
|
+
fileName,
|
|
129
|
+
path: fullPath,
|
|
130
|
+
content
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
getFileName(type, name) {
|
|
135
|
+
const extensions = {
|
|
136
|
+
'component': '.tsx',
|
|
137
|
+
'service': '.ts',
|
|
138
|
+
'utility': '.ts',
|
|
139
|
+
'test': '.test.ts'
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
return `${name}${extensions[type] || '.ts'}`;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
analyzeWorkflow() {
|
|
146
|
+
const packageJson = JSON.parse(readFileSync(join(this.projectRoot, 'package.json'), 'utf8'));
|
|
147
|
+
const scripts = packageJson.scripts || {};
|
|
148
|
+
|
|
149
|
+
const workflow = {
|
|
150
|
+
build: scripts.build ? '✅' : '❌',
|
|
151
|
+
test: scripts.test ? '✅' : '❌',
|
|
152
|
+
lint: scripts.lint ? '✅' : '❌',
|
|
153
|
+
dev: scripts.dev ? '✅' : '❌',
|
|
154
|
+
typeCheck: scripts['type-check'] ? '✅' : '❌'
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
return {
|
|
158
|
+
scripts: workflow,
|
|
159
|
+
recommendations: this.generateWorkflowRecommendations(workflow)
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
generateWorkflowRecommendations(workflow) {
|
|
164
|
+
const recommendations = [];
|
|
165
|
+
|
|
166
|
+
if (workflow.build === '❌') {
|
|
167
|
+
recommendations.push('Add build script to package.json');
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if (workflow.test === '❌') {
|
|
171
|
+
recommendations.push('Add test script to package.json');
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (workflow.lint === '❌') {
|
|
175
|
+
recommendations.push('Add lint script to package.json');
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (workflow.dev === '❌') {
|
|
179
|
+
recommendations.push('Add dev script for development workflow');
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
return recommendations;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
generateCodeSnippets() {
|
|
186
|
+
return {
|
|
187
|
+
'error-handling': `
|
|
188
|
+
// Error handling pattern
|
|
189
|
+
try {
|
|
190
|
+
// Your code here
|
|
191
|
+
} catch (error) {
|
|
192
|
+
console.error('Operation failed:', error);
|
|
193
|
+
throw new Error('Failed to execute operation');
|
|
194
|
+
}
|
|
195
|
+
`,
|
|
196
|
+
'async-function': `
|
|
197
|
+
// Async function pattern
|
|
198
|
+
const asyncFunction = async (): Promise<any> => {
|
|
199
|
+
try {
|
|
200
|
+
// Async operations here
|
|
201
|
+
return await someAsyncOperation();
|
|
202
|
+
} catch (error) {
|
|
203
|
+
console.error('Async operation failed:', error);
|
|
204
|
+
throw error;
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
`,
|
|
208
|
+
'type-definition': `
|
|
209
|
+
// Type definition pattern
|
|
210
|
+
export interface User {
|
|
211
|
+
id: string;
|
|
212
|
+
name: string;
|
|
213
|
+
email: string;
|
|
214
|
+
createdAt: Date;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export type UserRole = 'admin' | 'user' | 'guest';
|
|
218
|
+
`,
|
|
219
|
+
'api-client': `
|
|
220
|
+
// API client pattern
|
|
221
|
+
class ApiClient {
|
|
222
|
+
private baseUrl: string;
|
|
223
|
+
|
|
224
|
+
constructor(baseUrl: string) {
|
|
225
|
+
this.baseUrl = baseUrl;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
async get<T>(endpoint: string): Promise<T> {
|
|
229
|
+
const response = await fetch(\`\${this.baseUrl}\${endpoint}\`);
|
|
230
|
+
if (!response.ok) {
|
|
231
|
+
throw new Error(\`API error: \${response.status}\`);
|
|
232
|
+
}
|
|
233
|
+
return response.json();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
`
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
formatReport(generatedFile, workflowAnalysis) {
|
|
241
|
+
const output = [];
|
|
242
|
+
|
|
243
|
+
output.push('╔══════════════════════════════════════════════════════════════════════════════╗');
|
|
244
|
+
output.push('║ DEVELOPMENT PRODUCTIVITY REPORT ║');
|
|
245
|
+
output.push('╚══════════════════════════════════════════════════════════════════════════════╝\n');
|
|
246
|
+
|
|
247
|
+
if (generatedFile) {
|
|
248
|
+
output.push('📄 FILE GENERATED');
|
|
249
|
+
output.push('─'.repeat(60));
|
|
250
|
+
output.push(`Type: ${generatedFile.type}`);
|
|
251
|
+
output.push(`Name: ${generatedFile.name}`);
|
|
252
|
+
output.push(`File: ${generatedFile.fileName}`);
|
|
253
|
+
output.push(`Path: ${generatedFile.path.replace(this.projectRoot + '/', '')}`);
|
|
254
|
+
output.push('');
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
output.push('⚙️ WORKFLOW ANALYSIS');
|
|
258
|
+
output.push('─'.repeat(60));
|
|
259
|
+
output.push(`Build: ${workflowAnalysis.scripts.build}`);
|
|
260
|
+
output.push(`Test: ${workflowAnalysis.scripts.test}`);
|
|
261
|
+
output.push(`Lint: ${workflowAnalysis.scripts.lint}`);
|
|
262
|
+
output.push(`Dev: ${workflowAnalysis.scripts.dev}`);
|
|
263
|
+
output.push(`Type Check: ${workflowAnalysis.scripts.typeCheck}`);
|
|
264
|
+
output.push('');
|
|
265
|
+
|
|
266
|
+
if (workflowAnalysis.recommendations.length > 0) {
|
|
267
|
+
output.push('💡 WORKFLOW RECOMMENDATIONS');
|
|
268
|
+
output.push('─'.repeat(60));
|
|
269
|
+
workflowAnalysis.recommendations.forEach(rec => {
|
|
270
|
+
output.push(`• ${rec}`);
|
|
271
|
+
});
|
|
272
|
+
output.push('');
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
output.push('🚀 PRODUCTIVITY TIPS');
|
|
276
|
+
output.push('─'.repeat(60));
|
|
277
|
+
output.push('• Use "npm run dev" for development with hot reload');
|
|
278
|
+
output.push('• Run "npm test" frequently during development');
|
|
279
|
+
output.push('• Use "npm run lint:fix" to automatically fix code style');
|
|
280
|
+
output.push('• Run "npm run type-check" to verify TypeScript types');
|
|
281
|
+
output.push('• Use code snippets for common patterns');
|
|
282
|
+
|
|
283
|
+
output.push('\n' + '═'.repeat(60));
|
|
284
|
+
|
|
285
|
+
return output.join('\n');
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// CLI interface
|
|
290
|
+
async function main() {
|
|
291
|
+
const args = process.argv.slice(2);
|
|
292
|
+
const booster = new DevProductivityBooster();
|
|
293
|
+
|
|
294
|
+
if (args.length === 0) {
|
|
295
|
+
// Show workflow analysis
|
|
296
|
+
const workflow = booster.analyzeWorkflow();
|
|
297
|
+
console.log(booster.formatReport(null, workflow));
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if (args[0] === 'generate') {
|
|
302
|
+
if (args.length < 3) {
|
|
303
|
+
console.log('Usage: node scripts/dev-productivity-booster.mjs generate <type> <name> [target-path]');
|
|
304
|
+
console.log('Types: component, service, utility, test');
|
|
305
|
+
process.exit(1);
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
const type = args[1];
|
|
309
|
+
const name = args[2];
|
|
310
|
+
const targetPath = args[3] || 'src';
|
|
311
|
+
|
|
312
|
+
try {
|
|
313
|
+
const generatedFile = booster.generateFile(type, name, targetPath);
|
|
314
|
+
const workflow = booster.analyzeWorkflow();
|
|
315
|
+
console.log(booster.formatReport(generatedFile, workflow));
|
|
316
|
+
} catch (error) {
|
|
317
|
+
console.error('❌ Error:', error.message);
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
320
|
+
} else if (args[0] === 'snippets') {
|
|
321
|
+
const snippets = booster.generateCodeSnippets();
|
|
322
|
+
console.log('📝 AVAILABLE CODE SNIPPETS');
|
|
323
|
+
console.log('─'.repeat(60));
|
|
324
|
+
Object.keys(snippets).forEach(key => {
|
|
325
|
+
console.log(`\n${key}:`);
|
|
326
|
+
console.log(snippets[key]);
|
|
327
|
+
});
|
|
328
|
+
} else {
|
|
329
|
+
console.log('Usage:');
|
|
330
|
+
console.log(' node scripts/dev-productivity-booster.mjs # Workflow analysis');
|
|
331
|
+
console.log(' node scripts/dev-productivity-booster.mjs generate <type> <name> [path]');
|
|
332
|
+
console.log(' node scripts/dev-productivity-booster.mjs snippets # Show code snippets');
|
|
333
|
+
process.exit(1);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// Run if called directly
|
|
338
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
339
|
+
main();
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export { DevProductivityBooster };
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Advanced Prompt System - Sophisticated shell prompts with animations
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Create a sophisticated animated prompt
|
|
6
|
-
*/
|
|
7
|
-
export declare class AdvancedPrompt {
|
|
8
|
-
private animationFrame;
|
|
9
|
-
/**
|
|
10
|
-
* Format user prompt with advanced styling
|
|
11
|
-
*/
|
|
12
|
-
formatUserPrompt(profileLabel: string, contextUsage?: number): string;
|
|
13
|
-
/**
|
|
14
|
-
* Create a mini progress bar for context usage
|
|
15
|
-
*/
|
|
16
|
-
private createMiniProgressBar;
|
|
17
|
-
/**
|
|
18
|
-
* Get animated prompt symbol
|
|
19
|
-
*/
|
|
20
|
-
private getAnimatedPromptSymbol;
|
|
21
|
-
/**
|
|
22
|
-
* Create status line with sophisticated formatting
|
|
23
|
-
*/
|
|
24
|
-
createStatusLine(status: string, fileChanges?: {
|
|
25
|
-
files: number;
|
|
26
|
-
added: number;
|
|
27
|
-
removed: number;
|
|
28
|
-
}, activeTools?: string[]): string;
|
|
29
|
-
/**
|
|
30
|
-
* Create thinking indicator with sophisticated animation
|
|
31
|
-
*/
|
|
32
|
-
createThinkingIndicator(message?: string): string;
|
|
33
|
-
/**
|
|
34
|
-
* Create input field with sophisticated styling
|
|
35
|
-
*/
|
|
36
|
-
formatInputField(input: string, cursorPosition: number): string;
|
|
37
|
-
/**
|
|
38
|
-
* Create command preview with sophisticated formatting
|
|
39
|
-
*/
|
|
40
|
-
formatCommandPreview(commands: Array<{
|
|
41
|
-
command: string;
|
|
42
|
-
description: string;
|
|
43
|
-
}>, _filterText?: string): string;
|
|
44
|
-
/**
|
|
45
|
-
* Create welcome banner with sophisticated effects
|
|
46
|
-
*/
|
|
47
|
-
createWelcomeBanner(model: string, version: string): string;
|
|
48
|
-
/**
|
|
49
|
-
* Center text within width
|
|
50
|
-
*/
|
|
51
|
-
private centerText;
|
|
52
|
-
/**
|
|
53
|
-
* Create sophisticated loading animation
|
|
54
|
-
*/
|
|
55
|
-
createLoadingAnimation(progress: number, message?: string): string;
|
|
56
|
-
}
|
|
57
|
-
export declare const advancedPrompt: AdvancedPrompt;
|
|
58
|
-
//# sourceMappingURL=advancedPrompt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"advancedPrompt.d.ts","sourceRoot":"","sources":["../../src/ui/advancedPrompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAK;IAE3B;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAsCrE;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;OAEG;IACH,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAC/D,WAAW,CAAC,EAAE,MAAM,EAAE,GACrB,MAAM;IAuCT;;OAEG;IACH,uBAAuB,CAAC,OAAO,GAAE,MAAmB,GAAG,MAAM;IAsB7D;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM;IAyB/D;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAuC7G;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAiD3D;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,MAAkB,GAAG,MAAM;CAyC9E;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Advanced Prompt System - Sophisticated shell prompts with animations
|
|
3
|
-
*/
|
|
4
|
-
import { GradientEffect, AnimationFrames, AdvancedSymbols } from './advancedTheme.js';
|
|
5
|
-
/**
|
|
6
|
-
* Create a sophisticated animated prompt
|
|
7
|
-
*/
|
|
8
|
-
export class AdvancedPrompt {
|
|
9
|
-
animationFrame = 0;
|
|
10
|
-
/**
|
|
11
|
-
* Format user prompt with advanced styling
|
|
12
|
-
*/
|
|
13
|
-
formatUserPrompt(profileLabel, contextUsage) {
|
|
14
|
-
// Create prompt segments
|
|
15
|
-
const segments = [];
|
|
16
|
-
// Time segment with subtle gradient
|
|
17
|
-
const timeStr = new Date().toLocaleTimeString('en-US', {
|
|
18
|
-
hour12: false,
|
|
19
|
-
hour: '2-digit',
|
|
20
|
-
minute: '2-digit',
|
|
21
|
-
});
|
|
22
|
-
const timeGradient = GradientEffect.linearGradient(timeStr, [100, 100, 100], [150, 150, 150]);
|
|
23
|
-
segments.push(`[${timeGradient}]`);
|
|
24
|
-
// Profile segment with wave gradient
|
|
25
|
-
const profileGradient = GradientEffect.wave(profileLabel, [0, 255, 255], [255, 0, 255]);
|
|
26
|
-
segments.push(profileGradient);
|
|
27
|
-
// Context usage indicator if available
|
|
28
|
-
if (contextUsage !== undefined) {
|
|
29
|
-
const contextBar = this.createMiniProgressBar(contextUsage / 100, 10);
|
|
30
|
-
segments.push(contextBar);
|
|
31
|
-
}
|
|
32
|
-
// Animated prompt symbol
|
|
33
|
-
const promptSymbol = this.getAnimatedPromptSymbol();
|
|
34
|
-
segments.push(promptSymbol);
|
|
35
|
-
return segments.join(' ');
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Create a mini progress bar for context usage
|
|
39
|
-
*/
|
|
40
|
-
createMiniProgressBar(progress, width) {
|
|
41
|
-
const filled = Math.round(progress * width);
|
|
42
|
-
const empty = width - filled;
|
|
43
|
-
const filledChars = '█'.repeat(filled);
|
|
44
|
-
const emptyChars = '░'.repeat(empty);
|
|
45
|
-
// Apply gradient based on usage level
|
|
46
|
-
let color;
|
|
47
|
-
if (progress < 0.5) {
|
|
48
|
-
color = [0, 255, 0]; // Green
|
|
49
|
-
}
|
|
50
|
-
else if (progress < 0.8) {
|
|
51
|
-
color = [255, 255, 0]; // Yellow
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
color = [255, 0, 0]; // Red
|
|
55
|
-
}
|
|
56
|
-
const bar = filledChars + emptyChars;
|
|
57
|
-
return `[${GradientEffect.pulse(bar, color, 0.3)}]`;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Get animated prompt symbol
|
|
61
|
-
*/
|
|
62
|
-
getAnimatedPromptSymbol() {
|
|
63
|
-
const symbols = ['❯', '❱', '❭', '❯❯', '⟩', '▸', '▹', '►'];
|
|
64
|
-
const symbol = symbols[this.animationFrame % symbols.length] || '❯';
|
|
65
|
-
this.animationFrame++;
|
|
66
|
-
// Apply rainbow effect to the symbol
|
|
67
|
-
return GradientEffect.rainbow(symbol);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Create status line with sophisticated formatting
|
|
71
|
-
*/
|
|
72
|
-
createStatusLine(status, fileChanges, activeTools) {
|
|
73
|
-
const segments = [];
|
|
74
|
-
// Status with gradient
|
|
75
|
-
const statusGradient = GradientEffect.wave(status, [64, 224, 208], [147, 112, 219]);
|
|
76
|
-
segments.push(statusGradient);
|
|
77
|
-
// File changes indicator
|
|
78
|
-
if (fileChanges && fileChanges.files > 0) {
|
|
79
|
-
const changesText = `${fileChanges.files} files +${fileChanges.added} -${fileChanges.removed}`;
|
|
80
|
-
const changesGradient = GradientEffect.linearGradient(changesText, [0, 255, 127], [255, 127, 0]);
|
|
81
|
-
segments.push(`[${changesGradient}]`);
|
|
82
|
-
}
|
|
83
|
-
// Active tools indicator
|
|
84
|
-
if (activeTools && activeTools.length > 0) {
|
|
85
|
-
const toolsText = activeTools.map(t => {
|
|
86
|
-
const key = t.toLowerCase();
|
|
87
|
-
return AdvancedSymbols.tools[key] || t;
|
|
88
|
-
}).join(' ');
|
|
89
|
-
const toolsGradient = GradientEffect.pulse(toolsText, [127, 127, 255], 0.5);
|
|
90
|
-
segments.push(toolsGradient);
|
|
91
|
-
}
|
|
92
|
-
return segments.join(' • ');
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Create thinking indicator with sophisticated animation
|
|
96
|
-
*/
|
|
97
|
-
createThinkingIndicator(message = 'Thinking') {
|
|
98
|
-
const frames = AnimationFrames.elegantDots();
|
|
99
|
-
const frame = frames[this.animationFrame % frames.length] || '⣾';
|
|
100
|
-
this.animationFrame++;
|
|
101
|
-
// Create pulsing gradient for the spinner
|
|
102
|
-
const spinnerGradient = GradientEffect.pulse(frame, [0, 255, 255], 0.8);
|
|
103
|
-
// Create wave gradient for the message
|
|
104
|
-
const messageGradient = GradientEffect.wave(message, [147, 112, 219], [255, 182, 193]);
|
|
105
|
-
return `${spinnerGradient} ${messageGradient}`;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Create input field with sophisticated styling
|
|
109
|
-
*/
|
|
110
|
-
formatInputField(input, cursorPosition) {
|
|
111
|
-
const before = input.slice(0, cursorPosition);
|
|
112
|
-
const after = input.slice(cursorPosition);
|
|
113
|
-
// Apply subtle gradient to the input
|
|
114
|
-
const beforeGradient = GradientEffect.linearGradient(before, [200, 200, 200], [255, 255, 255]);
|
|
115
|
-
const afterGradient = GradientEffect.linearGradient(after, [255, 255, 255], [200, 200, 200]);
|
|
116
|
-
// Animated cursor
|
|
117
|
-
const cursorFrames = ['▊', '▌', '▎', '▏', '▎', '▌'];
|
|
118
|
-
const cursor = cursorFrames[this.animationFrame % cursorFrames.length] || '▊';
|
|
119
|
-
const cursorGradient = GradientEffect.rainbow(cursor);
|
|
120
|
-
return `${beforeGradient}${cursorGradient}${afterGradient}`;
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Create command preview with sophisticated formatting
|
|
124
|
-
*/
|
|
125
|
-
formatCommandPreview(commands, _filterText) {
|
|
126
|
-
const lines = [];
|
|
127
|
-
// Header with gradient (no box characters)
|
|
128
|
-
const headerGradient = GradientEffect.wave('=== Commands ===', [0, 255, 255], [255, 0, 255]);
|
|
129
|
-
lines.push(headerGradient);
|
|
130
|
-
// Commands with alternating gradients
|
|
131
|
-
commands.forEach((cmd, i) => {
|
|
132
|
-
const isEven = i % 2 === 0;
|
|
133
|
-
const commandColor = isEven ? [0, 255, 255] : [255, 0, 255];
|
|
134
|
-
const descColor = isEven ? [147, 112, 219] : [255, 182, 193];
|
|
135
|
-
const commandGradient = GradientEffect.pulse(cmd.command, commandColor, 0.3);
|
|
136
|
-
const descGradient = GradientEffect.linearGradient(cmd.description, descColor, [150, 150, 150]);
|
|
137
|
-
lines.push(` ${commandGradient}`);
|
|
138
|
-
lines.push(` ${descGradient}`);
|
|
139
|
-
});
|
|
140
|
-
// Footer (no box characters)
|
|
141
|
-
const footerGradient = GradientEffect.wave('================', [255, 0, 255], [0, 255, 255]);
|
|
142
|
-
lines.push(footerGradient);
|
|
143
|
-
return lines.join('\n');
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Create welcome banner with sophisticated effects
|
|
147
|
-
*/
|
|
148
|
-
createWelcomeBanner(model, version) {
|
|
149
|
-
const lines = [];
|
|
150
|
-
// Top border with gradient
|
|
151
|
-
const width = process.stdout.columns || 80;
|
|
152
|
-
const topBorder = '═'.repeat(width - 2);
|
|
153
|
-
const topGradient = GradientEffect.linearGradient(`╔${topBorder}╗`, [0, 255, 255], [255, 0, 255]);
|
|
154
|
-
lines.push(topGradient);
|
|
155
|
-
// Title with rainbow effect
|
|
156
|
-
const title = 'CLAUDE CODE';
|
|
157
|
-
const titleCentered = this.centerText(title, width - 2);
|
|
158
|
-
const titleRainbow = GradientEffect.rainbow(titleCentered);
|
|
159
|
-
lines.push(`║${titleRainbow}║`);
|
|
160
|
-
// Model with wave gradient
|
|
161
|
-
const modelCentered = this.centerText(model, width - 2);
|
|
162
|
-
const modelGradient = GradientEffect.wave(modelCentered, [147, 112, 219], [255, 182, 193]);
|
|
163
|
-
lines.push(`║${modelGradient}║`);
|
|
164
|
-
// Version with pulse gradient
|
|
165
|
-
const versionCentered = this.centerText(version, width - 2);
|
|
166
|
-
const versionGradient = GradientEffect.pulse(versionCentered, [100, 200, 255], 0.5);
|
|
167
|
-
lines.push(`║${versionGradient}║`);
|
|
168
|
-
// Bottom border
|
|
169
|
-
const bottomBorder = '═'.repeat(width - 2);
|
|
170
|
-
const bottomGradient = GradientEffect.linearGradient(`╚${bottomBorder}╝`, [255, 0, 255], [0, 255, 255]);
|
|
171
|
-
lines.push(bottomGradient);
|
|
172
|
-
return lines.join('\n');
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Center text within width
|
|
176
|
-
*/
|
|
177
|
-
centerText(text, width) {
|
|
178
|
-
// Remove ANSI codes to get actual text length
|
|
179
|
-
// eslint-disable-next-line no-control-regex
|
|
180
|
-
const textLength = text.replace(/\u001b\[[0-9;]*m/g, '').length;
|
|
181
|
-
const padding = Math.max(0, Math.floor((width - textLength) / 2));
|
|
182
|
-
const totalPadding = width - textLength;
|
|
183
|
-
const leftPadding = padding;
|
|
184
|
-
const rightPadding = totalPadding - leftPadding;
|
|
185
|
-
return ' '.repeat(leftPadding) + text + ' '.repeat(rightPadding);
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Create sophisticated loading animation
|
|
189
|
-
*/
|
|
190
|
-
createLoadingAnimation(progress, message = 'Loading') {
|
|
191
|
-
const width = 30;
|
|
192
|
-
const filled = Math.round(progress * width);
|
|
193
|
-
// Create segments with different symbols
|
|
194
|
-
const segments = [];
|
|
195
|
-
for (let i = 0; i < width; i++) {
|
|
196
|
-
if (i < filled) {
|
|
197
|
-
segments.push('▰');
|
|
198
|
-
}
|
|
199
|
-
else if (i === filled && progress < 1) {
|
|
200
|
-
// Animated loading position
|
|
201
|
-
const loadingFrames = ['▱', '▰', '▱'];
|
|
202
|
-
segments.push(loadingFrames[this.animationFrame % loadingFrames.length] || '▱');
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
segments.push('▱');
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
const bar = segments.join('');
|
|
209
|
-
const barGradient = GradientEffect.wave(bar, [0, 255, 127], [255, 127, 0]);
|
|
210
|
-
const percentage = Math.round(progress * 100);
|
|
211
|
-
const percentageText = `${percentage}%`.padStart(4);
|
|
212
|
-
const percentageGradient = GradientEffect.pulse(percentageText, [255, 255, 255], 0.3);
|
|
213
|
-
const messageGradient = GradientEffect.linearGradient(message, [147, 112, 219], [255, 182, 193]);
|
|
214
|
-
return `${messageGradient} [${barGradient}] ${percentageGradient}`;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
// Export singleton instance
|
|
218
|
-
export const advancedPrompt = new AdvancedPrompt();
|
|
219
|
-
//# sourceMappingURL=advancedPrompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"advancedPrompt.js","sourceRoot":"","sources":["../../src/ui/advancedPrompt.ts"],"names":[],"mappings":"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"}
|