beast-agent 0.15.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 (62) hide show
  1. package/.env.example +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +94 -0
  4. package/assets/app.ico +0 -0
  5. package/assets/tray.png +0 -0
  6. package/bin/beast-agent.js +23 -0
  7. package/config.example.yaml +26 -0
  8. package/eng.traineddata +0 -0
  9. package/package.json +101 -0
  10. package/scripts/swap-electron.js +40 -0
  11. package/src/agent/bus.js +384 -0
  12. package/src/agent/computeruse.js +200 -0
  13. package/src/agent/config.js +284 -0
  14. package/src/agent/engine.js +3118 -0
  15. package/src/agent/kb.js +123 -0
  16. package/src/agent/llm.js +219 -0
  17. package/src/agent/logger.js +90 -0
  18. package/src/agent/memory.js +383 -0
  19. package/src/agent/pdf.js +20 -0
  20. package/src/agent/scripts/__pycache__/websearch.cpython-312.pyc +0 -0
  21. package/src/agent/scripts/news.py +113 -0
  22. package/src/agent/scripts/websearch.py +225 -0
  23. package/src/agent/skills.js +522 -0
  24. package/src/agent/tokens.js +39 -0
  25. package/src/agent/tools.js +911 -0
  26. package/src/agent/usage.js +125 -0
  27. package/src/agent/watchers.js +312 -0
  28. package/src/agent/watext.js +75 -0
  29. package/src/agent/whatsapp.js +494 -0
  30. package/src/cron.js +245 -0
  31. package/src/main.js +3622 -0
  32. package/src/preload.js +122 -0
  33. package/src/renderer/browserPreload.js +73 -0
  34. package/src/renderer/i18n.js +757 -0
  35. package/src/renderer/index.html +227 -0
  36. package/src/renderer/renderer.js +3250 -0
  37. package/src/renderer/style.css +1559 -0
  38. package/tests/approval.test.js +56 -0
  39. package/tests/bg-jobs.test.js +315 -0
  40. package/tests/bus.test.js +46 -0
  41. package/tests/computeruse-context.test.js +69 -0
  42. package/tests/cron.test.js +95 -0
  43. package/tests/engine.test.js +140 -0
  44. package/tests/eval.test.js +91 -0
  45. package/tests/fallout.test.js +188 -0
  46. package/tests/llm.test.js +56 -0
  47. package/tests/memory.test.js +33 -0
  48. package/tests/memoryloop.test.js +26 -0
  49. package/tests/notegen.test.js +63 -0
  50. package/tests/owner.test.js +32 -0
  51. package/tests/python.test.js +75 -0
  52. package/tests/scenarios.json +81 -0
  53. package/tests/sessioncode.test.js +50 -0
  54. package/tests/setup.js +9 -0
  55. package/tests/tokens.test.js +42 -0
  56. package/tests/tools.test.js +84 -0
  57. package/tests/usage.test.js +44 -0
  58. package/tests/v11.test.js +76 -0
  59. package/tests/watchers.test.js +206 -0
  60. package/tests/watext.test.js +53 -0
  61. package/tests/whatsapp.test.js +103 -0
  62. package/tests/wherewasi.test.js +40 -0
@@ -0,0 +1,227 @@
1
+ <!DOCTYPE html>
2
+ <html lang="tr">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta http-equiv="Content-Security-Policy"
6
+ content="default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src 'self'" />
7
+ <title>Beast Agent</title>
8
+ <link rel="stylesheet" href="style.css" />
9
+ </head>
10
+ <body>
11
+ <div id="app">
12
+ <aside id="sidebar">
13
+ <div id="brand"><span class="brand-beast">BEAST</span><span class="brand-sub">Agent</span></div>
14
+ <button id="newChat" title="Yeni sohbet" data-i18n="newChat">+ Yeni Sohbet</button>
15
+ <div id="sessList"></div>
16
+ <div id="sideFoot">
17
+ <button id="gearBtn" title="Ayarlar" data-i18n-title="tipGear">&#x2699;&#xFE0E;</button>
18
+ <button id="themeBtn" title="Koyu tema">&#x263E;</button>
19
+ <button id="langBtn" title="Dil değiştir / Switch language" data-i18n-title="tipLang"><svg viewBox="0 0 24 24" width="15" height="15" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="12" cy="12" r="9"/><path d="M3 12h18"/><path d="M12 3c2.6 2.6 2.6 15.4 0 18M12 3c-2.6 2.6-2.6 15.4 0 18"/></svg></button>
20
+ </div>
21
+ </aside>
22
+
23
+ <main id="main">
24
+ <header id="topbar">
25
+ <div id="modelDD" class="dd">
26
+ <button id="modelBtn" class="dd-btn" title="Model seç" data-i18n-title="tipModel"><span id="modelBtnLabel">Model</span><span class="dd-caret">▾</span></button>
27
+ <div id="modelMenu" class="dd-menu" hidden>
28
+ <input id="modelFilter" class="dd-filter" placeholder="Model ara…" autocomplete="off" />
29
+ <div id="modelList" class="dd-list"></div>
30
+ </div>
31
+ </div>
32
+ <div id="thinkDD" class="dd">
33
+ <button id="thinkBtn" class="dd-btn dd-icon-btn" title="Düşünme (reasoning) seviyesi" data-i18n-title="tipThink"><span id="thinkBtnLabel"><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="M9.5 2A2.5 2.5 0 0 0 7 4.5v.55A3.5 3.5 0 0 0 4.5 8.5c0 .74.23 1.43.62 2A3.5 3.5 0 0 0 4 13.5 3.5 3.5 0 0 0 7 16.95v.55A2.5 2.5 0 0 0 9.5 20a2.5 2.5 0 0 0 2.5-2.5v-13A2.5 2.5 0 0 0 9.5 2z"/><path d="M14.5 2A2.5 2.5 0 0 1 17 4.5v.55a3.5 3.5 0 0 1 2.5 3.45c0 .74-.23 1.43-.62 2a3.5 3.5 0 0 1 1.12 3 3.5 3.5 0 0 1-3 3.45v.55A2.5 2.5 0 0 1 14.5 20 2.5 2.5 0 0 1 12 17.5v-13A2.5 2.5 0 0 1 14.5 2z"/></svg></span></button>
34
+ <div id="thinkMenu" class="dd-menu think-menu" hidden>
35
+ <div id="thinkList" class="dd-list"></div>
36
+ </div>
37
+ </div>
38
+ <button id="modelRefreshBtn" class="dd-btn dd-icon-btn" title="Modelleri yeniden çek" data-i18n-title="tipModelRefresh">&#x27F3;</button>
39
+ <div id="pickCfg" class="dd">
40
+ <button id="pickCfgBtn" class="dd-btn dd-icon-btn" title="Picker'da görünecek modeller" data-i18n-title="tipPickCfg">⚙</button>
41
+ <div id="pickCfgMenu" class="dd-menu cfg-menu" hidden>
42
+ <div class="cfg-head">
43
+ <span>Picker modelleri</span>
44
+ <span class="cfg-quick"><button id="cfgAll">Tümü</button><button id="cfgNone">Hiçbiri</button></span>
45
+ </div>
46
+ <div id="cfgList" class="dd-list"></div>
47
+ </div>
48
+ </div>
49
+ <button id="railBtn" class="dd-btn dd-icon-btn on" title="Paralel Ajan Konsolu" data-i18n-title="tipRail">&#x25A4;</button>
50
+ <button id="watchBtn" class="dd-btn dd-icon-btn" title="İzleyiciler (Watchers)" data-i18n-title="tipWatch">&#x25CE;</button>
51
+ <button id="cronBtn" class="dd-btn dd-icon-btn" title="Cron Görevler" data-i18n-title="tipCron">&#x23F1;&#xFE0E;</button>
52
+ <button id="termBtn" class="dd-btn dd-icon-btn" title="Terminal (PowerShell)" data-i18n-title="tipTerm">&gt;</button>
53
+ <button id="termGBtn" class="dd-btn dd-icon-btn" title="Git Bash terminali" data-i18n-title="tipTermG">&#x25C8;</button>
54
+ <button id="termCBtn" class="dd-btn dd-icon-btn" title="CMD terminali" data-i18n-title="tipTermC">&#x276F;&#xFE0E;</button>
55
+ <button id="browserBtn" class="dd-btn dd-icon-btn" title="Dahili tarayıcı" data-i18n-title="tipBrowser">&#x29C9;</button>
56
+ <button id="eyeBtn" class="dd-btn dd-icon-btn" title="Ajan tarayıcısı görünür/gizli — göz açıkken aramalar panelde izlenir, kapalıyken gizli çalışır" data-i18n-title="tipEye"><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="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7z"/><circle cx="12" cy="12" r="3"/></svg></button>
57
+ <div class="drag-spacer"></div>
58
+ </header>
59
+
60
+ <div id="chatScroll">
61
+ <div id="empty">
62
+ <div id="emptyLogo">BEAST</div>
63
+ <div id="emptyHint" data-i18n="emptyHint">Hızlı · hafif · becerikli. Ne yapalım?</div>
64
+ </div>
65
+ <div id="msgs"></div>
66
+ </div>
67
+
68
+ <div id="composerWrap">
69
+ <div id="todoPanel" hidden></div>
70
+ <div id="statusPill" hidden></div>
71
+ <div id="chips" hidden></div>
72
+ <div id="slashMenu" hidden></div>
73
+ <div id="composer">
74
+ <button id="attachBtn" title="Dosya / resim ekle" data-i18n-title="tipAttach">+</button>
75
+ <button id="micBtn" title="Sesli komut — konuş, bırakınca yazıya çevirsin" data-i18n-title="tipMic"><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="9" y="2" width="6" height="12" rx="3"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><path d="M12 19v3"/></svg></button>
76
+ <textarea id="input" rows="1" placeholder="Bir şey sor ya da görev ver… (Enter: gönder · Shift+Enter: satır · /: komutlar)" data-i18n-ph="composerPh"></textarea>
77
+ <button id="stopBtn" title="Durdur" hidden data-i18n-title="tipStop">■</button>
78
+ <button id="sendBtn" title="Gönder" data-i18n-title="tipSend">&#x27A4;&#xFE0E;</button>
79
+ </div>
80
+ </div>
81
+ </main>
82
+
83
+ <aside id="rail">
84
+ <div id="railHead" data-i18n="labelParallel">Paralel Ajanlar</div>
85
+ <div id="railList"></div>
86
+ <div id="sideFoot2">
87
+ <span class="foot-label2" data-i18n="labelParallel">Paralel Ajanlar</span>
88
+ </div>
89
+ </aside>
90
+ </div>
91
+
92
+ <div id="settingsOverlay" hidden>
93
+ <div id="settingsDialog">
94
+ <aside id="setTabs">
95
+ <div class="set-tabs-title" data-i18n="set_title">AYARLAR</div>
96
+ <button class="tab active" data-tab="provider" data-i18n="tab_provider">Provider</button>
97
+ <button class="tab" data-tab="fallout" data-i18n="tab_fallout">Fallout</button>
98
+ <button class="tab" data-tab="memory" data-i18n="tab_memory">Memory</button>
99
+ <button class="tab" data-tab="skills" data-i18n="tab_skills">Skills</button>
100
+ <button class="tab" data-tab="agents" data-i18n="tab_agents">Paralel Ajanlar</button>
101
+ <button class="tab" data-tab="tts" data-i18n="tab_tts">Sesli Yanıt</button>
102
+ <button class="tab" data-tab="email" data-i18n="tab_email">E-posta</button>
103
+ <button class="tab" data-tab="integrations" data-i18n="tab_integrations">Entegrasyonlar</button>
104
+ <button class="tab" data-tab="websearch" data-i18n="tab_websearch">Web Arama</button>
105
+ <button class="tab" data-tab="events" data-i18n="tab_events">Olay Merkezi</button>
106
+ <button class="tab" data-tab="cron" data-i18n="tab_cron">Cron</button>
107
+ <button class="tab" data-tab="usage" data-i18n="tab_usage">Maliyet</button>
108
+ <button class="tab" data-tab="logs" data-i18n="tab_logs">Log</button>
109
+ <button class="tab" data-tab="dash" data-i18n="tab_dash">Dashboard</button>
110
+ <button class="tab" data-tab="limits" data-i18n="tab_limits">Limit</button>
111
+ <button class="tab" data-tab="sec" data-i18n="tab_security">Güvenlik</button>
112
+ <div class="set-tabs-foot">
113
+ <div id="beastCodeBox" class="beast-code" data-i18n-title="bc_label" title="Beast Kodu">
114
+ <div class="bc-row">
115
+ <code id="beastCode" class="bc-value">—</code>
116
+ <button id="bcCopy" class="bc-copy" data-i18n="bc_copy">Kopyala</button>
117
+ </div>
118
+ </div>
119
+ <button id="setClose" data-i18n="btn_close">Kapat</button>
120
+ </div>
121
+ </aside>
122
+ <section id="setContent">
123
+ <div id="tab-provider" class="pane"></div>
124
+ <div id="tab-fallout" class="pane" hidden></div>
125
+ <div id="tab-memory" class="pane" hidden></div>
126
+ <div id="tab-skills" class="pane" hidden></div>
127
+ <div id="tab-agents" class="pane" hidden></div>
128
+ <div id="tab-tts" class="pane" hidden></div>
129
+ <div id="tab-email" class="pane" hidden></div>
130
+ <div id="tab-integrations" class="pane" hidden></div>
131
+ <div id="tab-websearch" class="pane" hidden></div>
132
+ <div id="tab-events" class="pane" hidden></div>
133
+ <div id="tab-usage" class="pane" hidden></div>
134
+ <div id="tab-logs" class="pane" hidden></div>
135
+ <div id="tab-dash" class="pane" hidden></div>
136
+ <div id="tab-limits" class="pane" hidden></div>
137
+ <div id="tab-sec" class="pane" hidden></div>
138
+ <div id="tab-cron" class="pane" hidden>
139
+ <h2 data-i18n="cron_h2">Cron Görevler</h2>
140
+ <div class="sub" data-i18n="cron_sub">Zamanlanmış görevler — saati gelince agent otomatik çalışır</div>
141
+ <div id="cronForm">
142
+ <input id="cronName" placeholder="Görev adı" maxlength="80" data-i18n-ph="cron_name_ph" />
143
+ <div id="cronSchedRow">
144
+ <select id="cronPreset">
145
+ <option value="*/5 * * * *" data-i18n="cron_pr_5">Her 5 dakika</option>
146
+ <option value="*/15 * * * *" data-i18n="cron_pr_15">Her 15 dakika</option>
147
+ <option value="*/30 * * * *" data-i18n="cron_pr_30">Her 30 dakika</option>
148
+ <option value="0 * * * *" data-i18n="cron_pr_hour">Her saat başı</option>
149
+ <option value="0 9 * * *" data-i18n="cron_pr_day9">Her gün 09:00</option>
150
+ <option value="0 21 * * 1-5" data-i18n="cron_pr_wd21">Hafta içi 21:00</option>
151
+ <option value="__custom" data-i18n="cron_pr_custom">Özel cron…</option>
152
+ </select>
153
+ <input id="cronSchedule" placeholder="*/15 * * * *" spellcheck="false" />
154
+ </div>
155
+ <textarea id="cronPrompt" rows="3" placeholder="Agent'a verilecek görev…" data-i18n-ph="cron_prompt_ph"></textarea>
156
+ <button id="cronAddBtn" data-i18n="cron_add">+ Görev Ekle</button>
157
+ </div>
158
+ <div id="cronList"></div>
159
+ </div>
160
+ </section>
161
+ </div>
162
+ </div>
163
+
164
+ <div id="bbResize" hidden title="Sürükleyerek boyutlandır"></div>
165
+
166
+ <div id="watchOverlay" class="mini-overlay" hidden>
167
+ <div class="mini-dialog">
168
+ <div class="mini-head">
169
+ <span class="mini-title" data-i18n="mini_watch">İzleyiciler (Watchers)</span>
170
+ <button class="mini-close" id="watchClose" title="Kapat" data-i18n-title="btn_close">&#x00D7;</button>
171
+ </div>
172
+ <div class="mini-body">
173
+ <div id="watchList" class="mini-list"></div>
174
+ </div>
175
+ </div>
176
+ </div>
177
+
178
+ <div id="cronOverlay" class="mini-overlay" hidden>
179
+ <div class="mini-dialog">
180
+ <div class="mini-head">
181
+ <span class="mini-title" data-i18n="mini_cron">Cron Görevler</span>
182
+ <button class="mini-close" id="cronClose" title="Kapat" data-i18n-title="btn_close">&#x00D7;</button>
183
+ </div>
184
+ <div class="mini-body">
185
+ <div id="cronModalList" class="mini-list"></div>
186
+ </div>
187
+ </div>
188
+ </div>
189
+
190
+ <div id="browserBar" hidden>
191
+ <button id="bbBack" title="Geri" data-i18n-title="tip_bb_back">&#x2190;</button>
192
+ <button id="bbFwd" title="İleri" data-i18n-title="tip_bb_fwd">&#x2192;</button>
193
+ <button id="bbReload" title="Yenile" data-i18n-title="tip_bb_reload">&#x21BB;</button>
194
+ <input id="bbUrl" placeholder="adres yaz veya ara…" autocomplete="off" spellcheck="false" data-i18n-ph="bb_ph" />
195
+ <button id="bbShot" title="Ekran görüntüsünü sohbete ekle" data-i18n-title="tip_bb_shot">&#x25A3;</button>
196
+ <button id="bbOpenExt" title="Tarayıcıda aç" data-i18n-title="tip_bb_open">&#x2197;</button>
197
+ <button id="bbClose" title="Kapat" data-i18n-title="btn_close">&#x00D7;</button>
198
+ </div>
199
+
200
+ <div id="termPanel" hidden>
201
+ <div id="termHead">
202
+ <span id="termTitle">TERMINAL</span>
203
+ <span id="termCwd" title=""></span>
204
+ <span class="term-spacer"></span>
205
+ <button id="termClear" title="Çıktıyı temizle" data-i18n="term_clear" data-i18n-title="btn_close">Temizle</button>
206
+ <button id="termClose" title="Kapat" data-i18n-title="btn_close">&#x00D7;</button>
207
+ </div>
208
+ <div id="termBody">
209
+ <div id="termOut"></div>
210
+ </div>
211
+ <div id="termInputRow">
212
+ <span id="termPrompt">PS&gt;</span>
213
+ <input id="termInput" spellcheck="false" autocomplete="off" placeholder="komut yaz, Enter'la çalıştır…" data-i18n-ph="term_ph" />
214
+ <button id="termStop" title="Çalışan komutu durdur" hidden data-i18n-title="term_stop">&#x25A0;&#xFE0E;</button>
215
+ </div>
216
+ </div>
217
+ <div id="termResize" hidden title="Sürükleyerek boyutlandır"></div>
218
+
219
+ <div id="toast"></div>
220
+
221
+ <input type="file" id="fileInput" multiple hidden
222
+ accept="image/*,.txt,.md,.json,.csv,.log,.js,.ts,.py,.ps1,.bat,.cmd,.html,.css,.yaml,.yml,.xml,.ini" />
223
+
224
+ <script src="i18n.js"></script>
225
+ <script src="renderer.js"></script>
226
+ </body>
227
+ </html>