neoagent 2.1.18-beta.13 → 2.1.18-beta.15
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/README.md +1 -1
- package/docs/.vitepress/config.mts +56 -6
- package/docs/capabilities.md +2 -2
- package/docs/configuration.md +9 -1
- package/docs/index.md +55 -26
- package/docs/integrations.md +16 -1
- package/docs/skills.md +1 -1
- package/docs/why-neoagent.md +1 -1
- package/package.json +1 -1
- package/server/http/middleware.js +6 -1
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +49451 -49272
- package/server/routes/messaging.js +37 -0
- package/server/services/ai/tools.js +3 -3
- package/server/services/messaging/automation.js +37 -3
- package/server/services/messaging/http_platforms.js +794 -0
- package/server/services/messaging/manager.js +109 -1
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ neoagent logs
|
|
|
35
35
|
|
|
36
36
|
## Links
|
|
37
37
|
|
|
38
|
-
[Docs
|
|
38
|
+
[Docs](https://neolabs-systems.github.io/NeoAgent/) | [Issues](https://github.com/NeoLabs-Systems/NeoAgent/issues)
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
@@ -5,11 +5,38 @@ export default defineConfig({
|
|
|
5
5
|
description: 'Self-hosted proactive AI agent docs',
|
|
6
6
|
base: '/NeoAgent/',
|
|
7
7
|
cleanUrls: true,
|
|
8
|
+
lastUpdated: true,
|
|
8
9
|
themeConfig: {
|
|
9
10
|
nav: [
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
{
|
|
12
|
+
text: 'Start',
|
|
13
|
+
activeMatch: '^/(getting-started|why-neoagent)?$',
|
|
14
|
+
items: [
|
|
15
|
+
{ text: 'Overview', link: '/' },
|
|
16
|
+
{ text: 'Getting Started', link: '/getting-started' },
|
|
17
|
+
{ text: 'Why NeoAgent', link: '/why-neoagent' },
|
|
18
|
+
],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
text: 'Product',
|
|
22
|
+
activeMatch: '^/(capabilities|automation|integrations|skills)',
|
|
23
|
+
items: [
|
|
24
|
+
{ text: 'Capabilities', link: '/capabilities' },
|
|
25
|
+
{ text: 'Android Control', link: '/capabilities#android-control' },
|
|
26
|
+
{ text: 'Recordings', link: '/capabilities#recordings' },
|
|
27
|
+
{ text: 'Integrations', link: '/integrations' },
|
|
28
|
+
{ text: 'Automation', link: '/automation' },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
text: 'Operate',
|
|
33
|
+
activeMatch: '^/(configuration|operations)',
|
|
34
|
+
items: [
|
|
35
|
+
{ text: 'Configuration', link: '/configuration' },
|
|
36
|
+
{ text: 'Skills', link: '/skills' },
|
|
37
|
+
{ text: 'Operations', link: '/operations' },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
13
40
|
{ text: 'Why NeoAgent', link: '/why-neoagent' },
|
|
14
41
|
{ text: 'GitHub', link: 'https://github.com/NeoLabs-Systems/NeoAgent' },
|
|
15
42
|
],
|
|
@@ -19,17 +46,32 @@ export default defineConfig({
|
|
|
19
46
|
items: [
|
|
20
47
|
{ text: 'Overview', link: '/' },
|
|
21
48
|
{ text: 'Getting Started', link: '/getting-started' },
|
|
22
|
-
{ text: 'Capabilities', link: '/capabilities' },
|
|
23
49
|
{ text: 'Why NeoAgent', link: '/why-neoagent' },
|
|
24
50
|
],
|
|
25
51
|
},
|
|
26
52
|
{
|
|
27
|
-
text: '
|
|
53
|
+
text: 'Product Surface',
|
|
28
54
|
items: [
|
|
29
|
-
{
|
|
55
|
+
{
|
|
56
|
+
text: 'Capabilities',
|
|
57
|
+
link: '/capabilities',
|
|
58
|
+
items: [
|
|
59
|
+
{ text: 'Android Control', link: '/capabilities#android-control' },
|
|
60
|
+
{ text: 'Recordings', link: '/capabilities#recordings' },
|
|
61
|
+
{ text: 'Health Data', link: '/capabilities#health-data' },
|
|
62
|
+
{ text: 'Agent Tools', link: '/capabilities#agent-tools' },
|
|
63
|
+
{ text: 'Runtime Modes', link: '/capabilities#runtime-modes' },
|
|
64
|
+
],
|
|
65
|
+
},
|
|
30
66
|
{ text: 'Automation', link: '/automation' },
|
|
31
67
|
{ text: 'Integrations', link: '/integrations' },
|
|
32
68
|
{ text: 'Skills', link: '/skills' },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
text: 'Operate',
|
|
73
|
+
items: [
|
|
74
|
+
{ text: 'Configuration', link: '/configuration' },
|
|
33
75
|
{ text: 'Operations', link: '/operations' },
|
|
34
76
|
],
|
|
35
77
|
},
|
|
@@ -40,10 +82,18 @@ export default defineConfig({
|
|
|
40
82
|
search: {
|
|
41
83
|
provider: 'local',
|
|
42
84
|
},
|
|
85
|
+
outline: {
|
|
86
|
+
level: [2, 3],
|
|
87
|
+
label: 'On This Page',
|
|
88
|
+
},
|
|
43
89
|
editLink: {
|
|
44
90
|
pattern: 'https://github.com/NeoLabs-Systems/NeoAgent/edit/main/docs/:path',
|
|
45
91
|
text: 'Edit this page on GitHub',
|
|
46
92
|
},
|
|
93
|
+
docFooter: {
|
|
94
|
+
prev: 'Previous',
|
|
95
|
+
next: 'Next',
|
|
96
|
+
},
|
|
47
97
|
footer: {
|
|
48
98
|
message: 'Released under the MIT License.',
|
|
49
99
|
copyright: 'Copyright NeoLabs Systems',
|
package/docs/capabilities.md
CHANGED
|
@@ -79,11 +79,11 @@ The agent tool `read_health_data` returns summaries and recent samples. It is de
|
|
|
79
79
|
NeoAgent has two separate integration layers:
|
|
80
80
|
|
|
81
81
|
- Official OAuth integrations expose structured tools for Google Workspace, Microsoft 365, Notion, Slack, and Figma.
|
|
82
|
-
- Messaging platforms let the agent talk through Telegram, Discord,
|
|
82
|
+
- Messaging platforms let the agent talk through WhatsApp, Telegram, Discord, Slack, Google Chat, Teams, Matrix, Signal, iMessage/BlueBubbles, IRC, Twitch, LINE, Mattermost, configurable webhook bridges, and Telnyx Voice.
|
|
83
83
|
|
|
84
84
|
Official integration examples include Gmail thread search and send mail, Google Calendar events, Drive upload/download/export/share links, Docs create/append/replace, Sheets read/update/append/create, Microsoft Outlook/Calendar/OneDrive/Teams tools, Notion search/page/block/database tools, Slack conversation/message tools, and Figma file/node/comment/image tools.
|
|
85
85
|
|
|
86
|
-
Messaging examples include Telegram and Discord messages, WhatsApp text and media sends, Telnyx inbound voice, Telnyx outbound calls, and scheduled-task call delivery.
|
|
86
|
+
Messaging examples include Telegram and Discord messages, Slack channel replies, Matrix room messages, Google Chat and Teams webhook delivery, Signal bridge delivery, iMessage/BlueBubbles sends, WhatsApp text and media sends, Telnyx inbound voice, Telnyx outbound calls, and scheduled-task call delivery.
|
|
87
87
|
|
|
88
88
|
## Agent Tools
|
|
89
89
|
|
package/docs/configuration.md
CHANGED
|
@@ -67,7 +67,15 @@ All OAuth callbacks default to `PUBLIC_URL + /api/integrations/oauth/callback` u
|
|
|
67
67
|
|
|
68
68
|
## Messaging
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
Messaging platform credentials are stored through the Flutter app messaging tab, not in `.env`. This includes Telegram, Discord, Slack, Google Chat, Microsoft Teams, Matrix, Signal, iMessage/BlueBubbles, IRC, Twitch, LINE, Mattermost, and the configurable webhook bridges. Use the app to set platform tokens, webhook URLs, inbound secrets, polling options, and access lists.
|
|
71
|
+
|
|
72
|
+
Generic inbound messaging callbacks use:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
PUBLIC_URL + /api/messaging/webhook/:platform
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Telnyx webhook verification is configured through the environment.
|
|
71
79
|
|
|
72
80
|
| Variable | Description |
|
|
73
81
|
|---|---|
|
package/docs/index.md
CHANGED
|
@@ -1,8 +1,47 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
layout: home
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
hero:
|
|
5
|
+
name: NeoAgent
|
|
6
|
+
text: Self-hosted proactive AI agent
|
|
7
|
+
tagline: Run your own server, keep credentials server-side, and operate browser, Android, recordings, schedules, integrations, memory, MCP, and messaging from one Flutter UI.
|
|
8
|
+
actions:
|
|
9
|
+
- theme: brand
|
|
10
|
+
text: Get Started
|
|
11
|
+
link: /getting-started
|
|
12
|
+
- theme: alt
|
|
13
|
+
text: Capabilities
|
|
14
|
+
link: /capabilities
|
|
15
|
+
- theme: alt
|
|
16
|
+
text: Why NeoAgent
|
|
17
|
+
link: /why-neoagent
|
|
4
18
|
|
|
5
|
-
|
|
19
|
+
features:
|
|
20
|
+
- title: Android Control
|
|
21
|
+
details: Let the AI operate a server-attached Android emulator or device with screenshots, UI dumps, app launch, intents, taps, typing, swipes, APK installs, and ADB shell.
|
|
22
|
+
link: /capabilities#android-control
|
|
23
|
+
linkText: Android Control
|
|
24
|
+
- title: Recordings
|
|
25
|
+
details: Capture web, Android, and wearable audio as sessions with transcripts, searchable segments, playback, retry, cleanup, and AI-generated insights.
|
|
26
|
+
link: /capabilities#recordings
|
|
27
|
+
linkText: Recordings
|
|
28
|
+
- title: Proactive Automation
|
|
29
|
+
details: Create recurring tasks and one-time runs that can use browser, files, CLI, memory, MCP, integrations, subagents, health summaries, and messaging delivery.
|
|
30
|
+
link: /automation
|
|
31
|
+
linkText: Automation
|
|
32
|
+
- title: Official Integrations
|
|
33
|
+
details: Use OAuth-backed Google Workspace, Microsoft 365, Notion, Slack, and Figma tools instead of brittle browser automation where possible.
|
|
34
|
+
link: /integrations
|
|
35
|
+
linkText: Integrations
|
|
36
|
+
- title: Server-Side Secrets
|
|
37
|
+
details: Keep AI provider keys, OAuth client secrets, Telnyx tokens, runtime settings, and deployment controls on the NeoAgent server.
|
|
38
|
+
link: /configuration
|
|
39
|
+
linkText: Configuration
|
|
40
|
+
- title: Recovery Path
|
|
41
|
+
details: Operate self-hosted installs with status, logs, release channels, update, fix, runtime paths, and the remote-server log caveat.
|
|
42
|
+
link: /operations
|
|
43
|
+
linkText: Operations
|
|
44
|
+
---
|
|
6
45
|
|
|
7
46
|
## Quick Start
|
|
8
47
|
|
|
@@ -11,29 +50,19 @@ npm install -g neoagent
|
|
|
11
50
|
neoagent install
|
|
12
51
|
```
|
|
13
52
|
|
|
14
|
-
|
|
53
|
+
Open the server URL, sign in, configure providers and messaging, then create a scheduled task or chat run.
|
|
15
54
|
|
|
16
|
-
##
|
|
55
|
+
## Navigation
|
|
17
56
|
|
|
18
|
-
|
|
|
57
|
+
| Need | Start here |
|
|
19
58
|
|---|---|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
30
|
-
## Where To Go Next
|
|
31
|
-
|
|
32
|
-
- [Getting started](getting-started.md) covers installation, setup, and service commands.
|
|
33
|
-
- [Capabilities](capabilities.md) lists the broader tool, Android control, recording, health, runtime, and integration surface.
|
|
34
|
-
- [Configuration](configuration.md) explains server-side environment variables and secrets.
|
|
35
|
-
- [Automation](automation.md) explains scheduled tasks and tool safety.
|
|
36
|
-
- [Integrations](integrations.md) explains OAuth integrations and messaging.
|
|
37
|
-
- [Skills](skills.md) explains built-in and custom skills.
|
|
38
|
-
- [Operations](operations.md) explains logs, updates, release channels, and recovery.
|
|
39
|
-
- [Why NeoAgent](why-neoagent.md) compares NeoAgent with OpenClaw.
|
|
59
|
+
| Install and first run | [Getting Started](getting-started.md) |
|
|
60
|
+
| Full product surface | [Capabilities](capabilities.md) |
|
|
61
|
+
| Android device control | [Capabilities: Android Control](capabilities.md#android-control) |
|
|
62
|
+
| Recordings and transcripts | [Capabilities: Recordings](capabilities.md#recordings) |
|
|
63
|
+
| Scheduled tasks | [Automation](automation.md) |
|
|
64
|
+
| OAuth apps and messaging | [Integrations](integrations.md) |
|
|
65
|
+
| Skills and MCP | [Skills](skills.md) |
|
|
66
|
+
| Secrets and runtime settings | [Configuration](configuration.md) |
|
|
67
|
+
| Logs, updates, and repair | [Operations](operations.md) |
|
|
68
|
+
| OpenClaw comparison | [Why NeoAgent](why-neoagent.md) |
|
package/docs/integrations.md
CHANGED
|
@@ -33,9 +33,24 @@ NeoAgent can talk through:
|
|
|
33
33
|
| WhatsApp | QR-based linking through the app settings; text and media sends |
|
|
34
34
|
| Telegram | Bot token plus approved chats |
|
|
35
35
|
| Discord | Bot token plus server or channel access |
|
|
36
|
+
| Slack | Bot token sends plus Events API callbacks |
|
|
37
|
+
| Google Chat | Space webhook sends plus app callback ingestion |
|
|
38
|
+
| Microsoft Teams | Incoming webhook sends plus outgoing webhook ingestion |
|
|
39
|
+
| Matrix | Homeserver access token with room send and polling |
|
|
40
|
+
| Signal | signal-cli REST API bridge |
|
|
41
|
+
| iMessage / BlueBubbles | BlueBubbles-compatible bridge for macOS-hosted iMessage |
|
|
42
|
+
| IRC and Twitch | IRC-style channel connections |
|
|
43
|
+
| LINE and Mattermost | Native send paths with webhook ingestion |
|
|
44
|
+
| Feishu, Nextcloud Talk, Nostr, Synology Chat, Tlon, Zalo, Zalo Personal, WeChat, and WebChat | Configurable webhook bridges |
|
|
36
45
|
| Telnyx Voice | Inbound and outbound calling with text-to-speech; scheduled tasks can call a number |
|
|
37
46
|
|
|
38
|
-
|
|
47
|
+
Messaging channel credentials are stored through the Flutter app messaging tab rather than `.env`. The generic inbound callback path is:
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
PUBLIC_URL + /api/messaging/webhook/:platform
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Use the per-platform inbound secret or native signature fields in the messaging tab for webhook callbacks. Telnyx voice webhooks continue to use `TELNYX_WEBHOOK_TOKEN`.
|
|
39
54
|
|
|
40
55
|
## Credentials
|
|
41
56
|
|
package/docs/skills.md
CHANGED
|
@@ -10,7 +10,7 @@ Skills are Markdown files that teach the agent how to use local capabilities or
|
|
|
10
10
|
| `cli.md` | Execute shell commands in a persistent terminal |
|
|
11
11
|
| `files.md` | Read, write, and search files on the host |
|
|
12
12
|
| `memory.md` | Store and recall long-term memories |
|
|
13
|
-
| `messaging.md` | Send messages via Telegram, Discord, or
|
|
13
|
+
| `messaging.md` | Send messages via connected messaging platforms such as WhatsApp, Telegram, Discord, Slack, Matrix, Teams, Google Chat, or webhook bridges |
|
|
14
14
|
| `system-stats.md` | CPU, memory, and disk usage |
|
|
15
15
|
| `weather.md` | Current weather via wttr.in |
|
|
16
16
|
| `ip-info.md` | Public IP and geolocation |
|
package/docs/why-neoagent.md
CHANGED
|
@@ -10,7 +10,7 @@ This comparison is based on the public [OpenClaw README](https://raw.githubuserc
|
|
|
10
10
|
| Setup shape | `npm install -g neoagent` followed by `neoagent install`. | `openclaw onboard` is the preferred guided setup path. |
|
|
11
11
|
| Architecture | Self-hosted Node server, SQLite runtime data, built-in web UI, Android client, server-side credentials. | Gateway control plane with channel connections, optional apps/nodes, and a much wider platform surface. |
|
|
12
12
|
| Android control | AI control of a server-attached Android emulator or device: screenshots, UI dumps, visible node inspection, app launch, intent launch, taps, long press, typing, swipes, key presses, wait-for-element, APK installs, and `adb shell`. | Broader node/app ecosystem with Android node capabilities documented publicly. |
|
|
13
|
-
| Messaging breadth |
|
|
13
|
+
| Messaging breadth | Broad built-in messaging tab coverage: WhatsApp, Telegram, Discord, Slack, Google Chat, Signal, iMessage/BlueBubbles, IRC, Teams, Matrix, LINE, Mattermost, Twitch, and configurable webhook bridges for Feishu, Nextcloud Talk, Nostr, Synology Chat, Tlon, Zalo, WeChat, and WebChat, plus Telnyx Voice. | Still broader as a gateway ecosystem: the public README lists the same major channels plus a larger channel/node/app surface around them. |
|
|
14
14
|
| Operator UX | Built-in UI sections for chat, runs, logs, scheduler, skills, integrations, MCP, memory, devices, recordings, health, and settings. | Broader gateway, web, canvas, platform, node, and channel surfaces. |
|
|
15
15
|
| Credentials | AI provider keys and OAuth client secrets are server-side; channel settings are stored through the app where supported. | Public docs describe a broader config and auth surface across gateway, channels, nodes, and apps. |
|
|
16
16
|
| Automation | Cron-style scheduled tasks, one-time runs, browser/file/CLI skills, MCP tools, official integrations, subagents, recording search, health summaries, and messaging delivery. | Broader automation platform including cron, webhooks, nodes, and channel-specific actions. |
|
package/package.json
CHANGED
|
@@ -120,7 +120,12 @@ function createSessionMiddleware({ secureCookies }) {
|
|
|
120
120
|
|
|
121
121
|
function applyHttpMiddleware(app, { secureCookies, sessionMiddleware, validateOrigin }) {
|
|
122
122
|
const rawRecordingChunkBody = require('express').raw({ limit: '50mb', type: '*/*' });
|
|
123
|
-
const jsonBody = require('express').json({
|
|
123
|
+
const jsonBody = require('express').json({
|
|
124
|
+
limit: '10mb',
|
|
125
|
+
verify: (req, _res, buf) => {
|
|
126
|
+
if (buf && buf.length) req.rawBody = buf.toString('utf8');
|
|
127
|
+
},
|
|
128
|
+
});
|
|
124
129
|
const urlencodedBody = require('express').urlencoded({ extended: true });
|
|
125
130
|
const isRecordingChunkPath = (value = '') => {
|
|
126
131
|
const path = `${value}`.split('?')[0];
|
|
Binary file
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"425cfb54d01a9472b3e81d9e76fd63a4a44cfb
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "951763898" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|