vantuz 3.3.1 → 3.3.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.
@@ -1,10 +0,0 @@
1
- @echo off
2
- rem OpenClaw Gateway (v2026.2.9)
3
- set PATH=C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Oracle\Java\java8path;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Python27\python.exe;C:\Python27\Scripts;C:\Program Files (x86)\Nmap\;c:\Users\OSMBILISIM\AppData\Local\Programs\cursor\resources\app\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\CMake\bin;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files\PostgreSQL\15\bin;C:\Users\Osmbilisimsatis\AppData\Roaming\npm;C:\Users\OSMBILISIM\scoop\shims;C:\Users\OSMBILISIM\AppData\Local\Programs\Python\Python310\Scripts\;C:\Users\OSMBILISIM\AppData\Local\Programs\Python\Python310\;C:\Users\OSMBILISIM\AppData\Local\Microsoft\WindowsApps;C:\Users\OSMBILISIM\AppData\Local\Programs\Git\cmd;C:\Users\OSMBILISIM\AppData\Roaming\npm;C:\Users\OSMBILISIM\AppData\Local\Programs\Windsurf\bin;C:\Users\OSMBILISIM\AppData\Local\Programs\cursor\resources\app\bin;c:\Users\OSMBILISIM\AppData\Local\Programs\cursor\resources\app\bin;C:\Program Files\GitHub CLI\;C:\Program Files\Void\bin;C:\Users\OSMBILISIM\Downloads\flutter\bin;C:\Users\OSMBILISIM\Downloads\php-8.4.11-nts-Win32-vs17-x64;C:\Users\OSMBILISIM\Downloads\flutter\bin;C:\xampp\php;C:\ProgramData\ComposerSetup\bin;C:\Ruby34-x64\msys64\ucrt64\bin;C:\Ruby34-x64\bin;C:\Users\OSMBILISIM\AppData\Local\Programs\Python\Python310\python.exe;C:\Users\OSMBILISIM\go\bin;C:\Program Files\Go\bin;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\Program Files\nodejs\;C:\Program Files\dotnet\;C:\Program Files\cursor\resources\app\bin;C:\Program Files\Tailscale\;C:\Python27\python.exe;C:\Python27\Scripts;C:\Program Files (x86)\Nmap\;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\CMake\bin;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files\PostgreSQL\15\bin;C:\Users\Osmbilisimsatis\AppData\Roaming\npm;C:\Users\OSMBILISIM\scoop\shims;C:\Users\OSMBILISIM\AppData\Local\Programs\Python\Python310\Scripts\;C:\Users\OSMBILISIM\AppData\Local\Programs\Python\Python310\;C:\Users\OSMBILISIM\AppData\Local\Microsoft\WindowsApps;C:\Users\OSMBILISIM\AppData\Local\Programs\Git\cmd;C:\Users\OSMBILISIM\AppData\Local\Programs\Windsurf\bin;C:\Program Files\GitHub CLI\;C:\Program Files;C:\Users\OSMBILISIM\go\bin;C:\Users\OSMBILISIM\AppData\Local\Programs\Qoder\bin;C:\Users\OSMBILISIM\AppData\Roaming\npm;C:\Users\OSMBILISIM\AppData\Local\Programs\Antigravity\bin;C:\Users\OSMBILISIM\AppData\Local\Programs\Ollama
4
- set OPENCLAW_GATEWAY_PORT=18789
5
- set OPENCLAW_GATEWAY_TOKEN=e432e1210dcfb65a16122ce44ccaabeb6fefac299759b841
6
- set OPENCLAW_SYSTEMD_UNIT=openclaw-gateway.service
7
- set OPENCLAW_SERVICE_MARKER=openclaw
8
- set OPENCLAW_SERVICE_KIND=gateway
9
- set OPENCLAW_SERVICE_VERSION=2026.2.9
10
- call npx openclaw gateway --port 18789 --allow-unconfigured
@@ -1,7 +0,0 @@
1
- {
2
- "version": 1,
3
- "deviceId": "b37c08a4ffb5fb274c735d5c4a9dafa001447d8ac18b05102129e2cafed4307c",
4
- "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEA/WoKlAj3d+1nj3EEJaiCy+N4drHLu3/+q00EJeNDXtk=\n-----END PUBLIC KEY-----\n",
5
- "privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIGk9gpUGGch4gQg/ozBZf0R63/MXlTqQju9U6IuZQpaB\n-----END PRIVATE KEY-----\n",
6
- "createdAtMs": 1770715930222
7
- }
@@ -1,32 +0,0 @@
1
- {
2
- "messages": {
3
- "ackReactionScope": "group-mentions"
4
- },
5
- "agents": {
6
- "defaults": {
7
- "maxConcurrent": 4,
8
- "subagents": {
9
- "maxConcurrent": 8
10
- },
11
- "compaction": {
12
- "mode": "safeguard"
13
- }
14
- }
15
- },
16
- "gateway": {
17
- "auth": {
18
- "mode": "token",
19
- "token": "e432e1210dcfb65a16122ce44ccaabeb6fefac299759b841"
20
- }
21
- },
22
- "wizard": {
23
- "lastRunAt": "2026-02-10T09:32:30.166Z",
24
- "lastRunVersion": "2026.2.9",
25
- "lastRunCommand": "doctor",
26
- "lastRunMode": "local"
27
- },
28
- "meta": {
29
- "lastTouchedVersion": "2026.2.9",
30
- "lastTouchedAt": "2026-02-10T09:32:30.181Z"
31
- }
32
- }
package/DOCS_TR.md DELETED
@@ -1,298 +0,0 @@
1
- # 🐙 Vantuz AI - Türkçe Teknik Dokümantasyon
2
-
3
- ## İçindekiler
4
-
5
- 1. [Mimari Genel Bakış](#mimari)
6
- 2. [Plugin Yapısı](#plugin-yapısı)
7
- 3. [Tools (Araçlar)](#tools)
8
- 4. [Commands (Komutlar)](#commands)
9
- 5. [Services (Servisler)](#services)
10
- 6. [Hippocampus Hafıza](#hippocampus)
11
- 7. [Yapılandırma](#yapılandırma)
12
- 8. [API Referansı](#api-referansı)
13
-
14
- ---
15
-
16
- ## Mimari
17
-
18
- Vantuz, **OpenClaw Gateway** üzerine inşa edilmiş bir plugin sistemidir.
19
-
20
- ```
21
- ┌─────────────────────────────────────────────────────────────┐
22
- │ OpenClaw Gateway │
23
- │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
24
- │ │ WhatsApp │ │ Telegram │ │ Discord │ │
25
- │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
26
- │ │ │ │ │
27
- │ └─────────────┼─────────────┘ │
28
- │ ▼ │
29
- │ ┌─────────────┐ │
30
- │ │ Vantuz Core │ │
31
- │ │ Plugin │ │
32
- │ └─────┬───────┘ │
33
- │ │ │
34
- │ ┌───────┬───────┼───────┬───────┐ │
35
- │ ▼ ▼ ▼ ▼ ▼ │
36
- │ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ │
37
- │ │Repri-││Vision││Senti-││Cross-││Analy-│ │
38
- │ │cer ││ AI ││ment ││Border││tics │ │
39
- │ └──────┘└──────┘└──────┘└──────┘└──────┘ │
40
- │ │ │
41
- │ ┌─────▼───────┐ │
42
- │ │ Hippocampus │ │
43
- │ │ Memory │ │
44
- │ └─────────────┘ │
45
- └─────────────────────────────────────────────────────────────┘
46
- ```
47
-
48
- ---
49
-
50
- ## Plugin Yapısı
51
-
52
- ```
53
- plugins/vantuz/
54
- ├── index.js # Ana plugin entry point
55
- ├── package.json # Plugin manifest
56
- ├── tools/
57
- │ ├── repricer.js # Kan Emici fiyat robotu
58
- │ ├── vision.js # Fotoğraf → ürün
59
- │ ├── sentiment.js # Yorum analizi
60
- │ ├── crossborder.js # Sınır ötesi satış
61
- │ ├── product.js # Ürün CRUD
62
- │ └── analytics.js # Raporlama
63
- ├── services/
64
- │ └── license.js # Lisans doğrulama
65
- ├── memory/
66
- │ └── hippocampus.js # Hafıza sistemi
67
- └── platforms/
68
- └── index.js # Pazaryeri API stubs
69
- ```
70
-
71
- ---
72
-
73
- ## Tools
74
-
75
- ### vantuz.repricer
76
-
77
- Rakip fiyatlarını analiz eder ve karar verir.
78
-
79
- **Parametreler:**
80
- | Param | Tip | Zorunlu | Açıklama |
81
- |-------|-----|---------|----------|
82
- | barcode | string | ✅ | Ürün barkodu/SKU |
83
- | platform | string | - | trendyol, hepsiburada, amazon, n11, all |
84
- | targetMargin | number | - | Hedef kar marjı % |
85
- | action | string | - | analyze, apply, schedule |
86
-
87
- **Örnek:**
88
- ```json
89
- {
90
- "name": "vantuz.repricer",
91
- "parameters": {
92
- "barcode": "SKU-12345",
93
- "platform": "trendyol",
94
- "targetMargin": 25,
95
- "action": "analyze"
96
- }
97
- }
98
- ```
99
-
100
- ---
101
-
102
- ### vantuz.vision
103
-
104
- Fotoğraftan ürün bilgisi çıkarır.
105
-
106
- **Parametreler:**
107
- | Param | Tip | Zorunlu | Açıklama |
108
- |-------|-----|---------|----------|
109
- | imageUrl | string | ✅ | Görsel URL veya base64 |
110
- | targetPlatforms | array | - | Hedef pazaryerleri |
111
- | autoPublish | boolean | - | Otomatik yayınla |
112
-
113
- ---
114
-
115
- ### vantuz.sentiment
116
-
117
- Müşteri yorumlarını analiz eder.
118
-
119
- **Parametreler:**
120
- | Param | Tip | Zorunlu | Açıklama |
121
- |-------|-----|---------|----------|
122
- | productId | string | ✅ | Ürün ID/barkod |
123
- | platform | string | - | Pazaryeri |
124
- | period | string | - | 7d, 30d, 90d, all |
125
-
126
- ---
127
-
128
- ### vantuz.crossborder
129
-
130
- Uluslararası satış hazırlığı yapar.
131
-
132
- **Parametreler:**
133
- | Param | Tip | Zorunlu | Açıklama |
134
- |-------|-----|---------|----------|
135
- | productId | string | ✅ | Kaynak ürün ID |
136
- | targetMarket | string | ✅ | de, us, uk, fr |
137
- | fulfillment | string | - | fba, fbm, self |
138
-
139
- ---
140
-
141
- ## Commands
142
-
143
- Kullanıcılar WhatsApp/Telegram'dan doğrudan kullanabilir:
144
-
145
- | Komut | Açıklama | Örnek |
146
- |-------|----------|-------|
147
- | `/stok` | Stok özeti | `/stok trendyol` |
148
- | `/fiyat` | Fiyat güncelle | `/fiyat SKU123 199` |
149
- | `/rapor` | Satış raporu | `/rapor 7d` |
150
- | `/rakip` | Rakip analizi | `/rakip SKU123` |
151
- | `/lisans` | Lisans durumu | `/lisans` |
152
-
153
- ---
154
-
155
- ## Services
156
-
157
- ### vantuz-license
158
- Başlatmada lisans doğrulaması yapar. Her 24 saatte bir kontrol tekrarlanır.
159
-
160
- ### vantuz-memory
161
- Hippocampus hafıza sistemini başlatır ve yönetir.
162
-
163
- ### vantuz-repricer-daemon
164
- Her 15 dakikada bir otomatik fiyat kontrolü yapar.
165
-
166
- ---
167
-
168
- ## Hippocampus
169
-
170
- SQLite tabanlı gelişmiş hafıza sistemi.
171
-
172
- ### Tablolar
173
-
174
- **Memory** - Genel hafıza
175
- - type: decision, price_change, product, conversation, insight
176
- - content: Hafıza içeriği
177
- - importance: 0-1 önem skoru
178
- - accessCount: Erişim sayısı
179
-
180
- **PricingDecision** - Fiyat kararları
181
- - barcode, previousPrice, newPrice, reason, outcome
182
-
183
- **ProductContext** - Ürün bağlamı
184
- - avgSalePrice, competitorHistory, customerSentiment
185
-
186
- **LearnedRule** - Öğrenilen kurallar
187
- - trigger, condition, action, confidence
188
-
189
- ### Özellikler
190
-
191
- - **Konsolidasyon**: Her gece 03:00'te eski/önemsiz hafızalar temizlenir
192
- - **Öğrenme**: Başarılı kararlar otomatik kural olur
193
- - **Bağlamsal Hatırlama**: İlgili hafızalar sorgulanabilir
194
-
195
- ---
196
-
197
- ## Yapılandırma
198
-
199
- ### .openclaw/openclaw.json
200
-
201
- ```json
202
- {
203
- "agents": {
204
- "defaults": {
205
- "workspace": "./workspace"
206
- }
207
- },
208
- "channels": {
209
- "whatsapp": { "enabled": true },
210
- "telegram": {
211
- "enabled": true,
212
- "botToken": "${TELEGRAM_BOT_TOKEN}"
213
- }
214
- },
215
- "models": {
216
- "openai": {
217
- "apiKey": "${OPENAI_API_KEY}"
218
- }
219
- },
220
- "plugins": {
221
- "load": {
222
- "paths": ["./plugins/vantuz"]
223
- }
224
- }
225
- }
226
- ```
227
-
228
- ### .env
229
-
230
- ```env
231
- OPENAI_API_KEY=sk-...
232
- TELEGRAM_BOT_TOKEN=123456:ABC...
233
- VANTUZ_LICENSE_KEY=...
234
- ```
235
-
236
- ---
237
-
238
- ## API Referansı
239
-
240
- ### Gateway RPC
241
-
242
- **vantuz.status**
243
- ```json
244
- {
245
- "version": "2.0.0",
246
- "license": { "valid": true, "customer": "..." },
247
- "memory": { "memories": 150, "decisions": 45 },
248
- "platforms": { "trendyol": true, "hepsiburada": true }
249
- }
250
- ```
251
-
252
- **vantuz.config**
253
- ```json
254
- // GET
255
- { "action": "get" }
256
-
257
- // SET
258
- { "action": "set", "data": { "repricerInterval": 30 } }
259
- ```
260
-
261
- ---
262
-
263
- ## Geliştirme
264
-
265
- ### Yeni Tool Ekleme
266
-
267
- ```javascript
268
- // plugins/vantuz/tools/myTool.js
269
- export const myTool = {
270
- name: 'my-tool',
271
- async execute(params, context) {
272
- const { api, memory, license } = context;
273
- // ...
274
- return { success: true, data: {} };
275
- }
276
- };
277
-
278
- // index.js'de register et
279
- api.registerTool({
280
- name: 'vantuz.mytool',
281
- description: '...',
282
- parameters: { ... },
283
- handler: (params) => myTool.execute(params, context)
284
- });
285
- ```
286
-
287
- ### Yeni Command Ekleme
288
-
289
- ```javascript
290
- api.registerCommand({
291
- name: 'mycommand',
292
- description: 'Açıklama',
293
- acceptsArgs: true,
294
- handler: async (ctx) => {
295
- return { text: 'Yanıt' };
296
- }
297
- });
298
- ```
package/onboard.js DELETED
@@ -1,322 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * VANTUZ - Profesyonel Kurulum Sihirbazı
5
- * v3.2.7 - OpenClaw Gateway Entegrasyonlu
6
- */
7
-
8
- import fs from 'fs';
9
- import path from 'path';
10
- import os from 'os';
11
- import readline from 'readline';
12
- import { fileURLToPath } from 'url';
13
-
14
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
15
- const VANTUZ_HOME = path.join(os.homedir(), '.vantuz');
16
- const CONFIG_PATH = path.join(VANTUZ_HOME, '.env');
17
-
18
- // Colors
19
- const colors = {
20
- reset: '\x1b[0m', bold: '\x1b[1m', dim: '\x1b[2m',
21
- red: '\x1b[31m', green: '\x1b[32m', yellow: '\x1b[33m',
22
- blue: '\x1b[34m', magenta: '\x1b[35m', cyan: '\x1b[36m'
23
- };
24
-
25
- const c = (color, text) => `${colors[color]}${text}${colors.reset}`;
26
- const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
27
-
28
- const LOGO = `
29
- V A N T U Z A I
30
- -----------------
31
- Enterprise E-Ticaret Yönetimi
32
- `;
33
-
34
- const WELCOME_BOX = `
35
- -----------------------------------------------------------------
36
- HOŞ GELDİNİZ - Vantuz AI Kurulumu
37
- -----------------------------------------------------------------
38
-
39
- Bu sihirbaz kurulumu tamamlamanıza yardımcı olacak:
40
-
41
- [ ] AI Servis Seçimi
42
- [ ] Pazaryeri Bağlantıları
43
- [ ] İletişim Kanalları
44
- [ ] OpenClaw Gateway Yapılandırması
45
-
46
- -----------------------------------------------------------------
47
- `;
48
-
49
- class OnboardingWizard {
50
- constructor() {
51
- this.envVars = {};
52
- this.step = 0;
53
- this.totalSteps = 6; // Updated total steps
54
- }
55
-
56
- async step_EIAConfig() {
57
- this.step = 5; // Adjust step number
58
- this.printHeader('E-TICARET YÖNETİM AJANSI (EIA) YAPILANDIRMASI');
59
-
60
- console.log('EIA\'nın operasyonlarını optimize etmek için bazı bilgiler sağlayın.\n');
61
-
62
- const competitorUrls = await this.prompt('Rakip Ürün URL\'leri (virgülle ayırarak): ');
63
- if (competitorUrls) {
64
- this.envVars.EIA_COMPETITOR_URLS = competitorUrls.trim();
65
- console.log(c('green', '[OK] Rakip URL\'leri kaydedildi.\n'));
66
- } else {
67
- console.log(c('yellow', '[BİLGİ] Rakip URL\'leri girilmedi.\n'));
68
- }
69
-
70
- const profitMargin = await this.prompt('Hedef Kar Marjı (%) [15]: ');
71
- if (profitMargin && !isNaN(parseFloat(profitMargin))) {
72
- this.envVars.EIA_TARGET_PROFIT_MARGIN = parseFloat(profitMargin);
73
- console.log(c('green', '[OK] Hedef Kar Marjı kaydedildi.\n'));
74
- } else {
75
- this.envVars.EIA_TARGET_PROFIT_MARGIN = 15; // Default if invalid
76
- console.log(c('yellow', '[BİLGİ] Geçersiz kar marjı, varsayılan %15 kullanılıyor.\n'));
77
- }
78
- await sleep(1000);
79
- }
80
-
81
- clear() { console.clear(); }
82
-
83
- async showLogo() {
84
- this.clear();
85
- console.log(c('cyan', LOGO));
86
- await sleep(500);
87
- }
88
-
89
- async run() {
90
- try {
91
- await this.showLogo();
92
- await this.showWelcome();
93
- console.log(c('green', '⚡ Geliştirici Modu: Lisans kontrolü atlandı.\n'));
94
- await this.step1_AIProvider();
95
- await this.step2_Platforms();
96
- await this.step3_Channels();
97
- await this.step4_Gateway();
98
- await this.step_EIAConfig(); // New step
99
- await this.step5_Save();
100
- await this.showSuccess();
101
- } catch (error) {
102
- console.error('\n' + c('red', `Beklenmeyen Hata: ${error.message}`));
103
- process.exit(1);
104
- }
105
- }
106
-
107
- printHeader(title) {
108
- this.clear();
109
- console.log(c('cyan', LOGO));
110
- console.log('\n' + c('bold', `ADIM ${this.step}/${this.totalSteps}: ${title}`));
111
- console.log('-'.repeat(50) + '\n');
112
- }
113
-
114
- async showWelcome() {
115
- console.log(WELCOME_BOX);
116
- await this.prompt(c('dim', 'Devam etmek için Enter\'a basın...'));
117
- }
118
-
119
- // ADIM 1: AI PROVIDER
120
- async step1_AIProvider() {
121
- this.step = 1;
122
- this.printHeader('YAPAY ZEKA SERVİSİ');
123
-
124
- console.log('Kullanılacak AI modelini seçin:\n');
125
- console.log(' 1. Google Gemini (Önerilen/Ücretsiz)');
126
- console.log(' 2. OpenAI GPT-4o');
127
- console.log(' 3. Anthropic Claude 3.5');
128
- console.log(' 4. DeepSeek V3');
129
- console.log(' 5. Groq (Hızlı/Ücretsiz)');
130
- console.log(c('dim', ' S. Atla (Daha sonra ayarla)\n'));
131
-
132
- const choice = await this.prompt('Seçiminiz (1-5 veya S) [1]: ') || '1';
133
-
134
- if (choice.toLowerCase() === 's') {
135
- console.log(c('yellow', '\n[ATLANDI] AI yapılandırması geçildi.\n'));
136
- await sleep(1000);
137
- return;
138
- }
139
-
140
- const providers = {
141
- '1': { label: 'Google Gemini', env: 'GEMINI_API_KEY' },
142
- '2': { label: 'OpenAI', env: 'OPENAI_API_KEY' },
143
- '3': { label: 'Anthropic', env: 'ANTHROPIC_API_KEY' },
144
- '4': { label: 'DeepSeek', env: 'DEEPSEEK_API_KEY' },
145
- '5': { label: 'Groq', env: 'GROQ_API_KEY' }
146
- };
147
-
148
- const selected = providers[choice] || providers['1'];
149
- console.log(c('green', `\n[SEÇİLDİ] ${selected.label}\n`));
150
-
151
- const key = await this.prompt(`${selected.label} API Key: `);
152
-
153
- if (key && key.trim()) {
154
- this.envVars[selected.env] = key.trim();
155
- console.log(c('green', '\n[OK] API anahtarı kaydedildi.\n'));
156
- } else {
157
- console.log(c('yellow', '\n[BİLGİ] API anahtarı girilmedi, daha sonra ekleyebilirsiniz.\n'));
158
- }
159
- await sleep(1000);
160
- }
161
-
162
- // ADIM 2: PAZARYERLERİ
163
- async step2_Platforms() {
164
- this.step = 2;
165
- this.printHeader('PAZARYERİ ENTEGRASYONLARI');
166
-
167
- console.log('Hangi pazaryerini yapılandırmak istersiniz?\n');
168
- console.log(' 1. Trendyol');
169
- console.log(' 2. Hepsiburada');
170
- console.log(' 3. N11');
171
- console.log(' 4. Amazon');
172
- console.log(c('dim', ' S. Atla (Tümünü geç)\n'));
173
-
174
- const choice = await this.prompt('Seçiminiz (1-4 veya S) [1]: ') || '1';
175
-
176
- if (choice.toLowerCase() === 's') return;
177
-
178
- if (choice === '1') {
179
- console.log(c('cyan', '\nTrendyol Yapılandırması\n'));
180
- console.log(c('dim', '(Boş bırakıp Enter\'a basarak geçebilirsiniz)\n'));
181
-
182
- const supplierId = await this.prompt('Supplier ID: ');
183
- if (!supplierId) {
184
- console.log(c('yellow', '[ATLANDI] Trendyol ayarları yapılmadı.'));
185
- return;
186
- }
187
-
188
- const apiKey = await this.prompt('API Key: ');
189
- const apiSecret = await this.prompt('API Secret: ');
190
-
191
- this.envVars.TRENDYOL_SUPPLIER_ID = supplierId;
192
- this.envVars.TRENDYOL_API_KEY = apiKey;
193
- this.envVars.TRENDYOL_API_SECRET = apiSecret;
194
-
195
- console.log(c('green', '\n[OK] Trendyol bilgileri alındı.\n'));
196
- await sleep(1000);
197
- }
198
- }
199
-
200
- // ADIM 3: KANALLAR
201
- async step3_Channels() {
202
- this.step = 3;
203
- this.printHeader('İLETİŞİM KANALLARI');
204
-
205
- console.log('WhatsApp ve Telegram entegrasyonu.\n');
206
-
207
- const setup = await this.prompt('Telegram Bot Token eklemek ister misiniz? (e/H): ');
208
-
209
- if (setup.toLowerCase() === 'e' || setup.toLowerCase() === 'y') {
210
- const token = await this.prompt('Telegram Bot Token: ');
211
- if (token) {
212
- this.envVars.TELEGRAM_BOT_TOKEN = token;
213
- console.log(c('green', '\n[OK] Telegram token alındı.\n'));
214
- }
215
- }
216
-
217
- console.log(c('dim', '\nNot: WhatsApp bağlantısı "openclaw channels login" ile yapılır.\n'));
218
- await sleep(1500);
219
- }
220
-
221
- // ADIM 4: VANTUZ GATEWAY
222
- async step4_Gateway() {
223
- this.step = 4;
224
- this.printHeader('VANTUZ GATEWAY');
225
-
226
- console.log('Vantuz Gateway, AI ve kanal yönetimini güçlendirir.\n');
227
-
228
- // .openclaw/ klasörü kontrolü
229
- const openclawDir = path.join(process.cwd(), '.openclaw');
230
- const openclawConfig = path.join(openclawDir, 'openclaw.json');
231
-
232
- if (fs.existsSync(openclawConfig)) {
233
- console.log(c('green', '✔ Gateway yapılandırması bulundu.'));
234
- try {
235
- const config = JSON.parse(fs.readFileSync(openclawConfig, 'utf-8'));
236
- if (config.gateway?.auth?.token) {
237
- console.log(c('green', '✔ Token ve güvenlik anahtarları hazır.'));
238
- }
239
- } catch (e) {
240
- console.log(c('yellow', '⚠ Config okunamadı.'));
241
- }
242
- } else {
243
- console.log(c('yellow', '⚠ Gateway yapılandırması eksik.'));
244
- console.log(c('dim', '\nOtomatik olarak oluşturulacak...\n'));
245
- }
246
-
247
- console.log(c('dim', '\nBaşlatmak için sadece: start.bat'));
248
- console.log(c('dim', 'Durum kontrolü: vantuz gateway status\n'));
249
-
250
- await this.prompt(c('dim', 'Devam etmek için Enter\'a basın...'));
251
- }
252
-
253
- // KAYDET
254
- async step5_Save() {
255
- this.step = 5;
256
- this.printHeader('AYARLAR KAYDEDİLİYOR');
257
-
258
- console.log('Yapılandırma dosyası oluşturuluyor...');
259
-
260
- if (!fs.existsSync(VANTUZ_HOME)) {
261
- fs.mkdirSync(VANTUZ_HOME, { recursive: true });
262
- }
263
-
264
- let envContent = '# Vantuz AI Yapılandırması\n';
265
- envContent += `# Oluşturulma Tarihi: ${new Date().toISOString()}\n\n`;
266
-
267
- for (const [key, value] of Object.entries(this.envVars)) {
268
- if (value) {
269
- envContent += `${key}=${value}\n`;
270
- }
271
- }
272
-
273
- fs.writeFileSync(CONFIG_PATH, envContent);
274
- console.log(c('green', `[OK] Dosya kaydedildi: ${CONFIG_PATH}`));
275
- await sleep(500);
276
-
277
- // Klasörler
278
- ['logs', 'data', 'cache'].forEach(dir => {
279
- const p = path.join(VANTUZ_HOME, dir);
280
- if (!fs.existsSync(p)) fs.mkdirSync(p, { recursive: true });
281
- });
282
- console.log(c('green', '[OK] Veri klasörleri oluşturuldu.'));
283
- await sleep(1000);
284
- }
285
-
286
- async showSuccess() {
287
- this.clear();
288
- console.log('\n');
289
- console.log(c('green', '=================================================='));
290
- console.log(c('green', ' KURULUM BAŞARIYLA TAMAMLANDI '));
291
- console.log(c('green', '=================================================='));
292
- console.log('\n');
293
- console.log('Vantuz AI kullanıma hazırdır.\n');
294
- console.log('Başlamak için şu komutları kullanabilirsiniz:');
295
- console.log(c('cyan', ' vantuz tui') + ' - Sohbet arayüzünü başlatır');
296
- console.log(c('cyan', ' vantuz status') + ' - Sistem durumunu gösterir');
297
- console.log(c('cyan', ' vantuz gateway') + ' - Gateway durumunu gösterir');
298
- console.log(c('cyan', ' vantuz doctor') + ' - Sistem sağlık kontrolü');
299
- console.log('\n');
300
-
301
- await this.prompt(c('dim', 'Çıkmak için Enter\'a basın...'));
302
- }
303
-
304
- // ARAÇLAR
305
- prompt(question) {
306
- return new Promise((resolve) => {
307
- const rl = readline.createInterface({
308
- input: process.stdin,
309
- output: process.stdout
310
- });
311
-
312
- rl.question(question, (answer) => {
313
- rl.close();
314
- resolve(answer.trim());
315
- });
316
- });
317
- }
318
- }
319
-
320
- // BAŞLAT
321
- const wizard = new OnboardingWizard();
322
- wizard.run();