@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.
@@ -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 kurulumunu başlat')
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
- console.log(chalk.green('Docker hazır'));
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 (err) {
15
- console.error(chalk.red('Docker bulunamadı: ' + err.message));
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;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,GAAI,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC,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.4",
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.0",
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": {