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
package/server/routes/account.js
CHANGED
|
@@ -328,4 +328,57 @@ router.delete('/providers/:id', accountLimiter, (req, res) => {
|
|
|
328
328
|
}
|
|
329
329
|
});
|
|
330
330
|
|
|
331
|
+
// GDPR Art. 20 — data portability. Returns a structured export of the
|
|
332
|
+
// authenticated user's own data (credential columns redacted).
|
|
333
|
+
router.get('/export', accountLimiter, (req, res) => {
|
|
334
|
+
try {
|
|
335
|
+
const { exportUserData } = require('../services/account/erasure');
|
|
336
|
+
const payload = exportUserData(req.session.userId);
|
|
337
|
+
res.setHeader('Content-Type', 'application/json; charset=utf-8');
|
|
338
|
+
res.setHeader(
|
|
339
|
+
'Content-Disposition',
|
|
340
|
+
`attachment; filename="neoagent-data-export-${req.session.userId}.json"`,
|
|
341
|
+
);
|
|
342
|
+
res.send(JSON.stringify(payload, null, 2));
|
|
343
|
+
} catch (err) {
|
|
344
|
+
sendRouteError(res, err);
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
// GDPR Art. 17 — right to erasure. The user permanently deletes their own
|
|
349
|
+
// account and all associated data. Requires typing the exact username as a
|
|
350
|
+
// destructive-action confirmation (works for password and SSO accounts alike).
|
|
351
|
+
router.post('/delete', accountLimiter, (req, res) => {
|
|
352
|
+
try {
|
|
353
|
+
const userId = req.session.userId;
|
|
354
|
+
const user = db
|
|
355
|
+
.prepare('SELECT username FROM users WHERE id = ?')
|
|
356
|
+
.get(userId);
|
|
357
|
+
if (!user) {
|
|
358
|
+
return res.status(404).json({ error: 'Account not found.' });
|
|
359
|
+
}
|
|
360
|
+
const confirm = String(req.body?.confirmUsername || '').trim();
|
|
361
|
+
if (confirm !== user.username) {
|
|
362
|
+
return res.status(400).json({
|
|
363
|
+
error: 'Confirmation does not match your username.',
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
const { eraseUserData } = require('../services/account/erasure');
|
|
368
|
+
const result = eraseUserData(userId, {
|
|
369
|
+
runtimeManager: req.app.locals.runtimeManager,
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
req.session.destroy(() => {
|
|
373
|
+
res.clearCookie('neoagent.sid');
|
|
374
|
+
res.json({ ok: true, tablesCleared: result.tablesCleared });
|
|
375
|
+
});
|
|
376
|
+
} catch (err) {
|
|
377
|
+
if (err.code === 'NOT_FOUND') {
|
|
378
|
+
return res.status(404).json({ error: 'Account not found.' });
|
|
379
|
+
}
|
|
380
|
+
sendRouteError(res, err);
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
|
|
331
384
|
module.exports = router;
|