neoagent 3.0.1-beta.2 → 3.0.1-beta.21
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 +19 -0
- package/README.md +20 -3
- package/docs/benchmarking.md +102 -0
- package/docs/billing.md +224 -0
- package/docs/configuration.md +22 -0
- package/docs/getting-started.md +10 -8
- package/docs/index.md +1 -0
- package/docs/operations.md +1 -1
- package/flutter_app/lib/main.dart +4 -1
- package/flutter_app/lib/main_account_settings.dart +138 -0
- package/flutter_app/lib/main_app_shell.dart +316 -0
- package/flutter_app/lib/main_billing.dart +1465 -0
- package/flutter_app/lib/main_chat.dart +1594 -224
- package/flutter_app/lib/main_controller.dart +263 -26
- package/flutter_app/lib/main_devices.dart +1 -1
- package/flutter_app/lib/main_install.dart +1147 -0
- package/flutter_app/lib/main_navigation.dart +12 -0
- package/flutter_app/lib/main_operations.dart +134 -9
- package/flutter_app/lib/main_settings.dart +148 -52
- package/flutter_app/lib/main_shared.dart +1 -0
- package/flutter_app/lib/src/backend_client.dart +86 -1
- package/landing/index.html +2 -2
- package/lib/manager.js +184 -66
- package/lib/schema_migrations.js +84 -0
- package/package.json +10 -4
- package/server/admin/access.js +12 -7
- package/server/admin/admin.css +78 -0
- package/server/admin/admin.js +511 -23
- package/server/admin/billing.js +415 -0
- package/server/admin/index.html +120 -13
- package/server/admin/users.js +15 -15
- package/server/db/database.js +13 -21
- package/server/db/sessions_db.js +8 -0
- package/server/http/middleware.js +4 -4
- package/server/http/routes.js +9 -0
- package/server/http/static.js +4 -2
- package/server/middleware/requireBilling.js +12 -0
- package/server/public/.last_build_id +1 -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 +89347 -85449
- package/server/routes/account.js +53 -0
- package/server/routes/admin.js +515 -63
- package/server/routes/agents.js +203 -21
- package/server/routes/billing.js +127 -0
- package/server/routes/billing_webhook.js +43 -0
- package/server/routes/memory.js +1 -4
- package/server/routes/settings.js +1 -2
- package/server/routes/skills.js +1 -1
- package/server/routes/triggers.js +2 -2
- package/server/services/account/erasure.js +263 -0
- package/server/services/account/sessions.js +1 -9
- package/server/services/ai/loop/agent_engine_core.js +42 -0
- package/server/services/ai/loop/blank_recovery.js +36 -0
- package/server/services/ai/loop/completion_judge.js +42 -0
- package/server/services/ai/loop/conversation_loop.js +248 -34
- package/server/services/ai/loop/progress_monitor.js +6 -6
- package/server/services/ai/loopPolicy.js +37 -44
- package/server/services/ai/messagingFallback.js +25 -1
- package/server/services/ai/models.js +18 -0
- package/server/services/ai/preModelCompaction.js +25 -5
- package/server/services/ai/rate_limits.js +28 -4
- package/server/services/ai/systemPrompt.js +23 -5
- package/server/services/ai/taskAnalysis.js +2 -0
- package/server/services/ai/tools.js +231 -20
- package/server/services/android/controller.js +6 -2
- package/server/services/billing/billing_email.js +106 -0
- package/server/services/billing/config.js +17 -0
- package/server/services/billing/plans.js +121 -0
- package/server/services/billing/stripe_client.js +21 -0
- package/server/services/billing/subscriptions.js +462 -0
- package/server/services/billing/trial_guard.js +111 -0
- package/server/services/browser/contentExtractor.js +629 -0
- package/server/services/browser/controller.js +4 -8
- package/server/services/desktop/gateway.js +7 -4
- package/server/services/integrations/google/calendar.js +30 -2
- package/server/services/integrations/secrets.js +7 -4
- package/server/services/manager.js +11 -0
- package/server/services/messaging/automation.js +1 -1
- package/server/services/messaging/telnyx.js +12 -11
- package/server/services/messaging/whatsapp.js +1 -1
- package/server/services/recordings/manager.js +13 -7
- package/server/services/runtime/backends/local-vm.js +40 -22
- package/server/services/runtime/docker-vm-manager.js +157 -266
- package/server/services/runtime/guest_bootstrap.js +17 -5
- package/server/services/runtime/guest_image.js +182 -0
- package/server/services/runtime/manager.js +0 -1
- package/server/services/runtime/validation.js +3 -8
- package/server/services/tasks/runtime.js +103 -15
- package/server/services/tasks/schedule_utils.js +5 -5
- package/server/services/voice/runtimeManager.js +19 -10
- package/server/services/wearable/gateway.js +8 -5
- package/server/services/websocket.js +26 -8
- package/server/services/workspace/manager.js +37 -3
|
@@ -71,11 +71,45 @@ class WorkspaceManager {
|
|
|
71
71
|
return toolRoot;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
_normalizeWorkspacePath(root, candidatePath) {
|
|
75
|
+
const rawPath = String(candidatePath || '').trim();
|
|
76
|
+
if (!rawPath) return '.';
|
|
77
|
+
if (rawPath === '/workspace') return root;
|
|
78
|
+
if (rawPath.startsWith('/workspace/')) {
|
|
79
|
+
return path.join(root, rawPath.slice('/workspace/'.length));
|
|
80
|
+
}
|
|
81
|
+
if (path.isAbsolute(rawPath)) {
|
|
82
|
+
const legacyRelativePath = this._mapLegacyAbsolutePath(rawPath);
|
|
83
|
+
if (legacyRelativePath) {
|
|
84
|
+
return path.join(root, legacyRelativePath);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return rawPath;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
_mapLegacyAbsolutePath(rawPath) {
|
|
91
|
+
const legacyMarkers = [
|
|
92
|
+
'/.neoagent/agent-data/workspaces/',
|
|
93
|
+
'/.neoagent/',
|
|
94
|
+
'/workspace/',
|
|
95
|
+
];
|
|
96
|
+
for (const marker of legacyMarkers) {
|
|
97
|
+
const index = rawPath.indexOf(marker);
|
|
98
|
+
if (index === -1) continue;
|
|
99
|
+
const relativePath = rawPath.slice(index + marker.length).replace(/^\/+/, '');
|
|
100
|
+
if (relativePath) {
|
|
101
|
+
return relativePath;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
|
|
74
107
|
resolvePath(userId, candidatePath, label = 'path') {
|
|
75
108
|
const root = this._ensureWorkspaceRootSync(userId);
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
109
|
+
const normalizedPath = this._normalizeWorkspacePath(root, candidatePath);
|
|
110
|
+
const absolute = path.isAbsolute(normalizedPath)
|
|
111
|
+
? path.resolve(normalizedPath)
|
|
112
|
+
: path.resolve(root, normalizedPath || '.');
|
|
79
113
|
const relative = path.relative(root, absolute);
|
|
80
114
|
if (relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
81
115
|
throw new Error(`${label} is outside the per-user workspace.`);
|