aex-code 1.0.1 → 1.0.2
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/package.json +1 -1
- package/src/commands/chat.js +12 -10
- package/src/commands/config.js +4 -2
- package/src/index.js +7 -5
package/package.json
CHANGED
package/src/commands/chat.js
CHANGED
|
@@ -6,6 +6,8 @@ import path from 'path';
|
|
|
6
6
|
import boxen from 'boxen';
|
|
7
7
|
import { createClient, getDefaultModel, debugApiKey } from '../utils/openrouter.js';
|
|
8
8
|
|
|
9
|
+
const aexTheme = chalk.hex('#74ffd8');
|
|
10
|
+
|
|
9
11
|
const SYSTEM_PROMPT = `You are AEX Code, an advanced coding agent. You provide short, actionable coding assistance.
|
|
10
12
|
If asked to edit a file, provide the full file contents or explicitly outline what to change in the file.
|
|
11
13
|
Try to use <tool_call> JSON format for file writes if possible.
|
|
@@ -15,12 +17,12 @@ let conversationHistory = [];
|
|
|
15
17
|
|
|
16
18
|
export async function chatCommand() {
|
|
17
19
|
console.clear();
|
|
18
|
-
const chatHeader = boxen(
|
|
19
|
-
padding: 1, margin: 1, borderStyle: 'bold', borderColor: '
|
|
20
|
+
const chatHeader = boxen(aexTheme.bold('A E X C O D E'), {
|
|
21
|
+
padding: 1, margin: 1, borderStyle: 'bold', borderColor: '#74ffd8'
|
|
20
22
|
});
|
|
21
23
|
console.log(chatHeader);
|
|
22
|
-
console.log(
|
|
23
|
-
console.log(
|
|
24
|
+
console.log(aexTheme(` ■ Target Model : ${chalk.gray(getDefaultModel())}`));
|
|
25
|
+
console.log(aexTheme(` ■ Exit Command : ${chalk.gray("'exit'")}\n`));
|
|
24
26
|
|
|
25
27
|
let client;
|
|
26
28
|
try {
|
|
@@ -38,12 +40,12 @@ export async function chatCommand() {
|
|
|
38
40
|
{
|
|
39
41
|
type: 'input',
|
|
40
42
|
name: 'userInput',
|
|
41
|
-
message:
|
|
43
|
+
message: aexTheme.bold('■ USER : '),
|
|
42
44
|
}
|
|
43
45
|
]);
|
|
44
46
|
|
|
45
47
|
if (userInput.trim().toLowerCase() === 'exit') {
|
|
46
|
-
console.log(
|
|
48
|
+
console.log(aexTheme('\n■ SESSION TERMINATED.'));
|
|
47
49
|
break;
|
|
48
50
|
}
|
|
49
51
|
|
|
@@ -51,8 +53,8 @@ export async function chatCommand() {
|
|
|
51
53
|
|
|
52
54
|
process.stdout.write('\n');
|
|
53
55
|
const spinner = ora({
|
|
54
|
-
text:
|
|
55
|
-
color: '
|
|
56
|
+
text: aexTheme.italic('AEX PROCESSSING...'),
|
|
57
|
+
color: 'cyan', // closest default spinner color to the hex
|
|
56
58
|
}).start();
|
|
57
59
|
|
|
58
60
|
try {
|
|
@@ -63,12 +65,12 @@ export async function chatCommand() {
|
|
|
63
65
|
});
|
|
64
66
|
|
|
65
67
|
spinner.stop();
|
|
66
|
-
process.stdout.write(`${chalk.
|
|
68
|
+
process.stdout.write(`${chalk.bgHex('#74ffd8').black.bold(' ■ AEX AGENT ')} `);
|
|
67
69
|
|
|
68
70
|
let fullContent = '';
|
|
69
71
|
for await (const chunk of response) {
|
|
70
72
|
const text = chunk.choices[0]?.delta?.content || '';
|
|
71
|
-
process.stdout.write(
|
|
73
|
+
process.stdout.write(aexTheme(text));
|
|
72
74
|
fullContent += text;
|
|
73
75
|
}
|
|
74
76
|
console.log('\n');
|
package/src/commands/config.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { saveConfig } from '../utils/configManager.js';
|
|
3
3
|
|
|
4
|
+
const aexTheme = chalk.hex('#74ffd8');
|
|
5
|
+
|
|
4
6
|
export const configCommand = (options) => {
|
|
5
7
|
if (options.setKey) {
|
|
6
8
|
// Automatically strip accidental quotes just in case
|
|
7
9
|
const cleanKey = options.setKey.replace(/^['"]|['"]$/g, '');
|
|
8
10
|
saveConfig({ OPENROUTER_API_KEY: cleanKey });
|
|
9
|
-
console.log(
|
|
11
|
+
console.log(aexTheme('■ OpenRouter API Key configured successfully.'));
|
|
10
12
|
}
|
|
11
13
|
|
|
12
14
|
if (options.setModel) {
|
|
13
15
|
const cleanModel = options.setModel.replace(/^['"]|['"]$/g, '');
|
|
14
16
|
saveConfig({ OPENROUTER_DEFAULT_MODEL: cleanModel });
|
|
15
|
-
console.log(
|
|
17
|
+
console.log(aexTheme(`■ Default Model set to ${cleanModel}.`));
|
|
16
18
|
}
|
|
17
19
|
|
|
18
20
|
if (!options.setKey && !options.setModel) {
|
package/src/index.js
CHANGED
|
@@ -21,21 +21,23 @@ const packageJson = JSON.parse(
|
|
|
21
21
|
|
|
22
22
|
const program = new Command();
|
|
23
23
|
|
|
24
|
+
const aexTheme = chalk.hex('#74ffd8');
|
|
25
|
+
|
|
24
26
|
const bannerText = figlet.textSync('AEX Code', { font: 'ANSI Shadow', horizontalLayout: 'fitted' });
|
|
25
|
-
const coloredBanner =
|
|
26
|
-
const rawTagline = '
|
|
27
|
+
const coloredBanner = aexTheme(bannerText);
|
|
28
|
+
const rawTagline = ' POWERED BY AI EXTENSION - NEXT-GEN CODING AGENT ';
|
|
27
29
|
|
|
28
|
-
const finalBanner = boxen(`${coloredBanner}\n\n${chalk.
|
|
30
|
+
const finalBanner = boxen(`${coloredBanner}\n\n${chalk.bgHex('#74ffd8').black.bold(rawTagline)}`, {
|
|
29
31
|
padding: 1,
|
|
30
32
|
margin: 1,
|
|
31
33
|
borderStyle: 'bold',
|
|
32
|
-
borderColor: '
|
|
34
|
+
borderColor: '#74ffd8',
|
|
33
35
|
textAlignment: 'center',
|
|
34
36
|
});
|
|
35
37
|
|
|
36
38
|
program
|
|
37
39
|
.name('aex-code')
|
|
38
|
-
.description(finalBanner)
|
|
40
|
+
.description(`${finalBanner}\n${chalk.dim('A powerful CLI agent optimized for OpenRouter free-tier LLMs.')}`)
|
|
39
41
|
.version(packageJson.version);
|
|
40
42
|
|
|
41
43
|
program
|