beast-agent 2.33.1 → 2.34.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.
- package/package.json +1 -1
- package/src/main.js +14 -1
- package/src/renderer/index.html +3 -3
- package/src/renderer/renderer.js +31 -4
- package/src/renderer/style.css +3 -3
package/package.json
CHANGED
package/src/main.js
CHANGED
|
@@ -9582,6 +9582,7 @@ ipcMain.handle('finance:mode', async (_e, payload) => {
|
|
|
9582
9582
|
financeState.mode = !!(payload && payload.on);
|
|
9583
9583
|
const sid = String((payload && payload.sessionId) || '');
|
|
9584
9584
|
let needNew = false;
|
|
9585
|
+
let resumeSid = '';
|
|
9585
9586
|
if (sid && engine) {
|
|
9586
9587
|
try {
|
|
9587
9588
|
let s = engine.cache.get(sid);
|
|
@@ -9605,9 +9606,21 @@ ipcMain.handle('finance:mode', async (_e, payload) => {
|
|
|
9605
9606
|
}
|
|
9606
9607
|
} catch {}
|
|
9607
9608
|
}
|
|
9609
|
+
/* ESKİ SOHBETTEN DEVAM: finance moduna girerken aktif oturum finance değilse
|
|
9610
|
+
(örn. normal sohbet) yeni oturum AÇMAK yerine en son kullanılan finance
|
|
9611
|
+
sohbet oturumu önerilir; hiç yoksa yeni oturum açılır. */
|
|
9612
|
+
if (financeState.mode && needNew && engine) {
|
|
9613
|
+
try {
|
|
9614
|
+
const prev = (engine.listSessions() || []).find((v) => v && v.finance && !v.isBg && v.id);
|
|
9615
|
+
if (prev) {
|
|
9616
|
+
resumeSid = String(prev.id);
|
|
9617
|
+
needNew = false;
|
|
9618
|
+
}
|
|
9619
|
+
} catch {}
|
|
9620
|
+
}
|
|
9608
9621
|
/* OTOMATİK TRADER KAPALI: finance moduna geçmek trader'ı KENDİLİĞİNDEN
|
|
9609
9622
|
başlatmaz — kullanıcı TRADE AJANI kartındaki ▶ ile elle başlatır */
|
|
9610
|
-
return { ok: true, mode: financeState.mode, needNew };
|
|
9623
|
+
return { ok: true, mode: financeState.mode, needNew, resumeSid };
|
|
9611
9624
|
});
|
|
9612
9625
|
|
|
9613
9626
|
/* MT5 sembol seçici: terminaldeki tüm semboller (isteğe bağlı *filter*) */
|
package/src/renderer/index.html
CHANGED
|
@@ -157,13 +157,13 @@
|
|
|
157
157
|
<div class="fin-card-title">HESAP</div>
|
|
158
158
|
<div class="fin-grid">
|
|
159
159
|
<div class="fin-kv"><span>Bakiye</span><b id="finBalance">—</b></div>
|
|
160
|
-
<div class="fin-kv"><span
|
|
160
|
+
<div class="fin-kv"><span>Varlık</span><b id="finEquityValue">—</b></div>
|
|
161
161
|
<div class="fin-kv"><span>Kâr/Zarar</span><b id="finProfit">—</b></div>
|
|
162
162
|
<div class="fin-kv"><span>Serbest Marj</span><b id="finFree">—</b></div>
|
|
163
163
|
</div>
|
|
164
164
|
</div>
|
|
165
165
|
<div class="fin-card fin-card-trader">
|
|
166
|
-
<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="finSkillsBtn" title="Rol → skill eşleştirmesi — hangi rol hangi skill'i okur">⚙</button></div>
|
|
166
|
+
<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="finModelRefreshBtn" title="Modelleri yeniden çek — eksik/güncel modelleri tazeler">⟳</button><button id="finSkillsBtn" title="Rol → skill eşleştirmesi — hangi rol hangi skill'i okur">⚙</button></div>
|
|
167
167
|
<div class="fin-field">
|
|
168
168
|
<span>Model</span>
|
|
169
169
|
<select id="finTraderModel" title="Trader ajanının modeli — farklı API/model seçilebilir"></select>
|
|
@@ -234,7 +234,7 @@
|
|
|
234
234
|
</div>
|
|
235
235
|
<div class="fin-card" id="finPerfCard" hidden>
|
|
236
236
|
<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">📄 Rapor</button></div>
|
|
237
|
-
<div id="
|
|
237
|
+
<div id="finEquityChart" class="fin-equity"></div>
|
|
238
238
|
<div class="fin-grid">
|
|
239
239
|
<div class="fin-kv"><span>Bugün</span><b id="finStatToday">—</b></div>
|
|
240
240
|
<div class="fin-kv"><span>Hafta</span><b id="finStatWeek">—</b></div>
|
package/src/renderer/renderer.js
CHANGED
|
@@ -175,10 +175,11 @@ const els = {
|
|
|
175
175
|
finPerfCard: $('#finPerfCard'),
|
|
176
176
|
finFlowCard: $('#finFlowCard'),
|
|
177
177
|
finBalance: $('#finBalance'),
|
|
178
|
-
finEquity: $('#
|
|
178
|
+
finEquity: $('#finEquityValue'),
|
|
179
179
|
finProfit: $('#finProfit'),
|
|
180
180
|
finFree: $('#finFree'),
|
|
181
181
|
finTraderModel: $('#finTraderModel'),
|
|
182
|
+
finModelRefreshBtn: $('#finModelRefreshBtn'),
|
|
182
183
|
finInterval: $('#finInterval'),
|
|
183
184
|
finMaxLot: $('#finMaxLot'),
|
|
184
185
|
finSymBtn: $('#finSymBtn'),
|
|
@@ -227,7 +228,7 @@ const els = {
|
|
|
227
228
|
finStatPf: $('#finStatPf'),
|
|
228
229
|
finStatDd: $('#finStatDd'),
|
|
229
230
|
finStatTrades: $('#finStatTrades'),
|
|
230
|
-
finEquityBox: $('#
|
|
231
|
+
finEquityBox: $('#finEquityChart'),
|
|
231
232
|
stVideoEl: $('#stVideoEl'),
|
|
232
233
|
stVideoName: $('#stVideoName'),
|
|
233
234
|
stVideoOpen: $('#stVideoOpen'),
|
|
@@ -7178,6 +7179,8 @@ async function init() {
|
|
|
7178
7179
|
try {
|
|
7179
7180
|
state = await beast.refreshModels();
|
|
7180
7181
|
applyState();
|
|
7182
|
+
/* finance modu açıksa TRADE AJANI model listesini de tazele */
|
|
7183
|
+
if (financeModeOn()) await finFillModels();
|
|
7181
7184
|
toast(_t('mr_done'));
|
|
7182
7185
|
} catch {
|
|
7183
7186
|
toast(_t('ws_fail_toast'));
|
|
@@ -9502,6 +9505,8 @@ function finRenderAlerts(list) {
|
|
|
9502
9505
|
|
|
9503
9506
|
async function finFillModels() {
|
|
9504
9507
|
if (!els.finTraderModel) return;
|
|
9508
|
+
/* mevcut seçim korunur — yenilemede model kaybolursa "Genel aktif model"e düşer */
|
|
9509
|
+
const cur = els.finTraderModel.value || (finCfgCache && finCfgCache.traderSel) || '';
|
|
9505
9510
|
let models = [];
|
|
9506
9511
|
try {
|
|
9507
9512
|
const st = await beast.getState();
|
|
@@ -9511,11 +9516,13 @@ async function finFillModels() {
|
|
|
9511
9516
|
const optAuto = document.createElement('option');
|
|
9512
9517
|
optAuto.value = '';
|
|
9513
9518
|
optAuto.textContent = 'Genel aktif model';
|
|
9519
|
+
if (!cur) optAuto.selected = true;
|
|
9514
9520
|
els.finTraderModel.appendChild(optAuto);
|
|
9515
9521
|
for (const m of models) {
|
|
9516
9522
|
const o = document.createElement('option');
|
|
9517
9523
|
o.value = m.sel;
|
|
9518
9524
|
o.textContent = (m.providerName || m.sel) + ' · ' + m.model;
|
|
9525
|
+
if (m.sel === cur) o.selected = true;
|
|
9519
9526
|
els.finTraderModel.appendChild(o);
|
|
9520
9527
|
}
|
|
9521
9528
|
finModelsFilled = true;
|
|
@@ -9594,8 +9601,11 @@ async function setFinanceMode(on) {
|
|
|
9594
9601
|
try { localStorage.setItem('beast.financeMode', on ? '1' : '0'); } catch {}
|
|
9595
9602
|
const fm = await beast.financeMode(!!on, activeId).catch(() => ({}));
|
|
9596
9603
|
/* finance modu açıldı ama aktif oturum NORMAL (örn. WhatsApp sohbeti) ise
|
|
9597
|
-
ASLA o oturumu finance'e çevirme —
|
|
9598
|
-
|
|
9604
|
+
ASLA o oturumu finance'e çevirme — önce EN SON finance sohbetinden devam
|
|
9605
|
+
et (resumeSid); hiç finance sohbeti yoksa kendine ÖZEL yeni oturum aç */
|
|
9606
|
+
if (on && fm && fm.resumeSid) {
|
|
9607
|
+
try { await openSession(fm.resumeSid); } catch {}
|
|
9608
|
+
} else if (on && fm && fm.needNew) {
|
|
9599
9609
|
try {
|
|
9600
9610
|
const created = await beast.createSession();
|
|
9601
9611
|
if (created && created.id) await openSession(created.id);
|
|
@@ -9787,6 +9797,23 @@ if (els.finTraderModel) {
|
|
|
9787
9797
|
toast('Trade ajanı modeli: ' + (els.finTraderModel.value || 'genel aktif model'));
|
|
9788
9798
|
});
|
|
9789
9799
|
}
|
|
9800
|
+
/* TRADE AJANI: modelleri yeniden çek — üstteki ⟳ ile aynı mantık
|
|
9801
|
+
(models:refresh). Eksik/yeni modeller listeye girer, seçim korunur. */
|
|
9802
|
+
if (els.finModelRefreshBtn) {
|
|
9803
|
+
els.finModelRefreshBtn.addEventListener('click', async () => {
|
|
9804
|
+
els.finModelRefreshBtn.classList.add('spin');
|
|
9805
|
+
try {
|
|
9806
|
+
state = await beast.refreshModels();
|
|
9807
|
+
applyState();
|
|
9808
|
+
await finFillModels();
|
|
9809
|
+
toast(_t('mr_done'));
|
|
9810
|
+
} catch {
|
|
9811
|
+
toast(_t('ws_fail_toast'));
|
|
9812
|
+
} finally {
|
|
9813
|
+
els.finModelRefreshBtn.classList.remove('spin');
|
|
9814
|
+
}
|
|
9815
|
+
});
|
|
9816
|
+
}
|
|
9790
9817
|
if (els.finTraderBtn) {
|
|
9791
9818
|
els.finTraderBtn.addEventListener('click', async () => {
|
|
9792
9819
|
if (els.finTraderBtn.classList.contains('stop')) {
|
package/src/renderer/style.css
CHANGED
|
@@ -287,9 +287,9 @@ body:not(.ide-mode):not(.studio-mode):not(.sandbox-mode) #watchPane { display: f
|
|
|
287
287
|
/* Studio tuşu artık topbar'da (dd-btn dd-icon-btn) — aktif rozet diğer topbar ikonlarıyla aynı */
|
|
288
288
|
#studioBtn.on { background: var(--accent-dim); color: var(--accent); }
|
|
289
289
|
|
|
290
|
-
/* model refresh
|
|
291
|
-
#modelRefreshBtn.spin { opacity: .7; pointer-events: none; }
|
|
292
|
-
#modelRefreshBtn.spin { animation: beast-spin 0.9s linear infinite; }
|
|
290
|
+
/* model refresh butonları — çekerken döner */
|
|
291
|
+
#modelRefreshBtn.spin, #finModelRefreshBtn.spin { opacity: .7; pointer-events: none; }
|
|
292
|
+
#modelRefreshBtn.spin, #finModelRefreshBtn.spin { animation: beast-spin 0.9s linear infinite; }
|
|
293
293
|
@keyframes beast-spin { to { transform: rotate(360deg); } }
|
|
294
294
|
|
|
295
295
|
/* ---------- cron modülü (ayarlar sekmesi) ---------- */
|