neoagent 1.4.0 → 1.4.3
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/.env.example +5 -0
- package/com.neoagent.plist +8 -6
- package/docs/configuration.md +9 -1
- package/docs/skills.md +6 -2
- package/lib/manager.js +37 -10
- package/package.json +4 -1
- package/runtime/paths.js +80 -0
- package/server/db/database.js +78 -4
- package/server/index.js +5 -5
- package/server/public/app.html +124 -49
- package/server/public/assets/world-office-dark.png +0 -0
- package/server/public/assets/world-office-light.png +0 -0
- package/server/public/css/app.css +575 -242
- package/server/public/css/styles.css +445 -121
- package/server/public/js/app.js +1041 -423
- package/server/routes/memory.js +3 -1
- package/server/routes/settings.js +42 -6
- package/server/routes/skills.js +124 -84
- package/server/routes/store.js +102 -1
- package/server/services/ai/compaction.js +15 -31
- package/server/services/ai/engine.js +224 -202
- package/server/services/ai/history.js +188 -0
- package/server/services/ai/learning.js +143 -0
- package/server/services/ai/providers/google.js +8 -1
- package/server/services/ai/settings.js +80 -0
- package/server/services/ai/systemPrompt.js +57 -98
- package/server/services/ai/toolResult.js +151 -0
- package/server/services/ai/toolRunner.js +26 -7
- package/server/services/ai/toolSelector.js +140 -0
- package/server/services/ai/tools.js +158 -5
- package/server/services/browser/controller.js +124 -48
- package/server/services/manager.js +26 -3
- package/server/services/mcp/client.js +1 -1
- package/server/services/memory/embeddings.js +80 -14
- package/server/services/memory/manager.js +211 -17
- package/server/services/messaging/telnyx.js +3 -2
- package/server/services/messaging/whatsapp.js +3 -2
- package/server/services/scheduler/cron.js +6 -1
- package/server/services/websocket.js +19 -6
package/server/public/app.html
CHANGED
|
@@ -40,13 +40,21 @@
|
|
|
40
40
|
</svg>
|
|
41
41
|
Chat
|
|
42
42
|
</button>
|
|
43
|
-
<button class="sidebar-btn" data-page="
|
|
43
|
+
<button class="sidebar-btn" data-page="world" id="worldNavBtn">
|
|
44
44
|
<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
|
45
45
|
stroke-linecap="round" stroke-linejoin="round">
|
|
46
|
-
<
|
|
46
|
+
<path d="M12 2v4" />
|
|
47
|
+
<path d="M12 18v4" />
|
|
48
|
+
<path d="M4.93 4.93l2.83 2.83" />
|
|
49
|
+
<path d="M16.24 16.24l2.83 2.83" />
|
|
50
|
+
<path d="M2 12h4" />
|
|
51
|
+
<path d="M18 12h4" />
|
|
52
|
+
<path d="M4.93 19.07l2.83-2.83" />
|
|
53
|
+
<path d="M16.24 7.76l2.83-2.83" />
|
|
54
|
+
<circle cx="12" cy="12" r="4" />
|
|
47
55
|
</svg>
|
|
48
|
-
|
|
49
|
-
<span class="
|
|
56
|
+
World
|
|
57
|
+
<span class="world-badge hidden" id="worldBadge"></span>
|
|
50
58
|
</button>
|
|
51
59
|
<div class="sidebar-divider"></div>
|
|
52
60
|
<button class="sidebar-btn" data-page="messaging">
|
|
@@ -174,48 +182,94 @@
|
|
|
174
182
|
</div>
|
|
175
183
|
</div>
|
|
176
184
|
|
|
177
|
-
<!--
|
|
178
|
-
<div class="page" id="page-
|
|
179
|
-
<div class="
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
<
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
185
|
+
<!-- World Page -->
|
|
186
|
+
<div class="page" id="page-world">
|
|
187
|
+
<div class="world-page">
|
|
188
|
+
<div class="world-layout">
|
|
189
|
+
<section class="world-stage-card">
|
|
190
|
+
<div class="world-stage-frame">
|
|
191
|
+
<canvas id="worldCanvas" class="world-canvas" aria-label="NeoAgent world visualization"></canvas>
|
|
192
|
+
<div class="world-stage-overlay">
|
|
193
|
+
<div class="world-overlay-group">
|
|
194
|
+
<span class="world-pill" id="worldModePill">Idle</span>
|
|
195
|
+
<span class="world-pill subtle" id="worldToolPill">Awaiting signal</span>
|
|
196
|
+
</div>
|
|
197
|
+
<div class="world-overlay-chip">
|
|
198
|
+
<span class="world-overlay-label">Task</span>
|
|
199
|
+
<span class="world-overlay-value" id="worldTaskValue">No active run</span>
|
|
200
|
+
</div>
|
|
201
|
+
<div class="world-overlay-chip">
|
|
202
|
+
<span class="world-overlay-label">Status</span>
|
|
203
|
+
<span class="world-overlay-value" id="worldStatusValue">Ambient systems nominal</span>
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
</section>
|
|
198
208
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
<
|
|
209
|
+
<aside class="world-hud">
|
|
210
|
+
<div class="world-panel">
|
|
211
|
+
<div class="world-panel-header">
|
|
212
|
+
<h2>Live Signals</h2>
|
|
213
|
+
<span class="world-panel-kicker">Realtime</span>
|
|
214
|
+
</div>
|
|
215
|
+
<div class="world-stats-grid">
|
|
216
|
+
<div class="world-stat">
|
|
217
|
+
<span class="world-stat-label">Mode</span>
|
|
218
|
+
<strong class="world-stat-value" id="worldModeValue">Idle</strong>
|
|
219
|
+
</div>
|
|
220
|
+
<div class="world-stat">
|
|
221
|
+
<span class="world-stat-label">Run</span>
|
|
222
|
+
<strong class="world-stat-value" id="worldRunValue">None</strong>
|
|
223
|
+
</div>
|
|
224
|
+
<div class="world-stat">
|
|
225
|
+
<span class="world-stat-label">Tools</span>
|
|
226
|
+
<strong class="world-stat-value" id="worldToolsValue">0</strong>
|
|
227
|
+
</div>
|
|
228
|
+
<div class="world-stat">
|
|
229
|
+
<span class="world-stat-label">Helpers</span>
|
|
230
|
+
<strong class="world-stat-value" id="worldHelpersValue">0</strong>
|
|
231
|
+
</div>
|
|
232
|
+
<div class="world-stat">
|
|
233
|
+
<span class="world-stat-label">Messages</span>
|
|
234
|
+
<strong class="world-stat-value" id="worldMessagesValue">0</strong>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
206
237
|
</div>
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
<
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
<
|
|
215
|
-
<span>Pick a past run or start a new task in chat.</span>
|
|
238
|
+
|
|
239
|
+
<div class="world-panel">
|
|
240
|
+
<div class="world-panel-header">
|
|
241
|
+
<h2>Crew</h2>
|
|
242
|
+
<span class="world-panel-kicker">Lead + Helpers</span>
|
|
243
|
+
</div>
|
|
244
|
+
<div class="world-agent-list" id="worldAgentList">
|
|
245
|
+
<div class="world-empty-state">NeoAgent will show up here as the lead, and helper agents appear when a sub-agent is spawned.</div>
|
|
216
246
|
</div>
|
|
217
247
|
</div>
|
|
218
|
-
|
|
248
|
+
|
|
249
|
+
<div class="world-panel">
|
|
250
|
+
<div class="world-panel-header">
|
|
251
|
+
<h2>Event Feed</h2>
|
|
252
|
+
<span class="world-panel-kicker">Latest 6</span>
|
|
253
|
+
</div>
|
|
254
|
+
<div class="world-event-list" id="worldEventList">
|
|
255
|
+
<div class="world-empty-state">The world is idling. Start a task in chat to wake everything up.</div>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
259
|
+
<div class="world-panel">
|
|
260
|
+
<div class="world-panel-header">
|
|
261
|
+
<h2>Structures</h2>
|
|
262
|
+
<span class="world-panel-kicker">Role Map</span>
|
|
263
|
+
</div>
|
|
264
|
+
<div class="world-legend">
|
|
265
|
+
<div class="world-legend-item"><span class="swatch core"></span> Core tower</div>
|
|
266
|
+
<div class="world-legend-item"><span class="swatch browser"></span> Browser dock</div>
|
|
267
|
+
<div class="world-legend-item"><span class="swatch memory"></span> Memory archive</div>
|
|
268
|
+
<div class="world-legend-item"><span class="swatch cli"></span> Command forge</div>
|
|
269
|
+
<div class="world-legend-item"><span class="swatch social"></span> Message port</div>
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
</aside>
|
|
219
273
|
</div>
|
|
220
274
|
</div>
|
|
221
275
|
</div>
|
|
@@ -268,6 +322,7 @@
|
|
|
268
322
|
<div class="page-body">
|
|
269
323
|
<div class="tabs">
|
|
270
324
|
<div class="tab active" data-mem-tab="memories">Memories</div>
|
|
325
|
+
<div class="tab" data-mem-tab="sessions">Session Recall</div>
|
|
271
326
|
<div class="tab" data-mem-tab="core">Core</div>
|
|
272
327
|
<div class="tab" data-mem-tab="soul">Soul</div>
|
|
273
328
|
<div class="tab" data-mem-tab="daily">Daily Logs</div>
|
|
@@ -292,6 +347,15 @@
|
|
|
292
347
|
style="display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;"></div>
|
|
293
348
|
</div>
|
|
294
349
|
|
|
350
|
+
<div class="mem-panel" id="mem-sessions">
|
|
351
|
+
<div style="display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap;">
|
|
352
|
+
<input type="text" id="sessionSearchInput" class="input" style="flex:1;min-width:220px;"
|
|
353
|
+
placeholder="Search old chats, commands, or decisions…" />
|
|
354
|
+
<button class="btn btn-sm btn-secondary" id="sessionSearchBtn">Search</button>
|
|
355
|
+
</div>
|
|
356
|
+
<div id="sessionRecallList"></div>
|
|
357
|
+
</div>
|
|
358
|
+
|
|
295
359
|
<!-- Core memory tab -->
|
|
296
360
|
<div class="mem-panel" id="mem-core">
|
|
297
361
|
<div style="margin-bottom:14px;">
|
|
@@ -498,36 +562,46 @@
|
|
|
498
562
|
</div>
|
|
499
563
|
|
|
500
564
|
<!-- Settings Modal -->
|
|
501
|
-
<div class="modal-overlay hidden" id="settingsModal">
|
|
565
|
+
<div class="modal-overlay hidden" id="settingsModal" data-bwignore="true">
|
|
502
566
|
<div class="modal" style="max-width:550px;">
|
|
503
567
|
<div class="modal-header">
|
|
504
|
-
<
|
|
568
|
+
<div style="display:flex;align-items:center;gap:8px;">
|
|
569
|
+
<h2>Settings</h2>
|
|
570
|
+
<span class="badge badge-neutral" id="settingsAppVersion" style="font-size:11px;padding:2px 6px;"></span>
|
|
571
|
+
</div>
|
|
505
572
|
<button class="btn-ghost" id="closeSettings">×</button>
|
|
506
573
|
</div>
|
|
507
574
|
<div class="modal-body">
|
|
508
575
|
<div class="form-group">
|
|
509
576
|
<label class="form-label">Heartbeat</label>
|
|
510
577
|
<label class="flex items-center gap-2" style="cursor:pointer;">
|
|
511
|
-
<input type="checkbox" id="settingHeartbeat">
|
|
578
|
+
<input type="checkbox" id="settingHeartbeat" autocomplete="off" data-bwignore="true">
|
|
512
579
|
<span>Enable scheduled heartbeat checks</span>
|
|
513
580
|
</label>
|
|
514
581
|
</div>
|
|
515
582
|
<div class="form-group">
|
|
516
583
|
<label class="form-label">Browser</label>
|
|
517
584
|
<label class="flex items-center gap-2" style="cursor:pointer;">
|
|
518
|
-
<input type="checkbox" id="settingHeadlessBrowser">
|
|
585
|
+
<input type="checkbox" id="settingHeadlessBrowser" autocomplete="off" data-bwignore="true">
|
|
519
586
|
<span>Run browser headless (no visible window)</span>
|
|
520
587
|
</label>
|
|
521
588
|
</div>
|
|
589
|
+
<div class="form-group">
|
|
590
|
+
<label class="form-label">Skill Learning</label>
|
|
591
|
+
<label class="flex items-center gap-2" style="cursor:pointer;">
|
|
592
|
+
<input type="checkbox" id="settingAutoSkillLearning" autocomplete="off" data-bwignore="true">
|
|
593
|
+
<span>Create disabled draft skills from successful multi-step runs</span>
|
|
594
|
+
</label>
|
|
595
|
+
</div>
|
|
522
596
|
<div class="form-group">
|
|
523
597
|
<label class="form-label">Default Chat Model</label>
|
|
524
|
-
<select id="settingDefaultChatModel" class="input">
|
|
598
|
+
<select id="settingDefaultChatModel" class="input" autocomplete="off" data-bwignore="true">
|
|
525
599
|
<option value="auto">Smart Selector (Auto)</option>
|
|
526
600
|
</select>
|
|
527
601
|
</div>
|
|
528
602
|
<div class="form-group">
|
|
529
603
|
<label class="form-label">Default Sub-agent Model</label>
|
|
530
|
-
<select id="settingDefaultSubagentModel" class="input">
|
|
604
|
+
<select id="settingDefaultSubagentModel" class="input" autocomplete="off" data-bwignore="true">
|
|
531
605
|
<option value="auto">Smart Selector (Auto)</option>
|
|
532
606
|
</select>
|
|
533
607
|
</div>
|
|
@@ -542,7 +616,8 @@
|
|
|
542
616
|
<span>Token Usage</span>
|
|
543
617
|
<span class="settings-info-wrap" tabindex="0" aria-label="Token usage info">
|
|
544
618
|
<span class="settings-info-icon">i</span>
|
|
545
|
-
<span class="settings-info-pop">Run-level totals from the DB. Used to track token usage trends in this
|
|
619
|
+
<span class="settings-info-pop">Run-level totals from the DB. Used to track token usage trends in this
|
|
620
|
+
app.</span>
|
|
546
621
|
</span>
|
|
547
622
|
</label>
|
|
548
623
|
<div class="settings-token-box" id="tokenUsageSummary">Loading token usage…</div>
|
|
Binary file
|
|
Binary file
|