beast-agent 0.23.7 → 0.23.8
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/agent/engine.js +17 -1
- package/src/renderer/renderer.js +15 -1
- package/src/renderer/style.css +13 -2
package/package.json
CHANGED
package/src/agent/engine.js
CHANGED
|
@@ -1014,11 +1014,27 @@ class Engine {
|
|
|
1014
1014
|
const firstUser = s.messages.find((m) => m.role === 'user');
|
|
1015
1015
|
const isBg = !!s.bgTitle;
|
|
1016
1016
|
const job = isBg ? this._bgJobs.get(String(s.id)) : null;
|
|
1017
|
+
/* Başlık: ilk user mesajının METNİ. Ekli mesajlarda content dizidir —
|
|
1018
|
+
String() doğrudan "[object Object]" üretir; text parçaları birleştirilir.
|
|
1019
|
+
WhatsApp/Telegram transport etiketi ([WhatsApp — gönderen: ...]) başlıkta
|
|
1020
|
+
gürültüdür — kırpılır, gerçek konuşma metni kalsın. */
|
|
1021
|
+
let title = '';
|
|
1022
|
+
if (!isBg && firstUser) {
|
|
1023
|
+
let t = Array.isArray(firstUser.content)
|
|
1024
|
+
? firstUser.content.filter((p) => p && p.type === 'text').map((p) => String(p.text || '')).join(' ')
|
|
1025
|
+
: String(firstUser.content || '');
|
|
1026
|
+
t = t
|
|
1027
|
+
.replace(/^\s*\[(WhatsApp|Telegram)[^\]]*\]\s*/i, '')
|
|
1028
|
+
.replace(/\[görsel gösterilemedi[^\]]*\]/gi, '')
|
|
1029
|
+
.replace(/\[(resim eki alındı|belge alındı[^\]]*|sesli mesaj[^\]]*)\]/gi, '')
|
|
1030
|
+
.trim();
|
|
1031
|
+
title = (t.split('\n')[0] || '').replace(/\s+/g, ' ').trim().slice(0, 48);
|
|
1032
|
+
}
|
|
1017
1033
|
return {
|
|
1018
1034
|
id: s.id,
|
|
1019
1035
|
code: s.code || '',
|
|
1020
1036
|
botId: s.botId || null,
|
|
1021
|
-
title: (isBg ? s.bgTitle :
|
|
1037
|
+
title: (isBg ? s.bgTitle : title) || 'Yeni Sohbet',
|
|
1022
1038
|
createdAt: s.createdAt,
|
|
1023
1039
|
updatedAt: s.updatedAt,
|
|
1024
1040
|
count: s.messages.length,
|
package/src/renderer/renderer.js
CHANGED
|
@@ -458,9 +458,13 @@ function finishToolCard(callId, ok, result) {
|
|
|
458
458
|
|
|
459
459
|
async function renderSessions(list) {
|
|
460
460
|
let waSet = new Set();
|
|
461
|
+
let tgSet = new Set();
|
|
461
462
|
try {
|
|
462
463
|
waSet = new Set(await beast.waListSessions());
|
|
463
464
|
} catch {}
|
|
465
|
+
try {
|
|
466
|
+
tgSet = new Set(await beast.tgListSessions());
|
|
467
|
+
} catch {}
|
|
464
468
|
els.sessList.innerHTML = '';
|
|
465
469
|
/* aktif botun oturumları — botlar arası geçişte liste de o bota göre değişir */
|
|
466
470
|
for (const s of list) {
|
|
@@ -469,6 +473,7 @@ async function renderSessions(list) {
|
|
|
469
473
|
row.className = 'sess' + (s.id === activeId ? ' active' : '');
|
|
470
474
|
row.innerHTML =
|
|
471
475
|
(waSet.has(s.id) ? '<span class="sess-wa" title="WhatsApp">W</span>' : '') +
|
|
476
|
+
(tgSet.has(s.id) ? '<span class="sess-tg" title="Telegram">T</span>' : '') +
|
|
472
477
|
`<span class="sess-title">${escapeHtml(s.title || 'Yeni Sohbet')}</span>` +
|
|
473
478
|
`<span class="sess-code" title="Oturum kodu">${escapeHtml(s.code || '')}</span>` +
|
|
474
479
|
`<button class="sess-del" title="Sil">×</button>`;
|
|
@@ -1619,7 +1624,9 @@ async function renderDashboardPane() {
|
|
|
1619
1624
|
let sessions = [];
|
|
1620
1625
|
try { sessions = (await beast.listSessions()) || []; } catch {}
|
|
1621
1626
|
let waSet = new Set();
|
|
1627
|
+
let tgSet = new Set();
|
|
1622
1628
|
try { waSet = new Set(await beast.waListSessions()); } catch {}
|
|
1629
|
+
try { tgSet = new Set(await beast.tgListSessions()); } catch {}
|
|
1623
1630
|
|
|
1624
1631
|
const totalMsgs = sessions.reduce((a, s) => a + (Number(s.count) || 0), 0);
|
|
1625
1632
|
const today = new Date().toDateString();
|
|
@@ -1655,6 +1662,7 @@ async function renderDashboardPane() {
|
|
|
1655
1662
|
row.className = 'usage-row' + (s.id === activeId ? ' dash-active' : '');
|
|
1656
1663
|
row.innerHTML =
|
|
1657
1664
|
(waSet.has(s.id) ? '<span class="sess-wa" title="WhatsApp">W</span>' : '') +
|
|
1665
|
+
(tgSet.has(s.id) ? '<span class="sess-tg" title="Telegram">T</span>' : '') +
|
|
1658
1666
|
`<span class="sess-code" title="Oturum kodu">${escapeHtml(s.code || '')}</span>` +
|
|
1659
1667
|
`<span style="flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">` +
|
|
1660
1668
|
`${escapeHtml(s.title || 'Yeni Sohbet')}</span>` +
|
|
@@ -2630,7 +2638,9 @@ async function renderBotChats(b) {
|
|
|
2630
2638
|
const box = $('#botChatMsgs');
|
|
2631
2639
|
box.innerHTML = '';
|
|
2632
2640
|
let waSet = new Set();
|
|
2641
|
+
let tgSet = new Set();
|
|
2633
2642
|
try { waSet = new Set(await beast.waListSessions()); } catch {}
|
|
2643
|
+
try { tgSet = new Set(await beast.tgListSessions()); } catch {}
|
|
2634
2644
|
const sessions = [];
|
|
2635
2645
|
try {
|
|
2636
2646
|
for (const s of await beast.listSessions()) {
|
|
@@ -2648,7 +2658,11 @@ async function renderBotChats(b) {
|
|
|
2648
2658
|
const row = document.createElement('div');
|
|
2649
2659
|
row.className = 'bot-chat-row';
|
|
2650
2660
|
row.innerHTML =
|
|
2651
|
-
(waSet.has(s.id)
|
|
2661
|
+
(waSet.has(s.id)
|
|
2662
|
+
? '<span class="sess-wa" title="WhatsApp">W</span>'
|
|
2663
|
+
: tgSet.has(s.id)
|
|
2664
|
+
? '<span class="sess-tg" title="Telegram">T</span>'
|
|
2665
|
+
: '<span class="sess-wa" style="opacity:.35">D</span>') +
|
|
2652
2666
|
`<span class="bt">${escapeHtml(s.title || 'Yeni Sohbet')}</span>` +
|
|
2653
2667
|
`<span class="sess-code">${escapeHtml(s.code || '')}</span>`;
|
|
2654
2668
|
row.addEventListener('click', async () => {
|
package/src/renderer/style.css
CHANGED
|
@@ -130,8 +130,19 @@ body {
|
|
|
130
130
|
display: flex;
|
|
131
131
|
align-items: center;
|
|
132
132
|
justify-content: center;
|
|
133
|
-
flex-shrink: 0;
|
|
134
133
|
}
|
|
134
|
+
.sess-tg {
|
|
135
|
+
width: 15px;
|
|
136
|
+
height: 15px;
|
|
137
|
+
border-radius: 4px;
|
|
138
|
+
background: #229ed9;
|
|
139
|
+
color: #fff;
|
|
140
|
+
font-size: 10px;
|
|
141
|
+
font-weight: 800;
|
|
142
|
+
display: flex;
|
|
143
|
+
align-items: center;
|
|
144
|
+
justify-content: center;
|
|
145
|
+
}
|
|
135
146
|
.sess-title { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 13px; }
|
|
136
147
|
.sess-code {
|
|
137
148
|
color: var(--muted);
|
|
@@ -1525,7 +1536,7 @@ body.browser-open #toast { left: calc((100vw - var(--bw, 480px)) / 2); }
|
|
|
1525
1536
|
|
|
1526
1537
|
#toast {
|
|
1527
1538
|
position: fixed;
|
|
1528
|
-
bottom:
|
|
1539
|
+
bottom: 84px; /* chat input alanının hemen üstünde */
|
|
1529
1540
|
left: 50%;
|
|
1530
1541
|
transform: translateX(-50%) translateY(16px);
|
|
1531
1542
|
opacity: 0;
|