beast-agent 2.76.5 → 2.77.0

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 (54) hide show
  1. package/package.json +1 -1
  2. package/src/agent/bots.js +669 -664
  3. package/src/agent/customtools.js +6 -19
  4. package/src/agent/engine.js +55 -307
  5. package/src/agent/seeds/tool-yazma/SKILL.md +13 -16
  6. package/src/agent/skills.js +14 -35
  7. package/src/agent/supertonic.js +622 -0
  8. package/src/agent/tools.js +3 -7
  9. package/src/main.js +77 -6068
  10. package/src/preload.js +2 -17
  11. package/src/renderer/i18n.js +14 -8
  12. package/src/renderer/index.html +0 -297
  13. package/src/renderer/renderer.js +142 -2280
  14. package/src/renderer/style.css +3 -825
  15. package/src/agent/defaulttools/mt5_barlar2/run.js +0 -188
  16. package/src/agent/defaulttools/mt5_barlar2/tool.json +0 -23
  17. package/src/agent/defaulttools/mt5_bekleyen/run.js +0 -105
  18. package/src/agent/defaulttools/mt5_bekleyen/tool.json +0 -18
  19. package/src/agent/defaulttools/mt5_durum/run.js +0 -93
  20. package/src/agent/defaulttools/mt5_durum/tool.json +0 -10
  21. package/src/agent/defaulttools/mt5_emir/run.js +0 -98
  22. package/src/agent/defaulttools/mt5_emir/tool.json +0 -17
  23. package/src/agent/defaulttools/mt5_emir_iptal/run.js +0 -90
  24. package/src/agent/defaulttools/mt5_emir_iptal/tool.json +0 -12
  25. package/src/agent/defaulttools/mt5_fiyat/run.js +0 -87
  26. package/src/agent/defaulttools/mt5_fiyat/tool.json +0 -16
  27. package/src/agent/defaulttools/mt5_gecmis/run.js +0 -87
  28. package/src/agent/defaulttools/mt5_gecmis/tool.json +0 -12
  29. package/src/agent/defaulttools/mt5_kapat/run.js +0 -108
  30. package/src/agent/defaulttools/mt5_kapat/tool.json +0 -15
  31. package/src/agent/defaulttools/mt5_m15_m5/m15m5.py +0 -60
  32. package/src/agent/defaulttools/mt5_m15_m5/run.js +0 -73
  33. package/src/agent/defaulttools/mt5_m15_m5/tool.json +0 -10
  34. package/src/agent/defaulttools/mt5_pozisyon_gecmis/run.js +0 -144
  35. package/src/agent/defaulttools/mt5_pozisyon_gecmis/tool.json +0 -12
  36. package/src/agent/defaulttools/mt5_shot/run.js +0 -649
  37. package/src/agent/defaulttools/mt5_shot/stitch.js +0 -151
  38. package/src/agent/defaulttools/mt5_shot/tool.json +0 -25
  39. package/src/agent/defaulttools/mt5_sltp/run.js +0 -92
  40. package/src/agent/defaulttools/mt5_sltp/tool.json +0 -14
  41. package/src/agent/financetools.js +0 -1025
  42. package/src/agent/finindicators.js +0 -254
  43. package/src/agent/finrisk.js +0 -289
  44. package/src/agent/finstats.js +0 -239
  45. package/src/agent/finwatch.js +0 -302
  46. package/src/agent/mt5/BeastFinance.mq5 +0 -498
  47. package/src/agent/mt5/BeastShot.tpl +0 -0
  48. package/src/agent/mt5setup.js +0 -542
  49. package/src/agent/scripts/mt5_bridge.py +0 -575
  50. package/src/agent/seeds/haber-duygu/SKILL.md +0 -49
  51. package/src/agent/seeds/mql5/SKILL.md +0 -154
  52. package/src/agent/seeds/price-action/SKILL.md +0 -60
  53. package/src/agent/seeds/risk-yonetimi/SKILL.md +0 -52
  54. package/src/mt5bridge.js +0 -215
package/src/preload.js CHANGED
@@ -119,23 +119,6 @@ contextBridge.exposeInMainWorld('beast', {
119
119
  studioPickVideo: () => ipcRenderer.invoke('studio:pickvideo'),
120
120
  studioDelete: (rel) => ipcRenderer.invoke('studio:delete', rel),
121
121
 
122
- financeState: () => ipcRenderer.invoke('finance:state'),
123
- financeSnapshot: () => ipcRenderer.invoke('finance:snapshot'),
124
- financeAlertsList: () => ipcRenderer.invoke('finance:alerts'),
125
- financeAlertRemove: (id) => ipcRenderer.invoke('finance:alerts:remove', id),
126
- financeMode: (on, sessionId) => ipcRenderer.invoke('finance:mode', { on, sessionId }),
127
- financeSettings: (patch) => ipcRenderer.invoke('finance:settings', patch),
128
- financeTraderStart: () => ipcRenderer.invoke('finance:trader:start'),
129
- financeTraderStop: () => ipcRenderer.invoke('finance:trader:stop'),
130
- financeAgentSpawn: (symbol) => ipcRenderer.invoke('finance:agent:spawn', { symbol }),
131
- financeConnect: () => ipcRenderer.invoke('finance:connect'),
132
- financeClose: (ticket, volume) => ipcRenderer.invoke('finance:close', { ticket, volume }),
133
- financeCancel: (ticket) => ipcRenderer.invoke('finance:cancel', { ticket }),
134
- financeInstall: () => ipcRenderer.invoke('finance:install'),
135
- financeMt5Setup: () => ipcRenderer.invoke('finance:mt5:setup'),
136
- financeSymbolsList: (filter) => ipcRenderer.invoke('finance:symbols:list', filter),
137
- financeReport: () => ipcRenderer.invoke('finance:report'),
138
- financeLearn: (payload) => ipcRenderer.invoke('finance:learn', payload),
139
122
  clipRead: () => ipcRenderer.invoke('clip:read'),
140
123
  clipWrite: (t) => ipcRenderer.invoke('clip:write', t),
141
124
  thinkSet: (v) => ipcRenderer.invoke('think:set', v),
@@ -218,6 +201,8 @@ contextBridge.exposeInMainWorld('beast', {
218
201
  waSetTts: (cfg) => ipcRenderer.invoke('wa:tts:set', cfg),
219
202
  piperStatus: (voice) => ipcRenderer.invoke('piper:status', voice),
220
203
  piperInstall: (voice) => ipcRenderer.invoke('piper:install', voice),
204
+ supertonicStatus: (voice) => ipcRenderer.invoke('supertonic:status', voice),
205
+ supertonicInstall: (voice) => ipcRenderer.invoke('supertonic:install', voice),
221
206
  waGetGroups: () => ipcRenderer.invoke('wa:groups:get'),
222
207
  waSetGroups: (cfg) => ipcRenderer.invoke('wa:groups:set', cfg),
223
208
  tgGetStatus: () => ipcRenderer.invoke('tg:status:get'),
@@ -280,7 +280,7 @@
280
280
  stt_engine_local: 'Whisper — yerel/offline (large-v3-turbo)',
281
281
  stt_engine_groq: 'Groq Whisper — bulut (hızlı)',
282
282
  stt_engine_openai: 'OpenAI-uyumlu Whisper — bulut',
283
- tts_note: 'Edge TTS: ücretsiz bulut motoru — anahtar gerekmez (Ahmet/Emel vb.). Piper: tamamen yerel/offline neural motor (ilk kullanımda ~80MB indirir). OpenAI motoru: uyumlu speech API (tts-1, tts-1-hd; sesler alloy, echo, fable, onyx, nova, shimmer).',
283
+ tts_note: 'Edge TTS: ücretsiz bulut motoru — anahtar gerekmez (Ahmet/Emel vb.). Piper: tamamen yerel/offline neural motor (ilk kullanımda ~80MB indirir). Supertonic: tamamen yerel/offline neural motor — 31 dil, 10 hazır ses (ilk kullanımda ~400MB indirir). OpenAI motoru: uyumlu speech API (tts-1, tts-1-hd; sesler alloy, echo, fable, onyx, nova, shimmer).',
284
284
  tts_engine: 'Motor',
285
285
  tts_edge_voice: 'Edge sesi',
286
286
  tts_piper_voice: 'Piper sesi',
@@ -288,6 +288,9 @@
288
288
  tts_piper_speed: 'Konuşma hızı',
289
289
  tts_piper_silence: 'Cümle sonu duraklama',
290
290
  tts_piper_noise: 'İfade (doğallık)',
291
+ tts_supertonic_download: 'Supertonic\'i indir / hazırla',
292
+ tts_supertonic_speed: 'Konuşma hızı',
293
+ tts_supertonic_quality: 'Kalite (difüzyon adımı)',
291
294
  tts_chat_auto: 'Chat\'te ajanın yazdıklarını otomatik seslendir',
292
295
  tts_on: 'TTS açık — cevaplar sesli de gider',
293
296
  tts_off: 'TTS kapalı',
@@ -660,7 +663,7 @@
660
663
  store_name_label: 'Skill adı',
661
664
  store_desc_label: 'Açıklama',
662
665
  store_tags_label: 'Etiketler (virgülle, en fazla 4)',
663
- store_tags_ph: 'örn: finans, ocr, eğitim',
666
+ store_tags_ph: 'örn: araştırma, ocr, eğitim',
664
667
  store_files_label: 'Dosyalar',
665
668
  store_commit: 'Mağazaya Yükle',
666
669
  store_commit_ok: 'Skill mağazaya yüklendi — Trending listesinde!',
@@ -755,7 +758,7 @@
755
758
  mail_need_to: 'Alıcı adresi gerekli',
756
759
  /* TypeSafe (System One / Jev) */
757
760
  ts_h2: 'TypeSafe (System One · Jev)',
758
- ts_sub: 'Tipli karar motoru: metin üretmeden olasılıklı yanıt (noul/choice/score). Beast Finance ajanları (Trader + analiz ekibi + sembol işçileri) JEV-ONLY çalışır — kararları YALNIZ buradan alır, LLM kullanılmaz; anahtar yoksa finans ajanları tur atmaz. Diğer ajanlar ve sohbet etkilenmez.',
761
+ ts_sub: 'Tipli karar motoru: metin üretmeden olasılıklı yanıt (noul/choice/score). Anahtar kayıtlıysa ajanlar tipli kararlarını typesafe_decision aracıyla buradan alabilir. Diğer ajanlar ve sohbet etkilenmez.',
759
762
  ts_key_label: 'TypeSafe API anahtarı (typesafe.ai)',
760
763
  ts_model_label: 'Model (varsayılan: jev-latest)',
761
764
  ts_enabled_label: 'TypeSafe açık (browser_agent/T3SFast + typesafe_decision kullanılabilir)',
@@ -772,7 +775,7 @@
772
775
  ts_saved_toast: 'TypeSafe anahtarı kaydedildi',
773
776
  ts_cleared_toast: 'TypeSafe anahtarı silindi',
774
777
  ts_fail_toast: 'TypeSafe kaydedilemedi',
775
- ts_hint: 'İpucu: Beast Finance ajanları JEV-ONLY koşar (LLM yok) — Ayarlar → TypeSafe anahtarı zorunludur. Finance SOHBET yardımcısı ve diğer ajanlar chat modelini kullanmaya devam eder.',
778
+ ts_hint: 'İpucu: typesafe_decision aracı yalnız anahtar girilince çalışır (Ayarlar → TypeSafe). Diğer ajanlar ve sohbet chat modelini kullanmaya devam eder.',
776
779
  },
777
780
  en: {
778
781
  newChat: '+ New Chat',
@@ -1042,7 +1045,7 @@
1042
1045
  stt_engine_local: 'Whisper — local/offline (large-v3-turbo)',
1043
1046
  stt_engine_groq: 'Groq Whisper — cloud (fast)',
1044
1047
  stt_engine_openai: 'OpenAI-compatible Whisper — cloud',
1045
- tts_note: 'Edge TTS: free cloud engine — no key needed (Ahmet/Emel etc.). Piper: fully local/offline neural engine (downloads ~80MB on first use). OpenAI engine: compatible speech API (tts-1, tts-1-hd; voices alloy, echo, fable, onyx, nova, shimmer).',
1048
+ tts_note: 'Edge TTS: free cloud engine — no key needed (Ahmet/Emel etc.). Piper: fully local/offline neural engine (downloads ~80MB on first use). Supertonic: fully local/offline neural engine — 31 languages, 10 preset voices (downloads ~400MB on first use). OpenAI engine: compatible speech API (tts-1, tts-1-hd; voices alloy, echo, fable, onyx, nova, shimmer).',
1046
1049
  tts_engine: 'Engine',
1047
1050
  tts_edge_voice: 'Edge voice',
1048
1051
  tts_piper_voice: 'Piper voice',
@@ -1050,6 +1053,9 @@
1050
1053
  tts_piper_speed: 'Speaking speed',
1051
1054
  tts_piper_silence: 'Sentence pause',
1052
1055
  tts_piper_noise: 'Expressiveness',
1056
+ tts_supertonic_download: 'Download / prepare Supertonic',
1057
+ tts_supertonic_speed: 'Speaking speed',
1058
+ tts_supertonic_quality: 'Quality (diffusion steps)',
1053
1059
  tts_chat_auto: 'Auto-speak agent replies in chat',
1054
1060
  tts_on: 'TTS on — replies also go as voice',
1055
1061
  tts_off: 'TTS off',
@@ -1492,7 +1498,7 @@
1492
1498
  store_name_label: 'Skill name',
1493
1499
  store_desc_label: 'Description',
1494
1500
  store_tags_label: 'Tags (comma separated, max 4)',
1495
- store_tags_ph: 'e.g. finance, ocr, education',
1501
+ store_tags_ph: 'e.g. research, ocr, education',
1496
1502
  store_files_label: 'Files',
1497
1503
  store_commit: 'Publish to Store',
1498
1504
  store_commit_ok: 'Skill published — see it in Trending!',
@@ -1512,7 +1518,7 @@
1512
1518
  store_login_note: 'Your Beast ID is anonymous; your real Beast Code is never shared.',
1513
1519
  /* TypeSafe (System One / Jev) */
1514
1520
  ts_h2: 'TypeSafe (System One · Jev)',
1515
- ts_sub: 'Typed decision engine: probabilistic answers without text generation (noul/choice/score). Beast Finance agents (Trader + analysis team + symbol workers) are JEV-ONLY — they take decisions solely from here, no LLM; without a key finance agents do not run. Other agents and the chat are unaffected.',
1521
+ ts_sub: 'Typed decision engine: probabilistic answers without text generation (noul/choice/score). When a key is set, agents can take typed decisions via the typesafe_decision tool. Other agents and the chat are unaffected.',
1516
1522
  ts_key_label: 'TypeSafe API key (typesafe.ai)',
1517
1523
  ts_model_label: 'Model (default: jev-latest)',
1518
1524
  ts_enabled_label: 'TypeSafe ON (enables browser_agent/T3SFast + typesafe_decision)',
@@ -1529,7 +1535,7 @@
1529
1535
  ts_saved_toast: 'TypeSafe key saved',
1530
1536
  ts_cleared_toast: 'TypeSafe key deleted',
1531
1537
  ts_fail_toast: 'Could not save TypeSafe key',
1532
- ts_hint: 'Tip: Beast Finance agents run JEV-ONLY (no LLM) — a TypeSafe key in Settings is required. The finance chat copilot and other agents keep using the chat model.',
1538
+ ts_hint: 'Tip: the typesafe_decision tool only works when a key is set (Settings → TypeSafe). Other agents and the chat keep using the chat model.',
1533
1539
  },
1534
1540
  };
1535
1541
 
@@ -102,7 +102,6 @@
102
102
  </div>
103
103
  <button id="studioBtn" class="dd-btn dd-icon-btn" title="Beast Studio — video yapma/düzenleme" data-i18n-title="tipStudio"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="6" width="13" height="12" rx="2"/><path d="M15 10l7-4v12l-7-4"/></svg></button>
104
104
  <button id="mcpBtn" class="dd-btn dd-icon-btn" title="Beast MCP — dış araç sunucuları (Model Context Protocol)" data-i18n-title="tipMcp"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="7" rx="2"/><rect x="3" y="13" width="18" height="7" rx="2"/><line x1="7" y1="7.5" x2="7.01" y2="7.5"/><line x1="7" y1="16.5" x2="7.01" y2="16.5"/></svg></button>
105
- <button id="finBtn" class="dd-btn dd-icon-btn" title="Beast Finance — MT5 trade paneli (bilgisayardaki MetaTrader 5 ile çalışır)"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><path d="M7 15l4-5 3 3 5-7"/></svg></button>
106
105
  <button id="sbBtn" class="dd-btn dd-icon-btn" title="Beast Sandbox — GitHub reposu indir &amp; içinde çalış" data-i18n-title="tipSandbox"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg></button>
107
106
  <button id="railBtn" class="dd-btn dd-icon-btn" title="Paralel Ajan Konsolu" data-i18n-title="tipRail">&#x25A4;</button>
108
107
  <button id="dmBtn" class="dd-btn dd-icon-btn" title="Ajan DM — ajanlar arası konuşma" data-i18n-title="tipAgentDm">&#x2709;&#xFE0E;</button>
@@ -144,182 +143,6 @@
144
143
  </div>
145
144
  </div>
146
145
 
147
- <section id="finPanel">
148
- <div id="finHead">
149
- <span id="finTitle">BEAST FINANCE</span>
150
- <span id="finDot" class="fin-dot off" title="MT5 köprüsü"></span>
151
- <span id="finTerm" title="">MT5</span>
152
- <span class="file-spacer"></span>
153
- <button id="finReconnect" title="MT5'e yeniden bağlan">&#x27F3;</button>
154
- <button id="finSettings" title="Görünüm ayarları — bölümleri göster/gizle">&#9881;</button>
155
- </div>
156
- <div id="finBody">
157
- <div class="fin-card" data-fin-card="account">
158
- <div class="fin-card-title">HESAP</div>
159
- <div class="fin-grid">
160
- <div class="fin-kv"><span>Bakiye</span><b id="finBalance">—</b></div>
161
- <div class="fin-kv"><span>Varlık</span><b id="finEquityValue">—</b></div>
162
- <div class="fin-kv"><span>Kâr/Zarar</span><b id="finProfit">—</b></div>
163
- <div class="fin-kv"><span>Serbest Marj</span><b id="finFree">—</b></div>
164
- </div>
165
- </div>
166
- <div class="fin-card fin-card-trader" data-fin-card="trader">
167
- <div class="fin-card-title">TRADE AJANI <span id="finTraderDot" class="fin-dot off" title="Trader durumu"></span><span class="file-spacer"></span><button id="finSetupBtn" title="MT5 kurulumunu uygula — BeastFinance.mq5 derle + AutoTrading izni + grafiğe ekle">&#x1F6E0;</button><button id="finModelRefreshBtn" title="Modelleri yeniden çek — eksik/güncel modelleri tazeler">&#x27F3;</button><button id="finLearnBtn" title="MT5 öğrenme hafızası — neler öğrendi: sembol bazlı dersler + otomatik istatistik (görüntüle/sil)"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:-2px"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"/><path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z"/><path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4"/><path d="M17.599 6.5a3 3 0 0 0 .399-1.375"/><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"/><path d="M3.477 10.896a4 4 0 0 1 .585-.396"/><path d="M19.938 10.5a4 4 0 0 1 .585.396"/><path d="M6 18a4 4 0 0 1-1.967-.516"/><path d="M19.967 17.484A4 4 0 0 1 18 18"/></svg></button><button id="finSkillsBtn" title="Rol → skill eşleştirmesi — rol başına tek skill (çöp ikonuyla kaldırılır; boş = ajan kendi seçer)">&#9881;</button><button id="finAdvToggle" type="button" aria-expanded="false" title="Gelişmiş — disiplin kuralları + shadow mod"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:-2px"><path d="M4 6h9"/><circle cx="16.5" cy="6" r="2.5"/><path d="M20 6h0.01"/><path d="M4 12h3"/><circle cx="10.5" cy="12" r="2.5"/><path d="M15 12h5"/><path d="M4 18h11"/><circle cx="18.5" cy="18" r="2.5"/></svg></button></div>
168
- <div class="fin-field">
169
- <span>Model</span>
170
- <select id="finTraderModel" title="Trader ajanının modeli — farklı API/model seçilebilir"></select>
171
- </div>
172
- <div class="fin-grid3" title="Değişiklik anında kaydedilir — ajanı DURDURMADAN sonraki tura uygulanır">
173
- <div class="fin-field">
174
- <span>Tur (sn)</span>
175
- <input id="finInterval" type="number" min="30" max="3600" step="10" />
176
- </div>
177
- <div class="fin-field">
178
- <span>Min lot</span>
179
- <input id="finMinLot" type="number" min="0.01" max="100" step="0.01" title="Alt sınır: lot hesapları bu tabanın altına inemez — taban altındaki lotlar adıma yukarı yuvarlanır (broker minimumunun üzerinde bir taban koyar)" />
180
- </div>
181
- <div class="fin-field">
182
- <span>Max lot</span>
183
- <input id="finMaxLot" type="number" min="0.01" max="100" step="0.01" title="Üst sınır: lot hesapları bu tavanın üzerine çıkamaz (min lotun altına inemez)" />
184
- </div>
185
- </div>
186
- <div id="finSymLimits" class="fin-hint" hidden title="Trader'ın mt5_limits ile sembole özel koyduğu lot aralıkları — sembol limiti genel aralığı aşamaz; trader sembolü sıfırlarsa genel aralık geçerli olur"></div>
187
- <div class="fin-field">
188
- <span>Semboller</span>
189
- <button id="finSymBtn" class="fin-sym-select" title="MT5 sembol listesinden seç — tıkla">&#8230;</button>
190
- </div>
191
- <div class="fin-field">
192
- <span>Analiz ekibi <i class="fin-hint">— çoklu seç: hangi uzman ajanlar koşacak (işlem açmaz)</i></span>
193
- <div id="finRoles" class="fin-roles" title="Trader&#39;ın yanında koşacak uzman ajanları seç — Risk / Teknik / Haber / Görsel; seçilen her rol AYRI sürekli ajan olarak koşar (işlem açmaz)"></div>
194
- </div>
195
- <div class="fin-field">
196
- <span>Ajan talimatı <i class="fin-hint">— 1-2 cümle; trader + tüm paralel ajanlara iletilir</i><button id="finStrategyHelp" class="fin-help-btn" type="button" title="Neler yazabilirim? Desteklenen talimatlar ve örnekler">?</button></span>
197
- <textarea id="finStrategy" rows="2" maxlength="2000" placeholder="örn. 1- risk yüzde 2 2- martingale kullan 3- her mumda işlem açmak zorundasın" title="Buraya yazdığın talimat trade ajanına ve koşan tüm paralel ajanlara (ekip + sembol işçileri) sistem promptunda öncelikli strateji notu olarak gider; kaydetmek için alandan çık"></textarea>
198
- </div>
199
- <div id="finAdvWrap" hidden>
200
- <div class="fin-field">
201
- <span>Disiplin <i class="fin-hint">— kodla zorlanır; 0 = kural kapalı</i></span>
202
- <div class="fin-grid2">
203
- <div class="fin-field"><span>Günlük max işlem (kapalı)</span><input id="finMaxTradesDay" type="number" min="0" max="50" step="1" disabled title="Kaldırıldı: günlük işlem limiti yalnız talimata &quot;günde en fazla N işlem&quot; yazarsan uygulanır — varsayılan sınırsız" /></div>
204
- <div class="fin-field"><span>Kayıp serisi limiti</span><input id="finLossStreak" type="number" min="0" max="10" step="1" title="Üst üste bu kadar kayıptan sonra yeni işlem kilidi (0 = kapalı)" /></div>
205
- <div class="fin-field"><span>Seri molası (dk)</span><input id="finLossStreakPause" type="number" min="0" max="1440" step="5" title="Kayıp serisi limitine ulaşınca kaç dakika yeni işlem açılmaz" /></div>
206
- <div class="fin-field"><span>Re-entry bekleme (dk)</span><input id="finReentry" type="number" min="0" max="1440" step="5" title="Aynı sembolda bir işlem kapandıktan sonra yeni giriş için beklenecek süre — VARSAYILAN KAPALI (0 = kapalı)" /></div>
207
- <div class="fin-field"><span>Kur başına max</span><input id="finMaxPerCurrency" type="number" min="0" max="20" step="1" title="Yönlü kur maruziyeti (korelasyon) limiti — örn. 3: aynı para biriminde en fazla ±3 net pozisyon (0 = kapalı)" /></div>
208
- <div class="fin-field"><span>Plan / Review (saat)</span><div class="fin-time-row"><input id="finPlanTime" type="time" title="Hafta içi günlük plan saati (boş = kapalı)" /><input id="finReviewTime" type="time" title="Hafta içi günlük review saati (boş = kapalı)" /></div></div>
209
- </div>
210
- </div>
211
- <div class="fin-field fin-check">
212
- <label title="SHADOW MOD: emir gönderilmez — kararlar teziyle günlüğe yazılır, gerçek işlem açılmaz. Ajanı para riske atmadan canlı test etmek için.">
213
- <input id="finShadow" type="checkbox" /> Shadow mod — emir açmadan karar kaydı (canlı test)
214
- </label>
215
- </div>
216
- </div>
217
- <div class="fin-row fin-btn-row">
218
- <button id="finTraderBtn" class="fin-start">&#9654;&#xFE0E; Ajanı Başlat</button>
219
- </div>
220
- <div id="finTraderStatus">Kapalı</div>
221
- </div>
222
- <div class="fin-card" id="finPosCard" data-fin-card="posmgr">
223
- <div class="fin-card-title">POZİSYON YÖNETİCİSİ <span id="finPosDot" class="fin-dot off" title="Pozisyon yöneticisi durumu"></span><span id="finPosInfo" class="fin-hint"></span></div>
224
- <div class="fin-field fin-check">
225
- <label title="Açık pozisyon varken ayarlı sıklıkta JEV turu: kapat / kısmi kapat / SL taşı kararları. Trade ajanından bağımsız ayrı bir ajan — kendi talimatıyla çalışır; LLM kullanmaz.">
226
- <input id="finPosOn" type="checkbox" /> Aktif — açık pozisyonları Jev ile yönet
227
- </label>
228
- </div>
229
- <div class="fin-field">
230
- <span>Kontrol (sn)</span>
231
- <input id="finPosSec" type="number" min="1" max="300" step="1" title="Kaç saniyede bir kontrol edilsin — 1-300 (varsayılan 5). Trade ajanından bağımsız kendi zamanlayıcısı vardır." />
232
- </div>
233
- <div class="fin-field">
234
- <span>Yönetici talimatı <i class="fin-hint">— yalnız bu ajanı bağlar</i><button id="finPosHelp" class="fin-help-btn" type="button" title="Neler yazabilirim? Desteklenen talimatlar ve örnekler">?</button></span>
235
- <textarea id="finPosNote" rows="2" maxlength="1500" placeholder="örn. 1- 1R'de %50 kısmi kapat 2- kâr 2R'ye gelince kalanı kapat 3- zarar -0.5R'yi geçerse kes" title="Bu talimat YALNIZ Pozisyon Yöneticisi Jev ajanına gider (5 sn turu, kapat/kısmi/SL kararları); kaydetmek için alandan çık"></textarea>
236
- </div>
237
- <div id="finPosStatus">Beklemede — açık pozisyon yok</div>
238
- </div>
239
- <div class="fin-card" id="finRiskCard" data-fin-card="risk" hidden>
240
- <div class="fin-card-title">RİSK OTOMASYONU <span id="finWatchDot" class="fin-dot off" title="Koruma döngüsü"></span><span id="finWatchInfo" class="fin-hint"></span></div>
241
- <div class="fin-field fin-check">
242
- <label title="5 saniyelik döngü: +R'da SL'yi başabaşa çeker, trailing uygular, kısmi TP alır — ajan turunu beklemez">
243
- <input id="finWatchdog" type="checkbox" /> Aktif — BE + trailing + kâr koruma + kısmi TP
244
- </label>
245
- </div>
246
- <div class="fin-grid2">
247
- <div class="fin-field"><span>BE (R)</span><input id="finBeOnR" type="number" min="0" max="10" step="0.1" title="Kâr kaç R'ye ulaşınca SL başabaşa çekilsin (0 = kapalı)" /></div>
248
- <div class="fin-field"><span>Trailing başlangıç (R)</span><input id="finTrailStartR" type="number" min="0" max="10" step="0.1" title="Kaç R kârdan sonra trailing başlasın (0 = kapalı)" /></div>
249
- <div class="fin-field"><span>Trailing mesafe (R)</span><input id="finTrailR" type="number" min="0" max="5" step="0.1" title="SL fiyattan kaç R geriden gelsin" /></div>
250
- <div class="fin-field"><span>Kâr koruma başlangıç (R)</span><input id="finProtectStartR" type="number" min="0" max="10" step="0.1" title="Kâr bu R'ye ulaşınca SL kilitlenir: görülen EN İYİ kârın bir kısmı garantiye alınır — kâr eksiye dönmez (0 = kapalı, önerilen 0.3)" /></div>
251
- <div class="fin-field"><span>Kâr koruma payı (R)</span><input id="finProtectDistR" type="number" min="0" max="5" step="0.05" title="Kilitlenen SL, görülen en iyi kârın kaç R gerisinde kalsın (ör. 0.15: +0.5R görüldüyse SL +0.35R'ye kilitlenir)" /></div>
252
- <div class="fin-field"><span>Kısmi TP (R)</span><input id="finPartialR" type="number" min="0" max="10" step="0.1" title="Kaç R kârda ajana kısmi TP fırsatı bildirilsin (0 = kapalı) — kapatma kararını AJAN verir, otomatik kapatılmaz" /></div>
253
- <div class="fin-field"><span>Kısmi TP (%)</span><input id="finPartialPct" type="number" min="0" max="90" step="5" title="Fırsat bildiriminde ajana önerilecek kısmi kapatma yüzdesi (kapatma kararı ajanın)" /></div>
254
- <div class="fin-field"><span>Günlük kayıp uyarı (%)</span><input id="finMaxDailyLoss" type="number" min="0" max="50" step="0.5" title="Gün içi düşüş bu yüzdeyi geçince aksiyon uygulanır (0 = kapalı)" /></div>
255
- </div>
256
- <div class="fin-grid2">
257
- <div class="fin-field"><span>İşlem riski (%)</span><input id="finRiskPct" type="number" min="0" max="20" step="0.1" title="Pozisyon başına hesap riski — mt5_risksize ve riskPct ile lot bu orandan hesaplanır" /></div>
258
- <div class="fin-field"><span>Sembol başına max</span><input id="finMaxPerSymbol" type="number" min="0" max="20" step="1" title="Aynı sembolde aynı yönde en fazla kaç pozisyon (0 = sınırsız)" /></div>
259
- <div class="fin-field"><span>Aynı yön max</span><input id="finMaxSameSide" type="number" min="0" max="20" step="1" title="Toplam aynı yönde (buy ya da sell) en fazla pozisyon (0 = sınırsız)" /></div>
260
- <div class="fin-field"><span>Min marj seviyesi (%)</span><input id="finMinMarginLevel" type="number" min="0" max="1000" step="10" title="İşlem sonrası marj seviyesi bunun altına düşecekse işlem reddedilir (0 = kapalı)" /></div>
261
- </div>
262
- <div class="fin-field">
263
- <span>Günlük limit aksiyonu</span>
264
- <select id="finDailyLossAction" title="Günlük kayıp limiti aşılınca ne yapılsın">
265
- <option value="warn">Yalnız uyar</option>
266
- <option value="stop">Ajanları durdur</option>
267
- <option value="flatten">Durdur + hepsini kapat</option>
268
- </select>
269
- </div>
270
- <div id="finAlertList" class="fin-alerts"><div class="fin-empty">Aktif fiyat alarmı yok</div></div>
271
- </div>
272
- <div class="fin-card" id="finNotifyCard" data-fin-card="notify" hidden>
273
- <div class="fin-card-title">BİLDİRİM <span class="fin-hint">— kanal seçimi ve olay filtresi</span></div>
274
- <div class="fin-field">
275
- <span>Bildirim kanalı</span>
276
- <select id="finNotifyTarget" title="Emir/işlem bildirimleri bu kanala gider; panel ve masaüstü toast her zaman çalışır">
277
- <option value="auto">Otomatik (bağlı olan kanallar)</option>
278
- <option value="telegram">Telegram</option>
279
- <option value="whatsapp">WhatsApp</option>
280
- <option value="discord">Discord</option>
281
- <option value="off">Kapalı (yalnız panel)</option>
282
- </select>
283
- </div>
284
- <div class="fin-field fin-check">
285
- <label title="İşaretliyken kanala YALNIZ emir olayları düşer: açılış, kapanış, SL/TP güncelleme, bekleyen emir, iptal. Fiyat alarmı, BE/trailing/kısmi TP, günlük limit ve rapor bildirimleri gelmez — onlar panelde kalır">
286
- <input id="finNotifyTradeOnly" type="checkbox" checked /> Kanala sadece emir/işlem olayları gelsin (alarm gelmez)
287
- </label>
288
- </div>
289
- </div>
290
- <div class="fin-card" id="finPerfCard" data-fin-card="perf" hidden>
291
- <div class="fin-card-title">PERFORMANS <span id="finStatsInfo" class="fin-hint"></span><span class="file-spacer"></span><button id="finReportBtn" title="Haftalık rapor üret — istatistik + işlem günlüğü + ajan değerlendirmesi">&#128196; Rapor</button></div>
292
- <div id="finEquityChart" class="fin-equity"></div>
293
- <div class="fin-grid">
294
- <div class="fin-kv"><span>Bugün</span><b id="finStatToday">—</b></div>
295
- <div class="fin-kv"><span>Hafta</span><b id="finStatWeek">—</b></div>
296
- <div class="fin-kv"><span>Win rate</span><b id="finStatWin">—</b></div>
297
- <div class="fin-kv"><span>Profit factor</span><b id="finStatPf">—</b></div>
298
- <div class="fin-kv"><span>Max DD</span><b id="finStatDd">—</b></div>
299
- <div class="fin-kv"><span>İşlem (90g)</span><b id="finStatTrades">—</b></div>
300
- </div>
301
- </div>
302
- <div class="fin-card" data-fin-card="positions">
303
- <div class="fin-card-title">POZİSYONLAR <span id="finPosCount"></span></div>
304
- <div id="finPosList"><div class="fin-empty">Açık pozisyon yok</div></div>
305
- <div class="fin-sect-title">BEKLEYEN EMİRLER <span id="finOrdCount"></span></div>
306
- <div id="finOrdList"><div class="fin-empty">Bekleyen emir yok</div></div>
307
- </div>
308
- <div class="fin-card" data-fin-card="market">
309
- <div class="fin-card-title">
310
- PİYASA
311
- <span class="file-spacer"></span>
312
- <button id="finWatchClear" title="İzleme listesini TAMAMEN sil — semboller geçmişe düşer, sonra tek tıkla geri eklenir">&#x2715;&#xFE0E;</button>
313
- <button id="finSymAdd" title="Sembol ekle/çıkar — MT5 sembol listesinden seç">&#43;</button>
314
- </div>
315
- <div id="finSymList"><div class="fin-empty">—</div></div>
316
- </div>
317
- <div class="fin-card fin-grow" id="finFlowCard" data-fin-card="flow" hidden>
318
- <div class="fin-card-title">AKIŞ</div>
319
- <div id="finLog"></div>
320
- </div>
321
- </div>
322
- </section>
323
146
 
324
147
  <div id="ideRow">
325
148
  <section id="codePane">
@@ -850,126 +673,6 @@
850
673
  </div>
851
674
  </div>
852
675
 
853
- <div id="finSymOverlay" class="mini-overlay" hidden>
854
- <div class="mini-dialog fin-sym-dialog">
855
- <div class="mini-head">
856
- <span class="mini-title">MT5 SEMBOLLERİ</span>
857
- <span id="finSymCount" class="fin-sym-count"></span>
858
- <button class="mini-close" id="finSymClose" title="Kapat">&#x00D7;</button>
859
- </div>
860
- <div class="mini-body">
861
- <input id="finSymSearch" placeholder="Sembol ara… (örn: XAU, BTC, EUR, US500)" spellcheck="false" autocomplete="off" />
862
- <div id="finSymPick" class="mini-list"></div>
863
- <div class="fin-sym-hint">Tıkla: izleme listesine ekle/çıkar — PİYASA kartına anında düşer</div>
864
- </div>
865
- </div>
866
- </div>
867
-
868
- <div id="finSkillsOverlay" class="mini-overlay" hidden>
869
- <div class="mini-dialog fin-skills-dialog">
870
- <div class="mini-head">
871
- <span class="mini-title">ROL → SKILL EŞLEŞTİRME</span>
872
- <button class="mini-close" id="finSkillsClose" title="Kapat">&#x00D7;</button>
873
- </div>
874
- <div class="mini-body">
875
- <div id="finSkillsList" class="mini-list"></div>
876
- <div class="fin-sym-hint"><b>BEAST FINANCE AJANLARI ARTIK HER ZAMAN JEV (TypeSafe System One) İLE ÇALIŞIR — LLM KULLANILMAZ.</b> Trader + analiz ekibi + sembol işçileri tur verisini koda toplar, kararı Jev'den (tipli olasılıklar) alır, emri kod uygular; cevaplar AJAN DM'de tüm ekibe görünür. Ayarlar → TypeSafe'ten API anahtarı zorunludur; anahtar yoksa ajanlar tur atmaz.<br>Buradaki skill seçimi (en fazla 2) yalnız finance SOHBET yardımcısının (LLM) playbook'u içindir; ajanların karar hattını değiştirmez. Seçili skill'i çöp ikonuyla kaldırabilirsin.</div>
877
- </div>
878
- </div>
879
- </div>
880
-
881
- <div id="finLearnOverlay" class="mini-overlay" hidden>
882
- <div class="mini-dialog fin-learn-dialog">
883
- <div class="mini-head">
884
- <span class="mini-title">MT5 ÖĞRENME HAFIZASI</span>
885
- <span id="finLearnCount" class="fin-sym-count"></span>
886
- <button id="finLearnClear" title="TÜM sembollerin derslerini sil — otomatik istatistikler korunur (depo şişmesi/zehirlenmesi önlenir)">Tüm dersleri sil</button>
887
- <button class="mini-close" id="finLearnClose" title="Kapat">&#x00D7;</button>
888
- </div>
889
- <div class="mini-body">
890
- <div id="finLearnList" class="mini-list"></div>
891
- <div class="fin-sym-hint">Trade ajanının çekirdekteki sembol bazlı hafızası: her işlem kapanışı otomatik istatistiğe işlenir; ajan yalnız gerçekten öğretici, kısa bir içgörü olunca ders yazar (her kapanışa ders YAZMAZ — günlük en fazla 3, tek kısa cümle). Sembol satırına tıkla → kalıcı özeti, dersleri ve son işlemleri gör; ÖZET ile eski dersleri modele sıkıştırt (24+ ders birikince otomatik), tek dersi çöp ikonuyla sil, sembol kaydını tümden bırak. Hafıza sürekli sadeleşir: 30 günden eski dersler, 90 günden eski işlem kayıtları ve 120 gün hareketsiz semboller otomatik unutulur.</div>
892
- </div>
893
- </div>
894
- </div>
895
-
896
- <div id="finHelpOverlay" class="mini-overlay" hidden>
897
- <div class="mini-dialog fin-help-dialog">
898
- <div class="mini-head">
899
- <span class="mini-title" id="finHelpTitle">TALİMAT KILAVUZU</span>
900
- <button class="mini-close" id="finHelpClose" title="Kapat">&#x00D7;</button>
901
- </div>
902
- <div class="mini-body" id="finHelpBody"></div>
903
- </div>
904
- </div>
905
-
906
- <div id="finTeamOverlay" class="mini-overlay" hidden>
907
- <div class="mini-dialog fin-sym-dialog">
908
- <div class="mini-head">
909
- <span class="mini-title">ANALİZ EKİBİ — AJAN SEÇ</span>
910
- <span id="finTeamCount" class="fin-sym-count"></span>
911
- <button class="mini-close" id="finTeamClose" title="Kapat">&#x00D7;</button>
912
- </div>
913
- <div class="mini-body">
914
- <div id="finTeamPick" class="mini-list"></div>
915
- <div class="fin-sym-hint">Tıkla: ajanı ekibe ekle/çıkar — seçilen her rol AYRI sürekli ajan olarak koşar (işlem açmaz). Değişiklik anında kaydedilir; ajanı başlatınca seçili roller başlar.</div>
916
- </div>
917
- </div>
918
- </div>
919
-
920
- <div id="finSettingsOverlay" class="mini-overlay" hidden>
921
- <div class="mini-dialog fin-settings-dialog">
922
- <div class="mini-head">
923
- <span class="mini-title">FINANCE GÖRÜNÜM AYARLARI</span>
924
- <button class="mini-close" id="finSettingsClose" title="Kapat">&#x00D7;</button>
925
- </div>
926
- <div class="mini-body">
927
- <div class="fin-set-hint">Varsayılan olarak dört bölüm de gizlidir — açmak tamamen isteğe bağlıdır. Seçim bilgisayarda hatırlanır. Risk otomasyonu gizliyken AKTİF OLMAZ.</div>
928
- <label class="fin-set-row" title="BE + trailing + kısmi TP koruması, günlük limitler, fiyat alarmları bölümü">
929
- <input id="finShowRisk" type="checkbox" />
930
- <span class="fsr-main"><b>RİSK OTOMASYONU</b><i>BE + trailing + kısmi TP, günlük limitler, alarmlar</i></span>
931
- </label>
932
- <label class="fin-set-row" title="Bildirim kanalı (WhatsApp/Telegram/Discord) ve hangi olayların gönderileceği bölümü">
933
- <input id="finShowNotify" type="checkbox" />
934
- <span class="fsr-main"><b>BİLDİRİM</b><i>Kanal seçimi, emir/alarm olay filtresi</i></span>
935
- </label>
936
- <label class="fin-set-row" title="Equity grafiği + günlük/haftalık istatistikler + haftalık rapor bölümü">
937
- <input id="finShowPerf" type="checkbox" />
938
- <span class="fsr-main"><b>PERFORMANS</b><i>Equity grafiği, istatistikler, haftalık rapor</i></span>
939
- </label>
940
- <label class="fin-set-row" title="Ajan/MT5 işlem günlüğü akışı bölümü">
941
- <input id="finShowFlow" type="checkbox" />
942
- <span class="fsr-main"><b>AKIŞ</b><i>Ajan ve MT5 olay günlüğü</i></span>
943
- </label>
944
- <div class="fin-set-note">RİSK OTOMASYONU gizliyken koruma döngüsü (watchdog) kapatılır; tekrar gösterdiğinde ilgili kutucuktan açabilirsin.</div>
945
- <div class="fin-set-sep"></div>
946
- <label class="fin-set-row" title="Varsayılan KAPALI: kapalıyken ajanlar 7/24 çalışır. Açıkken Beast Finance ve tüm ajanları YALNIZ belirlenen saat aralığında çalışır — aralık dışında yeni tur başlatılmaz ve olaylar ajanı uyandırmaz (makinenin YEREL saati). Açık pozisyon koruması (BE/trailing/kısmi TP) her saat çalışmaya devam eder.">
947
- <input id="finTradeHoursOn" type="checkbox" />
948
- <span class="fsr-main"><b>TRADE SAATLERİ</b><i>Kapalıyken 7/24 · açıkken ajanlar yalnız bu aralıkta</i></span>
949
- </label>
950
- <div id="finTradeHoursWrap" class="fin-set-sub" hidden>
951
- <span class="fin-set-lbl">BAŞLANGIÇ / BİTİŞ (YEREL SAAT)</span>
952
- <div class="fin-th-row">
953
- <input id="finTradeHoursStart" type="time" step="60" value="09:00" />
954
- <span class="fin-set-lbl">→</span>
955
- <input id="finTradeHoursEnd" type="time" step="60" value="22:00" />
956
- </div>
957
- <div class="fin-set-note" style="margin:0">Aralık dışında ajan turları askıya alınır, olay alarmları ajanı uyandırmaz; pencere açılıp kapanınca kaldığı yerden devam eder. Gece aralığı da verilebilir (ör. 22:00 → 06:00).</div>
958
- </div>
959
- <div class="fin-set-sep"></div>
960
- <label class="fin-set-row" title="Açıkken botu eklediğin Telegram grubuna yazılan ilk mesaj o grubu AJAN DM aynası yapar. Her AJAN DM grubu Telegram'da AYRI BAŞLIK (topic) olarak canlı akar; başlığa yazdıkların ilgili AJAN DM grubunda görünür ve o grubun ajanları uyanır. Grup/Konu seçmene gerek yok.">
961
- <input id="finDmTgOn" type="checkbox" />
962
- <span class="fsr-main"><b>AJAN DM ↔ TELEGRAM</b><i>Her ajan grubu Telegram'da ayrı başlık — canlı</i></span>
963
- </label>
964
- <div id="finDmTgWrap" class="fin-set-sub" hidden>
965
- <span class="fin-set-lbl">TELEGRAM GRUBU</span>
966
- <div id="finDmTgState" class="fin-dm-tg-state">—</div>
967
- <button id="finDmTgUnbind" class="fin-set-btn" title="Bağlantıyı kopar — sonra gruba yazılan ilk mesaj yeni grup olarak otomatik bağlanır">&#x2715;&#xFE0E; Bağlantıyı kopar</button>
968
- <div id="finDmTgHint" class="fin-set-note" style="margin:2px 0 0"></div>
969
- </div>
970
- </div>
971
- </div>
972
- </div>
973
676
 
974
677
  <div id="cronOverlay" class="mini-overlay" hidden>
975
678
  <div class="mini-dialog">