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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "beast-agent",
3
3
  "productName": "Beast Agent",
4
- "version": "0.23.7",
4
+ "version": "0.23.8",
5
5
  "description": "Ultra-fast local agent shell for Windows.",
6
6
  "author": "algokodcom (AlgoKod)",
7
7
  "license": "MIT",
@@ -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 : (firstUser ? String(firstUser.content).slice(0, 48) : '')) || 'Yeni Sohbet',
1037
+ title: (isBg ? s.bgTitle : title) || 'Yeni Sohbet',
1022
1038
  createdAt: s.createdAt,
1023
1039
  updatedAt: s.updatedAt,
1024
1040
  count: s.messages.length,
@@ -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) ? '<span class="sess-wa" title="WhatsApp">W</span>' : '<span class="sess-wa" style="opacity:.35">D</span>') +
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 () => {
@@ -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: 28px;
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;