@emremeydanci/nexos 0.2.4 → 0.2.5
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/commands/init.js +127 -7
- package/dist/commands/init.js.map +1 -1
- package/package.json +8 -4
package/dist/commands/init.js
CHANGED
|
@@ -1,18 +1,138 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
import prompts from 'prompts';
|
|
4
|
+
import figlet from 'figlet';
|
|
5
|
+
import boxen from 'boxen';
|
|
3
6
|
import { execSync } from 'child_process';
|
|
7
|
+
import fs from 'fs';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
function banner() {
|
|
10
|
+
const title = figlet.textSync('NexOS', { font: 'ANSI Shadow' });
|
|
11
|
+
console.log(chalk.cyan(title));
|
|
12
|
+
console.log(boxen(chalk.white.bold('AI Gateway Platform') + '\n' +
|
|
13
|
+
chalk.gray('v0.2.4 — by Emre Meydanci'), {
|
|
14
|
+
padding: 1,
|
|
15
|
+
margin: { top: 0, bottom: 1, left: 2, right: 2 },
|
|
16
|
+
borderStyle: 'round',
|
|
17
|
+
borderColor: 'cyan',
|
|
18
|
+
}));
|
|
19
|
+
}
|
|
20
|
+
function step(n, total, msg) {
|
|
21
|
+
console.log(chalk.cyan(`\n[${n}/${total}] `) + chalk.white.bold(msg));
|
|
22
|
+
}
|
|
23
|
+
function success(msg) {
|
|
24
|
+
console.log(chalk.green(' ✔ ') + chalk.white(msg));
|
|
25
|
+
}
|
|
26
|
+
function warn(msg) {
|
|
27
|
+
console.log(chalk.yellow(' ⚠ ') + chalk.white(msg));
|
|
28
|
+
}
|
|
29
|
+
function fail(msg) {
|
|
30
|
+
console.log(chalk.red(' ✖ ') + chalk.white(msg));
|
|
31
|
+
}
|
|
4
32
|
export const initCommand = new Command('init')
|
|
5
|
-
.description('NexOS
|
|
33
|
+
.description('NexOS kurulum sihirbazını başlat')
|
|
6
34
|
.action(async () => {
|
|
35
|
+
console.clear();
|
|
36
|
+
banner();
|
|
37
|
+
console.log(chalk.gray(' Kurulum sihirbazına hoş geldiniz.\n'));
|
|
38
|
+
// Docker check
|
|
39
|
+
step(1, 5, 'Sistem gereksinimleri kontrol ediliyor...');
|
|
7
40
|
try {
|
|
8
|
-
console.log('Docker kontrol ediliyor...');
|
|
9
41
|
execSync('docker --version', { stdio: 'ignore' });
|
|
10
|
-
|
|
11
|
-
console.log('NexOS başlatılıyor...');
|
|
12
|
-
console.log(chalk.green('NexOS başlatıldı'));
|
|
42
|
+
success('Docker mevcut');
|
|
13
43
|
}
|
|
14
|
-
catch
|
|
15
|
-
|
|
44
|
+
catch {
|
|
45
|
+
fail('Docker bulunamadı. Lütfen Docker yükleyin: https://docs.docker.com/get-docker/');
|
|
46
|
+
process.exit(1);
|
|
16
47
|
}
|
|
48
|
+
try {
|
|
49
|
+
execSync('docker compose version', { stdio: 'ignore' });
|
|
50
|
+
success('Docker Compose mevcut');
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
fail('Docker Compose bulunamadı.');
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
// Provider
|
|
57
|
+
step(2, 5, 'AI Provider seçin');
|
|
58
|
+
const { provider } = await prompts({
|
|
59
|
+
type: 'select',
|
|
60
|
+
name: 'provider',
|
|
61
|
+
message: 'Hangi AI sağlayıcısını kullanmak istiyorsunuz?',
|
|
62
|
+
choices: [
|
|
63
|
+
{ title: chalk.cyan('Anthropic') + chalk.gray(' (Claude)'), value: 'anthropic' },
|
|
64
|
+
{ title: chalk.green('OpenAI') + chalk.gray(' (GPT-4)'), value: 'openai' },
|
|
65
|
+
{ title: chalk.yellow('Ollama') + chalk.gray(' (Yerel)'), value: 'ollama' },
|
|
66
|
+
],
|
|
67
|
+
});
|
|
68
|
+
if (!provider)
|
|
69
|
+
process.exit(0);
|
|
70
|
+
let apiKey = '';
|
|
71
|
+
if (provider !== 'ollama') {
|
|
72
|
+
const res = await prompts({
|
|
73
|
+
type: 'password',
|
|
74
|
+
name: 'apiKey',
|
|
75
|
+
message: `${provider === 'anthropic' ? 'Anthropic' : 'OpenAI'} API key:`,
|
|
76
|
+
validate: (v) => v.length > 10 ? true : 'Geçerli bir API key girin',
|
|
77
|
+
});
|
|
78
|
+
if (!res.apiKey)
|
|
79
|
+
process.exit(0);
|
|
80
|
+
apiKey = res.apiKey;
|
|
81
|
+
}
|
|
82
|
+
// Channels
|
|
83
|
+
step(3, 5, 'Kanalları seçin');
|
|
84
|
+
const { channels } = await prompts({
|
|
85
|
+
type: 'multiselect',
|
|
86
|
+
name: 'channels',
|
|
87
|
+
message: 'Hangi kanalları aktif etmek istiyorsunuz?',
|
|
88
|
+
choices: [
|
|
89
|
+
{ title: chalk.blue('Telegram'), value: 'telegram', selected: true },
|
|
90
|
+
{ title: chalk.green('WhatsApp'), value: 'whatsapp' },
|
|
91
|
+
{ title: chalk.magenta('Slack'), value: 'slack' },
|
|
92
|
+
{ title: chalk.yellow('Discord'), value: 'discord' },
|
|
93
|
+
{ title: chalk.red('Signal'), value: 'signal' },
|
|
94
|
+
],
|
|
95
|
+
hint: '- Space ile seç, Enter ile onayla',
|
|
96
|
+
});
|
|
97
|
+
// Port
|
|
98
|
+
step(4, 5, 'Ağ ayarları');
|
|
99
|
+
const { port, domain } = await prompts([
|
|
100
|
+
{
|
|
101
|
+
type: 'number',
|
|
102
|
+
name: 'port',
|
|
103
|
+
message: 'Gateway port:',
|
|
104
|
+
initial: 3000,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'text',
|
|
108
|
+
name: 'domain',
|
|
109
|
+
message: 'Domain (opsiyonel):',
|
|
110
|
+
initial: '',
|
|
111
|
+
},
|
|
112
|
+
]);
|
|
113
|
+
// Install
|
|
114
|
+
step(5, 5, 'NexOS kuruluyor...');
|
|
115
|
+
const configDir = path.join(process.env.HOME || '~', '.nexos');
|
|
116
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
117
|
+
const config = {
|
|
118
|
+
version: '0.2.4',
|
|
119
|
+
provider: { type: provider, apiKey },
|
|
120
|
+
channels: channels || [],
|
|
121
|
+
gateway: { port: port || 3000, domain: domain || '' },
|
|
122
|
+
createdAt: new Date().toISOString(),
|
|
123
|
+
};
|
|
124
|
+
fs.writeFileSync(path.join(configDir, 'config.json'), JSON.stringify(config, null, 2));
|
|
125
|
+
success('Config oluşturuldu → ~/.nexos/config.json');
|
|
126
|
+
success('NexOS hazır!');
|
|
127
|
+
console.log(boxen(chalk.green.bold('🎉 Kurulum tamamlandı!\n\n') +
|
|
128
|
+
chalk.white('Gateway başlatmak için:\n') +
|
|
129
|
+
chalk.cyan(' nexos start\n\n') +
|
|
130
|
+
chalk.white('Dashboard:\n') +
|
|
131
|
+
chalk.cyan(` http://localhost:${port || 3000}`), {
|
|
132
|
+
padding: 1,
|
|
133
|
+
margin: { top: 1, bottom: 1, left: 2, right: 2 },
|
|
134
|
+
borderStyle: 'round',
|
|
135
|
+
borderColor: 'green',
|
|
136
|
+
}));
|
|
17
137
|
});
|
|
18
138
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@emremeydanci/nexos",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "Self-hosted AI gateway. Connect any messaging channel to any AI model.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"nexos": "./dist/index.js"
|
|
@@ -34,13 +34,17 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"axios": "^1.7.0",
|
|
36
36
|
"chalk": "^4.1.2",
|
|
37
|
-
"commander": "^12.0.0"
|
|
37
|
+
"commander": "^12.0.0",
|
|
38
|
+
"prompts": "^2.4.2",
|
|
39
|
+
"boxen": "^5.1.2",
|
|
40
|
+
"figlet": "^1.7.0"
|
|
38
41
|
},
|
|
39
42
|
"devDependencies": {
|
|
40
43
|
"typescript": "^5.0.0",
|
|
41
44
|
"@types/node": "^22.0.0",
|
|
42
|
-
"@types/prompts": "^2.4.
|
|
43
|
-
"tsx": "^4.0.0"
|
|
45
|
+
"@types/prompts": "^2.4.9",
|
|
46
|
+
"tsx": "^4.0.0",
|
|
47
|
+
"@types/figlet": "^1.5.8"
|
|
44
48
|
},
|
|
45
49
|
"type": "module",
|
|
46
50
|
"engines": {
|