natureco-cli 5.19.0 → 5.20.1

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 (196) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/package.json +1 -1
  3. package/skills/a-b-testing/SKILL.md +34 -0
  4. package/skills/accessibility-audit/SKILL.md +34 -0
  5. package/skills/agent-memory/SKILL.md +34 -0
  6. package/skills/agent-orchestration/SKILL.md +34 -0
  7. package/skills/analytics-setup/SKILL.md +34 -0
  8. package/skills/api-design/SKILL.md +34 -0
  9. package/skills/api-versioning/SKILL.md +34 -0
  10. package/skills/audio-transcription/SKILL.md +34 -0
  11. package/skills/authentication-patterns/SKILL.md +34 -0
  12. package/skills/authorization-rbac/SKILL.md +34 -0
  13. package/skills/backup-strategy/SKILL.md +34 -0
  14. package/skills/bash-scripting/SKILL.md +34 -0
  15. package/skills/batch-api-calls/SKILL.md +34 -0
  16. package/skills/batch-processing/SKILL.md +34 -0
  17. package/skills/bulk-file-operations/SKILL.md +34 -0
  18. package/skills/cache-responses/SKILL.md +34 -0
  19. package/skills/caching-strategy/SKILL.md +34 -0
  20. package/skills/calendar-optimization/SKILL.md +34 -0
  21. package/skills/changelog-generation/SKILL.md +34 -0
  22. package/skills/chat-bot-design/SKILL.md +34 -0
  23. package/skills/chunking-strategy/SKILL.md +34 -0
  24. package/skills/ci-cd-pipeline/SKILL.md +34 -0
  25. package/skills/classification-pipeline/SKILL.md +34 -0
  26. package/skills/clipboard-master/SKILL.md +34 -0
  27. package/skills/code-explanation/SKILL.md +34 -0
  28. package/skills/code-generation/SKILL.md +34 -0
  29. package/skills/code-migration/SKILL.md +34 -0
  30. package/skills/code-review-checklist/SKILL.md +34 -0
  31. package/skills/contact-management/SKILL.md +34 -0
  32. package/skills/content-generation/SKILL.md +34 -0
  33. package/skills/context-pruning/SKILL.md +34 -0
  34. package/skills/context-window-management/SKILL.md +34 -0
  35. package/skills/continuous-improvement/SKILL.md +34 -0
  36. package/skills/cron-scheduling/SKILL.md +34 -0
  37. package/skills/cross-platform-compat/SKILL.md +34 -0
  38. package/skills/csv-processing/SKILL.md +34 -0
  39. package/skills/daily-journal/SKILL.md +34 -0
  40. package/skills/data-analysis/SKILL.md +34 -0
  41. package/skills/data-backup/SKILL.md +34 -0
  42. package/skills/data-cleaning/SKILL.md +34 -0
  43. package/skills/data-extraction/SKILL.md +34 -0
  44. package/skills/data-validation/SKILL.md +34 -0
  45. package/skills/database-migrations/SKILL.md +34 -0
  46. package/skills/database-schema-design/SKILL.md +34 -0
  47. package/skills/decision-matrix/SKILL.md +34 -0
  48. package/skills/dependency-management/SKILL.md +34 -0
  49. package/skills/dev-environment-setup/SKILL.md +34 -0
  50. package/skills/distraction-blocker/SKILL.md +34 -0
  51. package/skills/docker-optimization/SKILL.md +34 -0
  52. package/skills/document-template/SKILL.md +34 -0
  53. package/skills/documentation-gen/SKILL.md +34 -0
  54. package/skills/efficient-formatting/SKILL.md +34 -0
  55. package/skills/email-management/SKILL.md +34 -0
  56. package/skills/email-service/SKILL.md +34 -0
  57. package/skills/embedding-generation/SKILL.md +34 -0
  58. package/skills/entity-extraction/SKILL.md +34 -0
  59. package/skills/environment-config/SKILL.md +34 -0
  60. package/skills/error-handling/SKILL.md +34 -0
  61. package/skills/estimation-techniques/SKILL.md +34 -0
  62. package/skills/event-driven-architecture/SKILL.md +34 -0
  63. package/skills/excel-automation/SKILL.md +34 -0
  64. package/skills/execution-monitoring/SKILL.md +34 -0
  65. package/skills/expense-tracking/SKILL.md +34 -0
  66. package/skills/feature-engineering/SKILL.md +34 -0
  67. package/skills/feature-flags/SKILL.md +34 -0
  68. package/skills/file-conversion/SKILL.md +34 -0
  69. package/skills/file-upload-handling/SKILL.md +34 -0
  70. package/skills/fine-tuning-prep/SKILL.md +34 -0
  71. package/skills/focus-mode/SKILL.md +34 -0
  72. package/skills/form-validation/SKILL.md +34 -0
  73. package/skills/function-calling/SKILL.md +34 -0
  74. package/skills/git-workflow/SKILL.md +34 -0
  75. package/skills/goal-setting/SKILL.md +34 -0
  76. package/skills/graphql-design/SKILL.md +34 -0
  77. package/skills/habit-tracker/SKILL.md +34 -0
  78. package/skills/hallucination-detection/SKILL.md +34 -0
  79. package/skills/image-processing/SKILL.md +34 -0
  80. package/skills/json-transformation/SKILL.md +34 -0
  81. package/skills/keyboard-shortcuts/SKILL.md +34 -0
  82. package/skills/knowledge-base/SKILL.md +34 -0
  83. package/skills/knowledge-graph/SKILL.md +34 -0
  84. package/skills/kubernetes-deployment/SKILL.md +34 -0
  85. package/skills/language-translation/SKILL.md +34 -0
  86. package/skills/llm-chaining/SKILL.md +34 -0
  87. package/skills/localization-i18n/SKILL.md +34 -0
  88. package/skills/logging-best-practices/SKILL.md +34 -0
  89. package/skills/machine-learning-pipeline/SKILL.md +34 -0
  90. package/skills/meeting-notes/SKILL.md +34 -0
  91. package/skills/meeting-scheduler/SKILL.md +34 -0
  92. package/skills/message-queues/SKILL.md +34 -0
  93. package/skills/message-summarization/SKILL.md +34 -0
  94. package/skills/microservices-architecture/SKILL.md +34 -0
  95. package/skills/milestone-tracking/SKILL.md +34 -0
  96. package/skills/model-deployment/SKILL.md +34 -0
  97. package/skills/model-evaluation/SKILL.md +34 -0
  98. package/skills/monitoring-setup/SKILL.md +34 -0
  99. package/skills/monorepo-setup/SKILL.md +34 -0
  100. package/skills/multi-agent-systems/SKILL.md +34 -0
  101. package/skills/network-troubleshooting/SKILL.md +34 -0
  102. package/skills/note-organization/SKILL.md +34 -0
  103. package/skills/package-publishing/SKILL.md +34 -0
  104. package/skills/password-generator/SKILL.md +34 -0
  105. package/skills/pdf-processing/SKILL.md +34 -0
  106. package/skills/performance-optimization/SKILL.md +34 -0
  107. package/skills/pomodoro-timer/SKILL.md +34 -0
  108. package/skills/powershell-automation/SKILL.md +34 -0
  109. package/skills/priority-filtering/SKILL.md +34 -0
  110. package/skills/project-tracking/SKILL.md +34 -0
  111. package/skills/prompt-compression/SKILL.md +34 -0
  112. package/skills/prompt-engineering/SKILL.md +34 -0
  113. package/skills/push-notifications/SKILL.md +34 -0
  114. package/skills/rag-implementation/SKILL.md +34 -0
  115. package/skills/rate-limiting/SKILL.md +34 -0
  116. package/skills/real-time-communication/SKILL.md +34 -0
  117. package/skills/refactoring-strategy/SKILL.md +34 -0
  118. package/skills/regex-mastery/SKILL.md +34 -0
  119. package/skills/report-generation/SKILL.md +34 -0
  120. package/skills/research-compiler/SKILL.md +34 -0
  121. package/skills/responsive-design/SKILL.md +34 -0
  122. package/skills/rest-api-patterns/SKILL.md +34 -0
  123. package/skills/retrospectives/SKILL.md +34 -0
  124. package/skills/risk-assessment/SKILL.md +34 -0
  125. package/skills/roadmap-creation/SKILL.md +34 -0
  126. package/skills/search-implementation/SKILL.md +34 -0
  127. package/skills/secrets-management/SKILL.md +34 -0
  128. package/skills/security-audit/SKILL.md +34 -0
  129. package/skills/selective-memory/SKILL.md +34 -0
  130. package/skills/semantic-search/SKILL.md +34 -0
  131. package/skills/semantic-versioning/SKILL.md +34 -0
  132. package/skills/sentiment-analysis/SKILL.md +34 -0
  133. package/skills/seo-optimization/SKILL.md +34 -0
  134. package/skills/snippet-manager/SKILL.md +34 -0
  135. package/skills/sprint-planning/SKILL.md +34 -0
  136. package/skills/sql-query-optimization/SKILL.md +34 -0
  137. package/skills/stakeholder-communication/SKILL.md +34 -0
  138. package/skills/state-management/SKILL.md +34 -0
  139. package/skills/statistical-analysis/SKILL.md +34 -0
  140. package/skills/streaming-responses/SKILL.md +34 -0
  141. package/skills/structured-output/SKILL.md +34 -0
  142. package/skills/summarization-techniques/SKILL.md +34 -0
  143. package/skills/system-diagnostics/SKILL.md +34 -0
  144. package/skills/task-decomposition/SKILL.md +34 -0
  145. package/skills/task-prioritization/SKILL.md +34 -0
  146. package/skills/template-library/SKILL.md +34 -0
  147. package/skills/test-generation/SKILL.md +34 -0
  148. package/skills/testing-strategy/SKILL.md +34 -0
  149. package/skills/text-expansion/SKILL.md +34 -0
  150. package/skills/time-blocking/SKILL.md +34 -0
  151. package/skills/token-budgeting/SKILL.md +34 -0
  152. package/skills/token-optimization/SKILL.md +34 -0
  153. package/skills/tool-calling-patterns/SKILL.md +34 -0
  154. package/skills/vector-database-setup/SKILL.md +34 -0
  155. package/skills/video-editing/SKILL.md +34 -0
  156. package/skills/visualization-creation/SKILL.md +34 -0
  157. package/skills/web-scraping/SKILL.md +34 -0
  158. package/skills/webhook-handling/SKILL.md +34 -0
  159. package/skills/weekly-review/SKILL.md +34 -0
  160. package/skills/workflow-automation/SKILL.md +34 -0
  161. package/src/commands/code_v5.js +377 -73
  162. package/src/commands/help.js +3 -1
  163. package/src/commands/naturehub.js +105 -55
  164. package/src/commands/repl.js +506 -87
  165. package/src/providers/model/anthropic.js +84 -0
  166. package/src/providers/model/gemini.js +49 -0
  167. package/src/providers/model/minimax.js +48 -0
  168. package/src/providers/model/ollama.js +42 -0
  169. package/src/providers/model/openai.js +49 -0
  170. package/src/providers/search/duckduckgo.js +45 -0
  171. package/src/providers/search/exa.js +52 -0
  172. package/src/providers/search/searxng.js +51 -0
  173. package/src/providers/search/tavily.js +47 -0
  174. package/src/tools/model_provider.js +71 -0
  175. package/src/tools/parallel_search.js +40 -49
  176. package/src/tools/search_provider.js +79 -0
  177. package/src/tools/web_search.js +42 -62
  178. package/src/tools/workflow.js +27 -10
  179. package/src/utils/cron.js +82 -126
  180. package/src/utils/effort-levels.js +42 -0
  181. package/src/utils/fallback-chain.js +72 -0
  182. package/src/utils/file-history.js +78 -0
  183. package/src/utils/model-provider.js +113 -0
  184. package/src/utils/permissions.js +147 -0
  185. package/src/utils/plan-mode.js +164 -0
  186. package/src/utils/provider-detect.js +7 -32
  187. package/src/utils/sandbox.js +60 -0
  188. package/src/utils/search-provider.js +62 -0
  189. package/src/utils/session-search.js +66 -0
  190. package/src/utils/structured-output.js +20 -0
  191. package/src/utils/system-prompt.js +28 -2
  192. package/src/utils/tasks.js +132 -0
  193. package/src/utils/tool-hooks.js +154 -0
  194. package/src/utils/tools.js +16 -0
  195. package/src/utils/ultra-review.js +59 -0
  196. package/src/utils/worktree.js +192 -0
@@ -1,14 +1,14 @@
1
1
  /**
2
- * natureco naturehub — Nature Hub'a içerik yayınlama (Phase 6)
2
+ * natureco naturehub — NatureCo Bot API iletişimi
3
3
  *
4
- * natureco.me'nin topluluk akışına CLI'dan içerik gönder.
4
+ * natureco.me/api/v1/bots endpoint'lerini kullanır.
5
5
  * Kullanım:
6
- * natureco naturehub post <text> Yeni gönderi
7
- * natureco naturehub list Son gönderiler
8
- * natureco naturehub trending Trend olan konular
9
- * natureco naturehub config Ayarları göster
6
+ * natureco naturehub post <text> Bota mesaj gönder
7
+ * natureco naturehub list Botları listele
8
+ * natureco naturehub info [bot_id] Bot detayı
9
+ * natureco naturehub config Ayarları göster
10
10
  *
11
- * API endpoint: api.natureco.me/naturehub/* (placeholder)
11
+ * API: https://natureco.me/api/v1/bots
12
12
  */
13
13
 
14
14
  const chalk = require('chalk');
@@ -17,20 +17,35 @@ const { URL } = require('url');
17
17
  const audit = require('../utils/audit');
18
18
 
19
19
  const API_BASE = 'https://api.natureco.me';
20
+ const API_PREFIX = '/api/v1';
20
21
  const CONFIG_KEY = 'naturehub';
21
22
 
23
+ function getApiKey() {
24
+ try {
25
+ const { getConfig } = require('../utils/config');
26
+ const cfg = getConfig();
27
+ return cfg?.apiKey || null;
28
+ } catch { return null; }
29
+ }
30
+
31
+ function getBotId() {
32
+ try {
33
+ const { getConfig } = require('../utils/config');
34
+ const cfg = getConfig();
35
+ return cfg?.naturecoBotId || null;
36
+ } catch { return null; }
37
+ }
38
+
22
39
  async function apiCall(path, options = {}) {
23
- // Geliştirme aşamasında placeholder — gerçek API hazır olunca kullanılacak
24
- // Şimdilik simüle edelim ve kullanıcıya rehberlik edelim
25
40
  return new Promise((resolve, reject) => {
26
- const url = new URL(path, API_BASE);
41
+ const url = new URL(API_PREFIX + path, API_BASE);
27
42
  const reqOptions = {
28
43
  hostname: url.hostname,
29
44
  path: url.pathname + url.search,
30
45
  method: options.method || 'GET',
31
46
  headers: {
32
47
  'Content-Type': 'application/json',
33
- 'User-Agent': 'natureco-cli/3.5',
48
+ 'User-Agent': 'natureco-cli/5.20',
34
49
  ...(options.token ? { 'Authorization': `Bearer ${options.token}` } : {}),
35
50
  ...options.headers,
36
51
  },
@@ -54,51 +69,43 @@ async function apiCall(path, options = {}) {
54
69
  });
55
70
  }
56
71
 
57
- async function getToken() {
58
- const { getConfig } = require('../utils/config');
59
- const cfg = getConfig();
60
- return cfg?.naturehubToken || cfg?.apiKey || null;
61
- }
62
-
63
72
  async function cmdPost(args) {
64
73
  const text = args.join(' ').trim();
65
74
  if (!text) {
66
75
  console.log(chalk.red('\n Kullanım: natureco naturehub post "<mesaj>"\n'));
67
76
  return;
68
77
  }
69
- if (text.length > 500) {
70
- console.log(chalk.yellow('\n ⚠️ Mesaj 500 karakteri aşıyor. Kısaltılacak.\n'));
71
- }
72
- const shortText = text.slice(0, 500);
73
-
74
- console.log(chalk.cyan('\n 📤 Nature Hub\'a gönderiliyor...\n'));
75
- console.log(chalk.gray(` "${shortText}"\n`));
76
78
 
77
- const token = await getToken();
79
+ const token = getApiKey();
78
80
  if (!token) {
79
- console.log(chalk.yellow(' ⚠️ Nature Hub token tanımlı değil.\n'));
80
- console.log(chalk.gray(' Ayarlamak için: ') + chalk.cyan('natureco config set naturehubToken <token>'));
81
- console.log(chalk.gray(' Veya genel API key: ') + chalk.cyan('natureco login'));
82
- console.log('');
83
- console.log(chalk.gray(' Şimdilik yerel olarak kaydedildi.\n'));
84
- saveLocal(shortText);
85
- audit.log(audit.ACTIONS.INFO, { source: 'naturehub', action: 'post', local: true });
81
+ console.log(chalk.yellow('\n ⚠️ API key tanımlı değil. Önce `natureco login` ile giriş yapın.\n'));
82
+ saveLocal(text);
86
83
  return;
87
84
  }
88
85
 
86
+ const botId = getBotId();
87
+ if (!botId) {
88
+ console.log(chalk.yellow('\n ⚠️ Bot ID tanımlı değil. `natureco naturehub list` ile botlarınızı görün.\n'));
89
+ console.log(chalk.gray(' Ayarlamak için: natureco config set naturecoBotId <bot_id>\n'));
90
+ saveLocal(text);
91
+ return;
92
+ }
93
+
94
+ console.log(chalk.cyan(`\n 📤 Bota mesaj gönderiliyor (${botId})...\n`));
95
+ console.log(chalk.gray(` "${text.slice(0, 200)}"\n`));
96
+
89
97
  try {
90
- const result = await apiCall('/naturehub/posts', {
98
+ const result = await apiCall(`/bots/${botId}/messages`, {
91
99
  method: 'POST',
92
100
  token,
93
- body: { text: shortText, source: 'cli' },
101
+ body: { message: text, user_id: 'cli' },
94
102
  });
95
103
  console.log(chalk.green(' ✓ Gönderildi!\n'));
96
- if (result.url) console.log(chalk.cyan(` 🔗 ${result.url}\n`));
97
- audit.log(audit.ACTIONS.INFO, { source: 'naturehub', action: 'post', url: result.url });
104
+ if (result.reply) console.log(chalk.cyan(` 💬 Bot: ${result.reply}\n`));
105
+ audit.log(audit.ACTIONS.INFO, { source: 'naturehub', action: 'post', botId });
98
106
  } catch (e) {
99
- console.log(chalk.yellow(` ⚠️ API henüz hazır değil: ${e.message}`));
100
- console.log(chalk.gray(' Yerel olarak kaydedildi.\n'));
101
- saveLocal(shortText);
107
+ console.log(chalk.red(` Hata: ${e.message}\n`));
108
+ saveLocal(text);
102
109
  }
103
110
  }
104
111
 
@@ -114,24 +121,67 @@ function saveLocal(text) {
114
121
  }
115
122
 
116
123
  async function cmdList() {
117
- console.log(chalk.cyan('\n 🌍 Nature Hub — Son Gönderiler\n'));
118
- console.log(chalk.gray(' ' + '─'.repeat(50)));
119
- console.log(chalk.gray('\n Bu özellik api.natureco.me hazır olunca tam çalışacak.\n'));
120
- console.log(chalk.gray(' Şimdilik tarayıcıdan ziyaret edin: ') + chalk.cyan('https://natureco.me/hub\n'));
124
+ const token = getApiKey();
125
+ if (!token) {
126
+ console.log(chalk.yellow('\n ⚠️ API key tanımlı değil.\n'));
127
+ return;
128
+ }
129
+
130
+ console.log(chalk.cyan('\n 🤖 Botlarınız\n'));
131
+
132
+ try {
133
+ const result = await apiCall('/bots', { method: 'GET', token });
134
+ const bots = Array.isArray(result) ? result : (result.bots || result.data || []);
135
+ if (bots.length === 0) {
136
+ console.log(chalk.gray(' Henüz botunuz yok.\n'));
137
+ return;
138
+ }
139
+ for (const b of bots) {
140
+ console.log(` ${chalk.cyan('●')} ${b.name || b.id} ${chalk.gray(`(${b.id})`)}`);
141
+ if (b.description) console.log(` ${chalk.gray(b.description)}`);
142
+ console.log('');
143
+ }
144
+ console.log(chalk.gray(' Bot ID ayarlamak için: natureco config set naturecoBotId <id>\n'));
145
+ } catch (e) {
146
+ console.log(chalk.red(` ✗ Hata: ${e.message}\n`));
147
+ }
121
148
  }
122
149
 
123
- async function cmdTrending() {
124
- console.log(chalk.cyan('\n 🔥 Trend Konular\n'));
125
- console.log(chalk.gray(' ' + '─'.repeat(50)));
126
- console.log(chalk.gray('\n Bu özellik api.natureco.me hazır olunca tam çalışacak.\n'));
150
+ async function cmdInfo(botId) {
151
+ const token = getApiKey();
152
+ if (!token) {
153
+ console.log(chalk.yellow('\n ⚠️ API key tanımlı değil.\n'));
154
+ return;
155
+ }
156
+
157
+ const id = botId || getBotId();
158
+ if (!id) {
159
+ console.log(chalk.yellow('\n Bot ID gerekli: natureco naturehub info <bot_id>\n'));
160
+ return;
161
+ }
162
+
163
+ console.log(chalk.cyan(`\n 🤖 Bot: ${id}\n`));
164
+ try {
165
+ const result = await apiCall(`/bots/${id}`, { method: 'GET', token });
166
+ console.log(` ${chalk.bold('ID:')} ${result.id}`);
167
+ console.log(` ${chalk.bold('İsim:')} ${result.name || '-'}`);
168
+ console.log(` ${chalk.bold('Açıklama:')} ${result.description || '-'}`);
169
+ console.log(` ${chalk.bold('Durum:')} ${result.status || 'active'}`);
170
+ console.log('');
171
+ } catch (e) {
172
+ console.log(chalk.red(` ✗ Hata: ${e.message}\n`));
173
+ }
127
174
  }
128
175
 
129
176
  async function cmdConfig() {
130
177
  const { getConfig } = require('../utils/config');
131
178
  const cfg = getConfig();
132
- console.log(chalk.cyan('\n ⚙️ Nature Hub Ayarları\n'));
133
- console.log(chalk.gray(' Token: ') + (cfg.naturehubToken ? chalk.green('✓ ayarlı') : chalk.yellow('yok')));
134
- console.log(chalk.gray('\n Ayarlamak için: ') + chalk.cyan('natureco config set naturehubToken <token>'));
179
+ console.log(chalk.cyan('\n ⚙️ NatureCo API Ayarları\n'));
180
+ console.log(chalk.gray(' API Key: ') + (cfg.apiKey ? chalk.green('✓ ayarlı') : chalk.yellow('yok')));
181
+ console.log(chalk.gray(' Bot ID: ') + (cfg.naturecoBotId ? chalk.green(cfg.naturecoBotId) : chalk.yellow('ayarlanmamış')));
182
+ console.log(chalk.gray('\n Giriş: ') + chalk.cyan('natureco login'));
183
+ console.log(chalk.gray(' Bot ID: ') + chalk.cyan('natureco config set naturecoBotId <id>'));
184
+ console.log(chalk.gray(' Botlar: ') + chalk.cyan('natureco naturehub list'));
135
185
  console.log('');
136
186
  }
137
187
 
@@ -139,16 +189,16 @@ async function naturehub(args) {
139
189
  const [action, ...params] = args || [];
140
190
  if (!action || action === 'help') {
141
191
  console.log(chalk.yellow('\n Kullanım:'));
142
- console.log(chalk.gray(' natureco naturehub post <text> Yeni gönderi'));
143
- console.log(chalk.gray(' natureco naturehub list Son gönderiler'));
144
- console.log(chalk.gray(' natureco naturehub trending Trend konular'));
145
- console.log(chalk.gray(' natureco naturehub config Ayarlar'));
192
+ console.log(chalk.gray(' natureco naturehub post "<mesaj>" Bota mesaj gönder'));
193
+ console.log(chalk.gray(' natureco naturehub list Botları listele'));
194
+ console.log(chalk.gray(' natureco naturehub info [bot_id] Bot detayı'));
195
+ console.log(chalk.gray(' natureco naturehub config Ayarlar'));
146
196
  console.log('');
147
197
  return;
148
198
  }
149
199
  if (action === 'post') return cmdPost(params);
150
200
  if (action === 'list') return cmdList();
151
- if (action === 'trending') return cmdTrending();
201
+ if (action === 'info') return cmdInfo(params[0]);
152
202
  if (action === 'config') return cmdConfig();
153
203
  console.log(chalk.red(`\n Bilinmeyen action: ${action}\n`));
154
204
  }