neoagent 2.1.17 → 2.1.18-beta.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.
- package/.env.example +6 -0
- package/docs/configuration.md +3 -0
- package/package.json +2 -1
- package/server/db/database.js +29 -0
- package/server/http/routes.js +1 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +59654 -59196
- package/server/routes/integrations.js +119 -0
- package/server/routes/store.js +2 -121
- package/server/services/ai/capabilityHealth.js +25 -0
- package/server/services/ai/engine.js +9 -1
- package/server/services/ai/tools.js +15 -0
- package/server/services/commands/router.js +6 -3
- package/server/services/integrations/env.js +51 -0
- package/server/services/integrations/google/calendar.js +244 -0
- package/server/services/integrations/google/common.js +106 -0
- package/server/services/integrations/google/docs.js +163 -0
- package/server/services/integrations/google/drive.js +198 -0
- package/server/services/integrations/google/gmail.js +293 -0
- package/server/services/integrations/google/provider.js +219 -0
- package/server/services/integrations/google/sheets.js +158 -0
- package/server/services/integrations/manager.js +256 -0
- package/server/services/integrations/registry.js +21 -0
- package/server/services/manager.js +13 -0
- package/server/services/websocket.js +11 -1
package/.env.example
CHANGED
|
@@ -27,6 +27,12 @@ OPENAI_API_KEY=your-openai-api-key-here
|
|
|
27
27
|
# Get your key at: https://aistudio.google.com/app/apikey
|
|
28
28
|
GOOGLE_AI_KEY=your-google-ai-key-here
|
|
29
29
|
|
|
30
|
+
# Google Workspace official integration OAuth client
|
|
31
|
+
# Redirect URI should match ${PUBLIC_URL:-http://localhost:3333}/api/integrations/oauth/callback
|
|
32
|
+
GOOGLE_OAUTH_CLIENT_ID=your-google-oauth-client-id
|
|
33
|
+
GOOGLE_OAUTH_CLIENT_SECRET=your-google-oauth-client-secret
|
|
34
|
+
# GOOGLE_OAUTH_REDIRECT_URI=http://localhost:3333/api/integrations/oauth/callback
|
|
35
|
+
|
|
30
36
|
# Brave Search API key — used for:
|
|
31
37
|
# • Native web_search tool (search the web without driving the browser)
|
|
32
38
|
# Get your key at: https://api.search.brave.com/
|
package/docs/configuration.md
CHANGED
|
@@ -25,6 +25,9 @@ At least one API key is required. The active provider and model are configured i
|
|
|
25
25
|
| `OPENAI_API_KEY` | GPT-4o / Whisper (OpenAI) |
|
|
26
26
|
| `XAI_API_KEY` | Grok (xAI) |
|
|
27
27
|
| `GOOGLE_AI_KEY` | Gemini (Google) |
|
|
28
|
+
| `GOOGLE_OAUTH_CLIENT_ID` | Google Workspace official integrations OAuth client ID |
|
|
29
|
+
| `GOOGLE_OAUTH_CLIENT_SECRET` | Google Workspace official integrations OAuth client secret |
|
|
30
|
+
| `GOOGLE_OAUTH_REDIRECT_URI` | Optional override for the Google Workspace OAuth callback URL |
|
|
28
31
|
| `MINIMAX_API_KEY` | MiniMax Code (Coding Plan / Token Plan for `MiniMax-M2.7`) |
|
|
29
32
|
| `BRAVE_SEARCH_API_KEY` | Brave Search API for the native `web_search` tool |
|
|
30
33
|
| `DEEPGRAM_API_KEY` | Recordings transcription with Deepgram Nova-3 multilingual |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neoagent",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.18-beta.0",
|
|
4
4
|
"description": "Proactive personal AI agent with no limits",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "server/index.js",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"express": "^4.21.2",
|
|
56
56
|
"express-rate-limit": "^7.5.0",
|
|
57
57
|
"express-session": "^1.18.1",
|
|
58
|
+
"googleapis": "^150.0.1",
|
|
58
59
|
"helmet": "^8.0.0",
|
|
59
60
|
"multer": "^1.4.5-lts.1",
|
|
60
61
|
"node-cron": "^3.0.3",
|
package/server/db/database.js
CHANGED
|
@@ -108,6 +108,33 @@ db.exec(`
|
|
|
108
108
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
109
109
|
);
|
|
110
110
|
|
|
111
|
+
CREATE TABLE IF NOT EXISTS integration_connections (
|
|
112
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
113
|
+
user_id INTEGER NOT NULL,
|
|
114
|
+
provider_key TEXT NOT NULL,
|
|
115
|
+
status TEXT DEFAULT 'not_connected',
|
|
116
|
+
account_email TEXT,
|
|
117
|
+
scopes_json TEXT DEFAULT '[]',
|
|
118
|
+
credentials_json TEXT DEFAULT '{}',
|
|
119
|
+
metadata_json TEXT DEFAULT '{}',
|
|
120
|
+
last_connected_at TEXT,
|
|
121
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
122
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
123
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
124
|
+
UNIQUE(user_id, provider_key)
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
CREATE TABLE IF NOT EXISTS integration_oauth_states (
|
|
128
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
129
|
+
user_id INTEGER NOT NULL,
|
|
130
|
+
provider_key TEXT NOT NULL,
|
|
131
|
+
state TEXT NOT NULL UNIQUE,
|
|
132
|
+
code_verifier TEXT NOT NULL,
|
|
133
|
+
expires_at TEXT NOT NULL,
|
|
134
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
135
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
136
|
+
);
|
|
137
|
+
|
|
111
138
|
CREATE TABLE IF NOT EXISTS scheduled_tasks (
|
|
112
139
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
113
140
|
user_id INTEGER NOT NULL,
|
|
@@ -173,6 +200,8 @@ db.exec(`
|
|
|
173
200
|
CREATE INDEX IF NOT EXISTS idx_agent_runs_user ON agent_runs(user_id, created_at DESC);
|
|
174
201
|
CREATE INDEX IF NOT EXISTS idx_agent_runs_status ON agent_runs(status);
|
|
175
202
|
CREATE INDEX IF NOT EXISTS idx_agent_steps_run ON agent_steps(run_id, step_index);
|
|
203
|
+
CREATE INDEX IF NOT EXISTS idx_integration_connections_user ON integration_connections(user_id, provider_key);
|
|
204
|
+
CREATE INDEX IF NOT EXISTS idx_integration_oauth_states_state ON integration_oauth_states(state);
|
|
176
205
|
CREATE INDEX IF NOT EXISTS idx_messages_user ON messages(user_id, created_at DESC);
|
|
177
206
|
CREATE INDEX IF NOT EXISTS idx_messages_platform ON messages(platform, platform_chat_id);
|
|
178
207
|
CREATE INDEX IF NOT EXISTS idx_conv_messages ON conversation_messages(conversation_id, created_at);
|
package/server/http/routes.js
CHANGED
|
@@ -10,6 +10,7 @@ const routeRegistry = [
|
|
|
10
10
|
{ basePath: '/api/agents', modulePath: '../routes/agents' },
|
|
11
11
|
{ basePath: '/api/messaging', modulePath: '../routes/messaging' },
|
|
12
12
|
{ basePath: '/api/mcp', modulePath: '../routes/mcp' },
|
|
13
|
+
{ basePath: '/api/integrations', modulePath: '../routes/integrations' },
|
|
13
14
|
{ basePath: '/api/skills', modulePath: '../routes/skills' },
|
|
14
15
|
{ basePath: '/api/store', modulePath: '../routes/store' },
|
|
15
16
|
{ basePath: '/api/memory', modulePath: '../routes/memory' },
|
|
Binary file
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"425cfb54d01a9472b3e81d9e76fd63a4a44cfb
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "196428123" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|