neoagent 2.1.18-beta.24 → 2.1.18-beta.26
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/docs/capabilities.md +3 -4
- package/docs/configuration.md +2 -4
- package/package.json +3 -1
- package/server/db/database.js +37 -0
- package/server/http/routes.js +1 -0
- package/server/public/assets/NOTICES +63 -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 +67110 -65506
- package/server/routes/account.js +143 -0
- package/server/routes/auth.js +90 -4
- package/server/routes/settings.js +1 -3
- package/server/services/account/email.js +28 -0
- package/server/services/account/geoip.js +81 -0
- package/server/services/account/sessions.js +157 -0
- package/server/services/account/two_factor.js +239 -0
- package/server/services/runtime/manager.js +0 -8
- package/server/services/runtime/settings.js +4 -49
- package/server/services/runtime/backends/remote.js +0 -53
package/docs/capabilities.md
CHANGED
|
@@ -53,7 +53,7 @@ Android control supports:
|
|
|
53
53
|
- Installing `.apk` and universal `.apks` bundles.
|
|
54
54
|
- Running `adb shell` commands when higher-level tools are not enough.
|
|
55
55
|
|
|
56
|
-
These actions run where the NeoAgent backend
|
|
56
|
+
These actions run where the NeoAgent backend is running. If NeoAgent is deployed on a remote server, the AI controls the Android runtime attached to that server, not the laptop where you are reading the docs.
|
|
57
57
|
|
|
58
58
|
## Android App, Health, And Wearables
|
|
59
59
|
|
|
@@ -117,10 +117,9 @@ Runtime settings let operators choose where higher-risk work runs:
|
|
|
117
117
|
|---|---|
|
|
118
118
|
| `trusted-host` | CLI, browser, and Android tools run on the host |
|
|
119
119
|
| `secure-vm` | CLI, browser, and Android tools run through the local VM backend |
|
|
120
|
-
| `hybrid` | CLI, browser, and Android tools use a configured remote worker |
|
|
121
120
|
|
|
122
|
-
|
|
121
|
+
Production policy can require the secure VM profile and a strong VM guest token.
|
|
123
122
|
|
|
124
|
-
These controls matter operationally: the browser, Android emulator, local files, and shell commands run wherever the NeoAgent backend,
|
|
123
|
+
These controls matter operationally: the browser, Android emulator, local files, and shell commands run wherever the NeoAgent backend, VM, or paired browser extension is running, not necessarily on the computer where you are reading the docs. Logs from a different server or remote browser may not match the logs on the local machine.
|
|
125
124
|
|
|
126
125
|
For extension-only remote browser control, download `/api/browser-extension/download` from NeoAgent, unzip it on the remote machine, load the folder in `chrome://extensions`, and pair after logging in. The extension uses Chrome's debugger permission for full browser control, so Chrome will show its normal debugging warning while attached. The popup can check whether the server has a newer extension bundle, but unpacked Developer Mode installs still need a manual download and reload.
|
package/docs/configuration.md
CHANGED
|
@@ -83,13 +83,11 @@ Telnyx webhook verification is configured through the environment.
|
|
|
83
83
|
|
|
84
84
|
## Runtime Isolation
|
|
85
85
|
|
|
86
|
-
Runtime profile and backend selection are stored in user settings, not normally in `.env`. The
|
|
86
|
+
Runtime profile and backend selection are stored in user settings, not normally in `.env`. The main profiles are `trusted-host` and `secure-vm`. They control whether CLI, browser, and Android tools run on the host or through the local VM backend.
|
|
87
87
|
|
|
88
88
|
Production policy can require the VM backend. In that case, set a strong `NEOAGENT_VM_GUEST_TOKEN` of at least 32 characters and avoid placeholder values.
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
The browser backend can also be set to `extension`. In that mode, browser actions use the paired Chrome extension connection rather than the server-local Puppeteer browser. To install only the extension on a remote machine, open NeoAgent, download `/api/browser-extension/download`, unzip it, load the folder through `chrome://extensions` with Developer mode enabled, then pair after logging in to NeoAgent. Unpacked Chrome extensions cannot replace themselves automatically; use the extension popup's update check to compare against the server bundle, then download and reload the latest ZIP when needed.
|
|
90
|
+
The app exposes two browser backend choices: Cloud and Chrome extension. Cloud uses the current deployment policy, which means host browser control for trusted private installs and VM browser control for isolated production installs. Chrome extension uses the paired extension connection instead of the server-local Puppeteer browser. To install only the extension on a remote machine, open NeoAgent, download `/api/browser-extension/download`, unzip it, load the folder through `chrome://extensions` with Developer mode enabled, then pair after logging in to NeoAgent. Unpacked Chrome extensions cannot replace themselves automatically; use the extension popup's update check to compare against the server bundle, then download and reload the latest ZIP when needed.
|
|
93
91
|
|
|
94
92
|
## Secrets Guidance
|
|
95
93
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "neoagent",
|
|
3
|
-
"version": "2.1.18-beta.
|
|
3
|
+
"version": "2.1.18-beta.26",
|
|
4
4
|
"description": "Proactive personal AI agent with no limits",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "server/index.js",
|
|
@@ -60,12 +60,14 @@
|
|
|
60
60
|
"express": "^4.21.2",
|
|
61
61
|
"express-rate-limit": "^7.5.0",
|
|
62
62
|
"express-session": "^1.18.1",
|
|
63
|
+
"geoip-lite": "^1.4.10",
|
|
63
64
|
"googleapis": "^150.0.1",
|
|
64
65
|
"helmet": "^8.0.0",
|
|
65
66
|
"multer": "^1.4.5-lts.1",
|
|
66
67
|
"node-cron": "^3.0.3",
|
|
67
68
|
"node-pty": "^1.0.0",
|
|
68
69
|
"openai": "^4.85.4",
|
|
70
|
+
"otplib": "^13.4.0",
|
|
69
71
|
"proper-lockfile": "^4.1.2",
|
|
70
72
|
"puppeteer-core": "^24.40.0",
|
|
71
73
|
"puppeteer-extra": "^3.3.6",
|
package/server/db/database.js
CHANGED
|
@@ -53,6 +53,41 @@ db.exec(`
|
|
|
53
53
|
UNIQUE(user_id, key)
|
|
54
54
|
);
|
|
55
55
|
|
|
56
|
+
CREATE TABLE IF NOT EXISTS user_two_factor (
|
|
57
|
+
user_id INTEGER PRIMARY KEY,
|
|
58
|
+
secret TEXT,
|
|
59
|
+
pending_secret TEXT,
|
|
60
|
+
enabled INTEGER DEFAULT 0,
|
|
61
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
62
|
+
enabled_at TEXT,
|
|
63
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
64
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
CREATE TABLE IF NOT EXISTS user_recovery_codes (
|
|
68
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
69
|
+
user_id INTEGER NOT NULL,
|
|
70
|
+
code_hash TEXT NOT NULL,
|
|
71
|
+
used_at TEXT,
|
|
72
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
73
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
CREATE TABLE IF NOT EXISTS user_sessions (
|
|
77
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
78
|
+
user_id INTEGER NOT NULL,
|
|
79
|
+
session_hash TEXT UNIQUE NOT NULL,
|
|
80
|
+
ip_address TEXT,
|
|
81
|
+
user_agent TEXT,
|
|
82
|
+
location_label TEXT,
|
|
83
|
+
location_json TEXT DEFAULT '{}',
|
|
84
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
85
|
+
last_seen_at TEXT DEFAULT (datetime('now')),
|
|
86
|
+
expires_at TEXT,
|
|
87
|
+
revoked_at TEXT,
|
|
88
|
+
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
89
|
+
);
|
|
90
|
+
|
|
56
91
|
CREATE TABLE IF NOT EXISTS agent_runs (
|
|
57
92
|
id TEXT PRIMARY KEY,
|
|
58
93
|
user_id INTEGER NOT NULL,
|
|
@@ -270,6 +305,8 @@ db.exec(`
|
|
|
270
305
|
CREATE INDEX IF NOT EXISTS idx_agent_runs_status ON agent_runs(status);
|
|
271
306
|
CREATE INDEX IF NOT EXISTS idx_agent_steps_run ON agent_steps(run_id, step_index);
|
|
272
307
|
CREATE INDEX IF NOT EXISTS idx_agents_user ON agents(user_id, status, updated_at DESC);
|
|
308
|
+
CREATE INDEX IF NOT EXISTS idx_user_recovery_codes_user ON user_recovery_codes(user_id, used_at);
|
|
309
|
+
CREATE INDEX IF NOT EXISTS idx_user_sessions_user ON user_sessions(user_id, revoked_at, last_seen_at DESC);
|
|
273
310
|
CREATE INDEX IF NOT EXISTS idx_integration_oauth_states_state ON integration_oauth_states(state);
|
|
274
311
|
CREATE INDEX IF NOT EXISTS idx_integration_oauth_states_expires ON integration_oauth_states(expires_at);
|
|
275
312
|
CREATE INDEX IF NOT EXISTS idx_browser_extension_pairing_status ON browser_extension_pairing_requests(status, expires_at);
|
package/server/http/routes.js
CHANGED
|
@@ -7,6 +7,7 @@ const { getRuntimeValidation } = require('../services/runtime/validation');
|
|
|
7
7
|
|
|
8
8
|
const routeRegistry = [
|
|
9
9
|
{ basePath: null, modulePath: '../routes/auth' },
|
|
10
|
+
{ basePath: '/api/account', modulePath: '../routes/account' },
|
|
10
11
|
{ basePath: '/api/settings', modulePath: '../routes/settings' },
|
|
11
12
|
{ basePath: '/api/agent-profiles', modulePath: '../routes/agent_profiles' },
|
|
12
13
|
{ basePath: '/api/agents', modulePath: '../routes/agents' },
|
|
@@ -24943,6 +24943,69 @@ process_runner
|
|
|
24943
24943
|
Copyright 2020 The Flutter Authors. All rights reserved.
|
|
24944
24944
|
Use of this source code is governed by a BSD-style license that can be
|
|
24945
24945
|
found in the LICENSE file.
|
|
24946
|
+
--------------------------------------------------------------------------------
|
|
24947
|
+
qr
|
|
24948
|
+
|
|
24949
|
+
Copyright 2014, the Dart QR project authors. All rights reserved.
|
|
24950
|
+
Redistribution and use in source and binary forms, with or without
|
|
24951
|
+
modification, are permitted provided that the following conditions are
|
|
24952
|
+
met:
|
|
24953
|
+
|
|
24954
|
+
* Redistributions of source code must retain the above copyright
|
|
24955
|
+
notice, this list of conditions and the following disclaimer.
|
|
24956
|
+
* Redistributions in binary form must reproduce the above
|
|
24957
|
+
copyright notice, this list of conditions and the following
|
|
24958
|
+
disclaimer in the documentation and/or other materials provided
|
|
24959
|
+
with the distribution.
|
|
24960
|
+
* Neither the name of Google Inc. nor the names of its
|
|
24961
|
+
contributors may be used to endorse or promote products derived
|
|
24962
|
+
from this software without specific prior written permission.
|
|
24963
|
+
|
|
24964
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
24965
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
24966
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
24967
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
24968
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24969
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
24970
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
24971
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
24972
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
24973
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
24974
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
24975
|
+
|
|
24976
|
+
--------------------------------------------------------------------------------
|
|
24977
|
+
qr_flutter
|
|
24978
|
+
|
|
24979
|
+
BSD 3-Clause License
|
|
24980
|
+
|
|
24981
|
+
Copyright (c) 2020, Luke Freeman.
|
|
24982
|
+
All rights reserved.
|
|
24983
|
+
|
|
24984
|
+
Redistribution and use in source and binary forms, with or without
|
|
24985
|
+
modification, are permitted provided that the following conditions are met:
|
|
24986
|
+
|
|
24987
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
24988
|
+
list of conditions and the following disclaimer.
|
|
24989
|
+
|
|
24990
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
24991
|
+
this list of conditions and the following disclaimer in the documentation
|
|
24992
|
+
and/or other materials provided with the distribution.
|
|
24993
|
+
|
|
24994
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
24995
|
+
contributors may be used to endorse or promote products derived from
|
|
24996
|
+
this software without specific prior written permission.
|
|
24997
|
+
|
|
24998
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
24999
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
25000
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
25001
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
25002
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25003
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25004
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
25005
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
25006
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
25007
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
25008
|
+
|
|
24946
25009
|
--------------------------------------------------------------------------------
|
|
24947
25010
|
rapidjson
|
|
24948
25011
|
|
|
Binary file
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"425cfb54d01a9472b3e81d9e76fd63a4a44cfb
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "2050277533" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|