recoder-code 2.1.4 → 2.2.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 (2) hide show
  1. package/cli/interactive.js +42 -22
  2. package/package.json +1 -1
@@ -143,7 +143,7 @@ class InteractiveRecoderChat {
143
143
  this.rl = readline.createInterface({
144
144
  input: process.stdin,
145
145
  output: process.stdout,
146
- prompt: chalk.cyan('šŸ¤– You: '),
146
+ prompt: chalk.magenta('ā–¶ ') + chalk.white.bold('You: '),
147
147
  historySize: 100,
148
148
  removeHistoryDuplicates: true,
149
149
  completer: this.autoComplete.bind(this)
@@ -403,9 +403,9 @@ class InteractiveRecoderChat {
403
403
  const convIndicator = this.currentConversationId === 'main' ? '' : chalk.gray(`[${currentConv.name}] `);
404
404
 
405
405
  if (this.multiLineMode) {
406
- this.rl.setPrompt(chalk.yellow('šŸ“ ... '));
406
+ this.rl.setPrompt(chalk.magenta('ā”ƒ ') + chalk.gray('... '));
407
407
  } else {
408
- this.rl.setPrompt(convIndicator + chalk.cyan('šŸ¤– You: '));
408
+ this.rl.setPrompt(convIndicator + chalk.magenta('ā–¶ ') + chalk.white.bold('You: '));
409
409
  }
410
410
  }
411
411
 
@@ -981,20 +981,40 @@ class InteractiveRecoderChat {
981
981
  displayWelcome() {
982
982
  console.clear();
983
983
 
984
- // Simple welcome message like Claude Code
984
+ // Stunning purple/gray/black UI with recoder.xyz branding
985
985
  console.log('');
986
- console.log(chalk.bold('✱ Welcome to Recoder-Code!'));
986
+ console.log(chalk.magenta.bold('╭─────────────────────────────────────────────────────────────────╮'));
987
+ console.log(chalk.magenta.bold('│') + chalk.black.bgMagenta.bold(' RECODER.XYZ ') + chalk.magenta.bold('│'));
988
+ console.log(chalk.magenta.bold('│') + chalk.gray(' AI-Powered Development Terminal ') + chalk.magenta.bold('│'));
989
+ console.log(chalk.magenta.bold('╰─────────────────────────────────────────────────────────────────╯'));
987
990
  console.log('');
988
- console.log(chalk.gray('/help for help, /status for your current setup'));
989
- console.log('');
990
- console.log(chalk.gray(`cwd: ${process.cwd()}`));
991
+
992
+ // ASCII Art Logo
993
+ console.log(chalk.magenta.bold('ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—'));
994
+ console.log(chalk.magenta.bold('ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā•ā•ā•ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—'));
995
+ console.log(chalk.magenta.bold('ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•'));
996
+ console.log(chalk.gray('ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—ā–ˆā–ˆā•”ā•ā•ā• ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā•”ā•ā•ā• ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—'));
997
+ console.log(chalk.gray('ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā•šā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā•šā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘'));
998
+ console.log(chalk.gray('ā•šā•ā• ā•šā•ā•ā•šā•ā•ā•ā•ā•ā•ā• ā•šā•ā•ā•ā•ā•ā• ā•šā•ā•ā•ā•ā•ā• ā•šā•ā•ā•ā•ā•ā• ā•šā•ā•ā•ā•ā•ā•ā•ā•šā•ā• ā•šā•ā•'));
991
999
  console.log('');
1000
+
1001
+ // Status Bar
1002
+ console.log(chalk.magenta('ā–¶ ') + chalk.white.bold('Ready') + chalk.gray(' │ ') + chalk.gray(`${process.cwd()}`));
1003
+ console.log(chalk.gray('─'.repeat(65)));
992
1004
  console.log('');
1005
+
993
1006
  // Show session suggestions if available
994
1007
  this.showSessionSuggestions();
995
1008
 
996
- console.log(chalk.green('šŸ’¬ Start chatting! Just type what you want to do.'));
997
- console.log(chalk.white('✨ Examples: build a todo app, fix my login error, deploy this project'));
1009
+ // Quick actions
1010
+ console.log(chalk.magenta('⚔ ') + chalk.white.bold('Quick Actions:'));
1011
+ console.log(chalk.gray(' • ') + chalk.cyan('/help') + chalk.gray(' - Show available commands'));
1012
+ console.log(chalk.gray(' • ') + chalk.cyan('/status') + chalk.gray(' - System status & configuration'));
1013
+ console.log(chalk.gray(' • ') + chalk.cyan('/models') + chalk.gray(' - Switch AI models'));
1014
+ console.log('');
1015
+
1016
+ console.log(chalk.magenta('šŸ’¬ ') + chalk.white.bold('Start coding with AI assistance!'));
1017
+ console.log(chalk.gray('✨ Try: ') + chalk.cyan('"build a React app"') + chalk.gray(' or ') + chalk.cyan('"debug my Python code"'));
998
1018
  console.log('');
999
1019
 
1000
1020
  this.rl.prompt();
@@ -1006,35 +1026,35 @@ class InteractiveRecoderChat {
1006
1026
  const projectStatus = this.projectManager.getProjectStatus();
1007
1027
 
1008
1028
  if (projectStatus.exists) {
1009
- console.log(chalk.cyan(`šŸ“‚ Project: ${projectStatus.context.name}`));
1010
- console.log(chalk.gray(` Todos: ${projectStatus.todos.pending} pending, ${projectStatus.todos.completed} completed`));
1029
+ console.log(chalk.magenta('šŸ“‚ ') + chalk.white.bold(`Project: ${projectStatus.context.name}`));
1030
+ console.log(chalk.gray(` • Todos: ${projectStatus.todos.pending} pending, ${projectStatus.todos.completed} completed`));
1011
1031
  }
1012
1032
 
1013
1033
  // Check for intelligent auto-resume candidate
1014
1034
  const resumeCandidate = this.projectManager.shouldOfferAutoResume();
1015
1035
 
1016
1036
  if (resumeCandidate) {
1017
- console.log(chalk.yellow('šŸ”„ Resume Previous Session?'));
1018
- console.log(chalk.cyan(` Session: ${resumeCandidate.id} (${resumeCandidate.activityDescription})`));
1019
- console.log(chalk.gray(` Messages: ${resumeCandidate.messageCount} | Model: ${resumeCandidate.model}`));
1037
+ console.log(chalk.magenta('šŸ”„ ') + chalk.white.bold('Resume Previous Session?'));
1038
+ console.log(chalk.gray(` • Session: ${resumeCandidate.id} (${resumeCandidate.activityDescription})`));
1039
+ console.log(chalk.gray(` • Messages: ${resumeCandidate.messageCount} | Model: ${resumeCandidate.model}`));
1020
1040
 
1021
1041
  if (resumeCandidate.lastUserMessage) {
1022
- console.log(chalk.gray(` Last: "${resumeCandidate.lastUserMessage}"`));
1042
+ console.log(chalk.gray(` • Last: "${resumeCandidate.lastUserMessage}"`));
1023
1043
  }
1024
1044
 
1025
- console.log(chalk.gray(' šŸ’” Type /resume to continue or start fresh'));
1045
+ console.log(chalk.gray(' šŸ’” Type ') + chalk.cyan('/resume') + chalk.gray(' to continue or start fresh'));
1026
1046
  console.log('');
1027
1047
  } else {
1028
1048
  // Get recent sessions if no auto-resume candidate
1029
1049
  const recentSessions = this.projectManager.listSessions({ limit: 3 });
1030
1050
 
1031
1051
  if (recentSessions.length > 0) {
1032
- console.log(chalk.yellow('šŸ•’ Recent Sessions:'));
1052
+ console.log(chalk.magenta('šŸ•’ ') + chalk.white.bold('Recent Sessions:'));
1033
1053
  recentSessions.forEach((session, index) => {
1034
1054
  const timeAgo = this.getTimeAgo(new Date(session.modified));
1035
- console.log(chalk.gray(` ${index + 1}. ${session.id} - ${timeAgo} (${session.messageCount} messages)`));
1055
+ console.log(chalk.gray(` • ${session.id} - ${timeAgo} (${session.messageCount} messages)`));
1036
1056
  });
1037
- console.log(chalk.gray(' šŸ’” Use /resume <id> to continue a session'));
1057
+ console.log(chalk.gray(' šŸ’” Use ') + chalk.cyan('/resume <id>') + chalk.gray(' to continue a session'));
1038
1058
  console.log('');
1039
1059
  }
1040
1060
  }
@@ -2905,7 +2925,7 @@ class InteractiveRecoderChat {
2905
2925
  // Update legacy reference
2906
2926
  this.conversationHistory = currentConv.history;
2907
2927
 
2908
- console.log(chalk.blue('\nšŸ¤– Recoder: '), { end: '' });
2928
+ console.log(chalk.magenta('\nšŸ¤– ') + chalk.white.bold('Recoder: '), { end: '' });
2909
2929
 
2910
2930
  try {
2911
2931
  // Start API call timer
@@ -2937,7 +2957,7 @@ class InteractiveRecoderChat {
2937
2957
  if (response.usage) {
2938
2958
  currentConv.tokens += response.usage.total_tokens || 0;
2939
2959
  this.totalTokens += response.usage.total_tokens || 0;
2940
- console.log(chalk.gray(`\nšŸ’° ${response.usage.prompt_tokens} + ${response.usage.completion_tokens} = ${response.usage.total_tokens} tokens`));
2960
+ console.log(chalk.gray(`\nšŸ’Ž ${response.usage.prompt_tokens} + ${response.usage.completion_tokens} = `) + chalk.magenta(`${response.usage.total_tokens} tokens`));
2941
2961
 
2942
2962
  // Log API call metrics
2943
2963
  const apiDuration = this.logger.endTimer('api_call');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recoder-code",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "description": "Complete AI-powered development platform with ML model training, plugin registry, real-time collaboration, monitoring, infrastructure automation, and enterprise deployment capabilities",
5
5
  "main": "index.js",
6
6
  "scripts": {