neoagent 2.2.1-beta.6 → 2.2.1-beta.8

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.
Files changed (68) hide show
  1. package/docs/automation.md +2 -2
  2. package/docs/capabilities.md +7 -10
  3. package/docs/hardware.md +4 -7
  4. package/docs/index.md +7 -7
  5. package/docs/integrations.md +1 -1
  6. package/docs/migration.md +238 -0
  7. package/docs/operations.md +1 -1
  8. package/docs/why-neoagent.md +2 -2
  9. package/lib/manager.js +99 -2
  10. package/lib/migrations.js +409 -0
  11. package/package.json +1 -1
  12. package/server/catalog_sources/store-bundles/skills/productivity/migration/SKILL.md +173 -0
  13. package/server/db/database.js +76 -61
  14. package/server/http/routes.js +1 -2
  15. package/server/public/assets/AssetManifest.json +1 -1
  16. package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
  17. package/server/public/flutter_bootstrap.js +1 -1
  18. package/server/public/main.dart.js +75830 -74189
  19. package/server/routes/auth.js +13 -5
  20. package/server/routes/integrations.js +22 -0
  21. package/server/routes/messaging.js +41 -5
  22. package/server/routes/settings.js +1 -0
  23. package/server/routes/{scheduler.js → tasks.js} +31 -29
  24. package/server/routes/widgets.js +7 -7
  25. package/server/services/ai/capabilityHealth.js +4 -4
  26. package/server/services/ai/engine.js +9 -9
  27. package/server/services/ai/systemPrompt.js +7 -7
  28. package/server/services/ai/taskAnalysis.js +3 -3
  29. package/server/services/ai/toolResult.js +6 -8
  30. package/server/services/ai/tools.js +62 -95
  31. package/server/services/commands/router.js +14 -6
  32. package/server/services/integrations/google/provider.js +20 -2
  33. package/server/services/integrations/manager.js +79 -8
  34. package/server/services/integrations/whatsapp/provider.js +23 -1
  35. package/server/services/manager.js +14 -14
  36. package/server/services/memory/manager.js +7 -7
  37. package/server/services/memory/policy.js +1 -1
  38. package/server/services/messaging/access_policy.js +703 -0
  39. package/server/services/messaging/access_policy.test.js +228 -0
  40. package/server/services/messaging/automation.js +32 -95
  41. package/server/services/messaging/base.js +39 -0
  42. package/server/services/messaging/discord.js +61 -46
  43. package/server/services/messaging/formatting_guides.js +0 -4
  44. package/server/services/messaging/http_platforms.js +178 -15
  45. package/server/services/messaging/manager.js +136 -71
  46. package/server/services/messaging/telegram.js +54 -40
  47. package/server/services/messaging/telnyx.js +43 -14
  48. package/server/services/messaging/whatsapp.js +27 -0
  49. package/server/services/tasks/adapters/gmail_message_received.js +36 -0
  50. package/server/services/tasks/adapters/index.js +10 -0
  51. package/server/services/tasks/adapters/outlook_email_received.js +38 -0
  52. package/server/services/tasks/adapters/schedule.js +57 -0
  53. package/server/services/tasks/adapters/slack_message_received.js +39 -0
  54. package/server/services/tasks/adapters/teams_message_received.js +39 -0
  55. package/server/services/tasks/adapters/whatsapp_personal_message_received.js +42 -0
  56. package/server/services/tasks/integration_runtime.js +260 -0
  57. package/server/services/tasks/runtime.js +539 -0
  58. package/server/services/{scheduler/cron_utils.js → tasks/schedule_utils.js} +2 -0
  59. package/server/services/tasks/security.js +60 -0
  60. package/server/services/tasks/task_repository.js +162 -0
  61. package/server/services/tasks/trigger_registry.js +29 -0
  62. package/server/services/tasks/utils.js +45 -0
  63. package/server/services/websocket.js +1 -1
  64. package/server/services/widgets/service.js +37 -25
  65. package/server/routes/wearable_device.js +0 -147
  66. package/server/services/messaging/waveshare_wearable.js +0 -40
  67. package/server/services/scheduler/cron.js +0 -580
  68. package/server/services/wearables/device_auth.js +0 -228
@@ -897,15 +897,15 @@ class MemoryManager {
897
897
 
898
898
  const queryTokens = tokenizeRecallQuery(query);
899
899
  if (queryTokens.length) {
900
- const recentSchedulerRuns = db.prepare(
900
+ const recentTaskRuns = db.prepare(
901
901
  `SELECT title, final_response, completed_at
902
902
  FROM agent_runs
903
- WHERE user_id = ? AND agent_id = ? AND trigger_source = 'scheduler' AND status = 'completed'
903
+ WHERE user_id = ? AND agent_id = ? AND trigger_source IN ('schedule', 'tasks') AND status = 'completed'
904
904
  ORDER BY completed_at DESC, created_at DESC
905
905
  LIMIT 12`
906
906
  ).all(userId, agentId);
907
907
 
908
- const schedulerMatches = recentSchedulerRuns
908
+ const taskMatches = recentTaskRuns
909
909
  .map((run) => ({
910
910
  ...run,
911
911
  score: scoreSchedulerRunMatch(queryTokens, run.title, run.final_response),
@@ -913,14 +913,14 @@ class MemoryManager {
913
913
  .filter((run) => run.score > 0)
914
914
  .slice(0, 3);
915
915
 
916
- if (schedulerMatches.length) {
917
- const schedulerLines = schedulerMatches.map((run) => {
916
+ if (taskMatches.length) {
917
+ const taskLines = taskMatches.map((run) => {
918
918
  const when = run.completed_at ? String(run.completed_at) : 'unknown time';
919
- const title = String(run.title || 'scheduler task').replace(/\s+/g, ' ').trim();
919
+ const title = String(run.title || 'task').replace(/\s+/g, ' ').trim();
920
920
  const outcome = buildExcerpt(String(run.final_response || ''), query) || String(run.final_response || '').slice(0, 180);
921
921
  return `- ${when}: ${title} -> ${outcome || '(no final response stored)'}`;
922
922
  });
923
- sections.push(`Relevant recent scheduler runs:\n${schedulerLines.join('\n')}`);
923
+ sections.push(`Relevant recent task runs:\n${taskLines.join('\n')}`);
924
924
  }
925
925
  }
926
926
 
@@ -21,7 +21,7 @@ function isTransientOperationalMemory(content) {
21
21
 
22
22
  const lower = text.toLowerCase();
23
23
  const hasRecency = /\b(recent|latest|current|today|tonight|just now|this run|last run)\b/.test(lower);
24
- const hasRunEntity = /\b(scheduler|scheduled task|cron job|agent run|task run|workflow run|job run)\b/.test(lower);
24
+ const hasRunEntity = /\b(task|scheduled run|schedule run|agent run|task run|workflow run|job run)\b/.test(lower);
25
25
  const hasExecutionState = /\b(status|completed|succeeded|failed|errored|finished|started|triggered|executed|ran)\b/.test(lower);
26
26
 
27
27
  if (hasRecency && hasRunEntity && hasExecutionState) {