neoagent 2.3.1-beta.17 → 2.3.1-beta.19
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 +6 -0
- package/docs/capabilities.md +2 -2
- package/docs/configuration.md +6 -2
- package/docs/integrations.md +4 -1
- package/lib/manager.js +48 -5
- package/package.json +1 -1
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +48133 -47844
- package/server/services/integrations/registry.js +2 -0
- package/server/services/integrations/trello/provider.js +744 -0
package/.env.example
CHANGED
|
@@ -168,6 +168,12 @@ GITHUB_OAUTH_CLIENT_ID=your-github-oauth-client-id
|
|
|
168
168
|
GITHUB_OAUTH_CLIENT_SECRET=your-github-oauth-client-secret
|
|
169
169
|
GITHUB_OAUTH_REDIRECT_URI=
|
|
170
170
|
|
|
171
|
+
# Spotify official integration OAuth client.
|
|
172
|
+
# Redirect URI should match <PUBLIC_URL>/api/integrations/oauth/callback.
|
|
173
|
+
SPOTIFY_OAUTH_CLIENT_ID=your-spotify-oauth-client-id
|
|
174
|
+
SPOTIFY_OAUTH_CLIENT_SECRET=your-spotify-oauth-client-secret
|
|
175
|
+
SPOTIFY_OAUTH_REDIRECT_URI=
|
|
176
|
+
|
|
171
177
|
########################################
|
|
172
178
|
# Tools and media services
|
|
173
179
|
########################################
|
package/docs/capabilities.md
CHANGED
|
@@ -75,10 +75,10 @@ The agent tool `read_health_data` returns summaries and recent samples. It is de
|
|
|
75
75
|
|
|
76
76
|
NeoAgent has two separate integration layers:
|
|
77
77
|
|
|
78
|
-
- Official integrations expose structured tools for Google Workspace, Microsoft 365, Notion, Slack, Figma, Home Assistant, Weather, Spotify, and a separate personal WhatsApp connection.
|
|
78
|
+
- Official integrations expose structured tools for Google Workspace, Microsoft 365, Notion, Slack, Figma, Home Assistant, Trello, Weather, Spotify, and a separate personal WhatsApp connection.
|
|
79
79
|
- 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.
|
|
80
80
|
|
|
81
|
-
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, Figma file/node/comment/image tools, Home Assistant entity/config reads and service calls, Weather current/forecast tools plus weather-event task triggers, Spotify playback/search/control tools, and a personal WhatsApp integration with isolated chat read/send tools and per-account read-only versus read/write access.
|
|
81
|
+
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, Figma file/node/comment/image tools, Home Assistant entity/config reads and service calls, Trello board/list/card/comment/search tools, Weather current/forecast tools plus weather-event task triggers, Spotify playback/search/control tools, and a personal WhatsApp integration with isolated chat read/send tools and per-account read-only versus read/write access.
|
|
82
82
|
|
|
83
83
|
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.
|
|
84
84
|
|
package/docs/configuration.md
CHANGED
|
@@ -68,7 +68,7 @@ Recording insight generation is controlled in app AI settings with `auto_recordi
|
|
|
68
68
|
|
|
69
69
|
## Official Integrations
|
|
70
70
|
|
|
71
|
-
Official integrations use OAuth or provider-native account linking and expose structured tools to the agent. The built-in registry currently covers Google Workspace, Notion, Microsoft 365, Slack, Figma, Home Assistant, Weather, Spotify, and personal WhatsApp.
|
|
71
|
+
Official integrations use OAuth or provider-native account linking and expose structured tools to the agent. The built-in registry currently covers Google Workspace, Notion, Microsoft 365, Slack, Figma, Home Assistant, Trello, Weather, Spotify, and personal WhatsApp.
|
|
72
72
|
|
|
73
73
|
All OAuth callbacks default to `PUBLIC_URL + /api/integrations/oauth/callback` unless you set a provider-specific redirect URI.
|
|
74
74
|
|
|
@@ -95,13 +95,17 @@ All OAuth callbacks default to `PUBLIC_URL + /api/integrations/oauth/callback` u
|
|
|
95
95
|
| `HOME_ASSISTANT_OAUTH_CLIENT_SECRET` | Optional fallback Home Assistant OAuth client secret. |
|
|
96
96
|
| `HOME_ASSISTANT_OAUTH_REDIRECT_URI` | Optional fallback Home Assistant OAuth callback URL. |
|
|
97
97
|
| `HOME_ASSISTANT_ALLOW_PRIVATE_BASE_URL` | Optional safety override. Set to `1` only if you intentionally allow Home Assistant base URLs on localhost/private networks. |
|
|
98
|
+
| `TRELLO_API_KEY` | Not used. Trello is configured per user in Official Integrations. |
|
|
99
|
+
| `TRELLO_TOKEN` | Not used. Trello is configured per user in Official Integrations. |
|
|
98
100
|
| `SPOTIFY_OAUTH_CLIENT_ID` | Spotify OAuth client ID |
|
|
99
101
|
| `SPOTIFY_OAUTH_CLIENT_SECRET` | Spotify OAuth client secret |
|
|
100
102
|
| `SPOTIFY_OAUTH_REDIRECT_URI` | Optional Spotify OAuth callback URL |
|
|
101
103
|
|
|
102
|
-
Home Assistant no longer
|
|
104
|
+
Home Assistant and Trello no longer require server-side setup. Each user can open Official Integrations and enter their own provider-specific credentials in the Flutter UI.
|
|
103
105
|
For safety, local/private Home Assistant targets are blocked by default unless `HOME_ASSISTANT_ALLOW_PRIVATE_BASE_URL=1` is set on the server.
|
|
104
106
|
|
|
107
|
+
Trello uses each user’s own API key and token. Those values are stored securely per user and are never added to server environment variables.
|
|
108
|
+
|
|
105
109
|
Weather integration uses Open-Meteo public endpoints and does not require OAuth environment variables.
|
|
106
110
|
|
|
107
111
|
## Messaging
|
package/docs/integrations.md
CHANGED
|
@@ -14,10 +14,13 @@ The built-in registry includes:
|
|
|
14
14
|
| Slack | Conversations, history, posting, search, user info, and Slack Web API requests |
|
|
15
15
|
| Figma | Current user, files, nodes, rendered images, comments, and Figma REST requests |
|
|
16
16
|
| Home Assistant | Entity/config reads, service calls, and Home Assistant REST API requests |
|
|
17
|
+
| Trello | Boards, lists, cards, comments, search, and Trello REST API requests |
|
|
17
18
|
| Weather | Keyless Open-Meteo current weather and forecast tools |
|
|
18
19
|
| Spotify | Playback state, recently played, search, and playback controls |
|
|
19
20
|
|
|
20
|
-
OAuth app credentials are configured through server environment variables for most providers. Home Assistant can also be configured per-user in the Flutter **Integrations** UI without any server-side setup. Account connections are created in the Flutter UI under **Integrations**. Connected tools are exposed to the agent as structured tools, so prefer them over browser automation when they can do the job.
|
|
21
|
+
OAuth app credentials are configured through server environment variables for most providers. Home Assistant and Trello can also be configured per-user in the Flutter **Integrations** UI without any server-side setup. Account connections are created in the Flutter UI under **Integrations**. Connected tools are exposed to the agent as structured tools, so prefer them over browser automation when they can do the job.
|
|
22
|
+
|
|
23
|
+
Trello uses a user-supplied API key and token instead of OAuth. Those values are stored per user in the encrypted integration config store, and Trello does not need any server environment variables.
|
|
21
24
|
|
|
22
25
|
Weather note: the Weather integration uses Open-Meteo public APIs and does not require OAuth client credentials.
|
|
23
26
|
|
package/lib/manager.js
CHANGED
|
@@ -542,6 +542,40 @@ async function cmdSetup() {
|
|
|
542
542
|
const normalizedDeploymentMode = parseDeploymentMode(deploymentMode);
|
|
543
543
|
const normalizedReleaseChannel = parseReleaseChannel(releaseChannel) || 'stable';
|
|
544
544
|
|
|
545
|
+
const githubOauthClientId = await askSecret(
|
|
546
|
+
'GitHub OAuth client ID',
|
|
547
|
+
current.GITHUB_OAUTH_CLIENT_ID || ''
|
|
548
|
+
);
|
|
549
|
+
const githubOauthClientSecret = await askSecret(
|
|
550
|
+
'GitHub OAuth client secret',
|
|
551
|
+
current.GITHUB_OAUTH_CLIENT_SECRET || ''
|
|
552
|
+
);
|
|
553
|
+
const githubOauthRedirectUri = await ask(
|
|
554
|
+
'GitHub OAuth redirect URI',
|
|
555
|
+
current.GITHUB_OAUTH_REDIRECT_URI || ''
|
|
556
|
+
);
|
|
557
|
+
|
|
558
|
+
const homeAssistantOauthClientId = await askSecret(
|
|
559
|
+
'Home Assistant OAuth client ID',
|
|
560
|
+
current.HOME_ASSISTANT_OAUTH_CLIENT_ID || ''
|
|
561
|
+
);
|
|
562
|
+
const homeAssistantOauthClientSecret = await askSecret(
|
|
563
|
+
'Home Assistant OAuth client secret',
|
|
564
|
+
current.HOME_ASSISTANT_OAUTH_CLIENT_SECRET || ''
|
|
565
|
+
);
|
|
566
|
+
const homeAssistantOauthRedirectUri = await ask(
|
|
567
|
+
'Home Assistant OAuth redirect URI',
|
|
568
|
+
current.HOME_ASSISTANT_OAUTH_REDIRECT_URI || ''
|
|
569
|
+
);
|
|
570
|
+
const homeAssistantBaseUrl = await ask(
|
|
571
|
+
'Home Assistant base URL (e.g., https://ha.example.com)',
|
|
572
|
+
current.HOME_ASSISTANT_BASE_URL || ''
|
|
573
|
+
);
|
|
574
|
+
const homeAssistantAllowPrivateUrl = current.HOME_ASSISTANT_ALLOW_PRIVATE_BASE_URL === '1' ? 'true' : await ask(
|
|
575
|
+
'Allow local/private Home Assistant base URLs? (true/false)',
|
|
576
|
+
'false'
|
|
577
|
+
);
|
|
578
|
+
|
|
545
579
|
const lines = [
|
|
546
580
|
`NODE_ENV=production`,
|
|
547
581
|
`PORT=${port}`,
|
|
@@ -576,6 +610,14 @@ async function cmdSetup() {
|
|
|
576
610
|
figmaOauthClientId ? `FIGMA_OAUTH_CLIENT_ID=${figmaOauthClientId}` : '',
|
|
577
611
|
figmaOauthClientSecret ? `FIGMA_OAUTH_CLIENT_SECRET=${figmaOauthClientSecret}` : '',
|
|
578
612
|
figmaOauthRedirectUri ? `FIGMA_OAUTH_REDIRECT_URI=${figmaOauthRedirectUri}` : '',
|
|
613
|
+
githubOauthClientId ? `GITHUB_OAUTH_CLIENT_ID=${githubOauthClientId}` : '',
|
|
614
|
+
githubOauthClientSecret ? `GITHUB_OAUTH_CLIENT_SECRET=${githubOauthClientSecret}` : '',
|
|
615
|
+
githubOauthRedirectUri ? `GITHUB_OAUTH_REDIRECT_URI=${githubOauthRedirectUri}` : '',
|
|
616
|
+
homeAssistantOauthClientId ? `HOME_ASSISTANT_OAUTH_CLIENT_ID=${homeAssistantOauthClientId}` : '',
|
|
617
|
+
homeAssistantOauthClientSecret ? `HOME_ASSISTANT_OAUTH_CLIENT_SECRET=${homeAssistantOauthClientSecret}` : '',
|
|
618
|
+
homeAssistantOauthRedirectUri ? `HOME_ASSISTANT_OAUTH_REDIRECT_URI=${homeAssistantOauthRedirectUri}` : '',
|
|
619
|
+
homeAssistantBaseUrl ? `HOME_ASSISTANT_BASE_URL=${homeAssistantBaseUrl}` : '',
|
|
620
|
+
String(homeAssistantAllowPrivateUrl || '').trim().toLowerCase() === 'true' ? `HOME_ASSISTANT_ALLOW_PRIVATE_BASE_URL=1` : '',
|
|
579
621
|
deepgramApiKey ? `DEEPGRAM_API_KEY=${deepgramApiKey}` : '',
|
|
580
622
|
deepgramBaseUrl ? `DEEPGRAM_BASE_URL=${deepgramBaseUrl}` : '',
|
|
581
623
|
deepgramModel ? `DEEPGRAM_MODEL=${deepgramModel}` : '',
|
|
@@ -1128,6 +1170,8 @@ function cmdUpdate(args = []) {
|
|
|
1128
1170
|
}
|
|
1129
1171
|
const versionBefore = currentInstalledVersionLabel();
|
|
1130
1172
|
let versionAfter = versionBefore;
|
|
1173
|
+
const githubInstallRef = releaseChannel === 'beta' ? '#beta' : '';
|
|
1174
|
+
const githubInstallSpec = `git+https://github.com/NeoLabs-Systems/NeoAgent.git${githubInstallRef}`;
|
|
1131
1175
|
|
|
1132
1176
|
if (fs.existsSync(path.join(APP_DIR, '.git')) && commandExists('git')) {
|
|
1133
1177
|
const current = runQuiet('git', ['rev-parse', '--short', 'HEAD']);
|
|
@@ -1148,17 +1192,16 @@ function cmdUpdate(args = []) {
|
|
|
1148
1192
|
buildBundledWebClientIfPossible();
|
|
1149
1193
|
}
|
|
1150
1194
|
} else {
|
|
1151
|
-
|
|
1152
|
-
logWarn(`No git repo detected; attempting npm global update from ${npmTag}.`);
|
|
1195
|
+
logWarn(`No git repo detected; attempting npm global update from ${githubInstallSpec}.`);
|
|
1153
1196
|
if (commandExists('npm')) {
|
|
1154
1197
|
try {
|
|
1155
1198
|
backupRuntimeData();
|
|
1156
|
-
runOrThrow('npm', ['install', '-g',
|
|
1199
|
+
runOrThrow('npm', ['install', '-g', githubInstallSpec, '--force'], {
|
|
1157
1200
|
env: withInstallEnv()
|
|
1158
1201
|
});
|
|
1159
|
-
logOk('npm global update completed (forced reinstall)');
|
|
1202
|
+
logOk('npm global update completed (forced reinstall from GitHub)');
|
|
1160
1203
|
} catch {
|
|
1161
|
-
logWarn(`npm global update failed. Run: npm install -g
|
|
1204
|
+
logWarn(`npm global update failed. Run: npm install -g ${githubInstallSpec} --force`);
|
|
1162
1205
|
}
|
|
1163
1206
|
} else {
|
|
1164
1207
|
logWarn('npm not found. Cannot perform global update.');
|
package/package.json
CHANGED
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"59aa584fdf100e6c78c785d8a5b565d1de4b48
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "568119488" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|