neoagent 3.2.1-beta.1 → 3.2.1-beta.3

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 (144) hide show
  1. package/extensions/chrome-browser/background.mjs +318 -88
  2. package/extensions/chrome-browser/http.mjs +136 -0
  3. package/extensions/chrome-browser/protocol.mjs +511 -89
  4. package/flutter_app/lib/main_chat.dart +118 -739
  5. package/flutter_app/lib/main_controller.dart +29 -20
  6. package/flutter_app/lib/main_models.dart +3 -0
  7. package/flutter_app/lib/main_operations.dart +334 -321
  8. package/flutter_app/lib/main_settings.dart +4 -3
  9. package/flutter_app/lib/main_shared.dart +14 -11
  10. package/flutter_app/lib/src/desktop_companion_actions.dart +185 -31
  11. package/flutter_app/lib/src/desktop_companion_io.dart +319 -86
  12. package/flutter_app/windows/runner/flutter_window.cpp +143 -32
  13. package/lib/manager.js +106 -89
  14. package/lib/schema_migrations.js +67 -13
  15. package/package.json +20 -13
  16. package/runtime/paths.js +49 -5
  17. package/server/guest_agent.js +52 -30
  18. package/server/http/middleware.js +24 -0
  19. package/server/http/routes.js +4 -6
  20. package/server/public/.last_build_id +1 -1
  21. package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
  22. package/server/public/flutter_bootstrap.js +1 -1
  23. package/server/public/main.dart.js +30803 -30805
  24. package/server/routes/admin.js +1 -1
  25. package/server/routes/android.js +30 -34
  26. package/server/routes/browser.js +23 -15
  27. package/server/routes/desktop.js +18 -1
  28. package/server/routes/integrations.js +5 -1
  29. package/server/routes/memory.js +1 -0
  30. package/server/routes/settings.js +16 -5
  31. package/server/routes/social_reach.js +12 -3
  32. package/server/routes/social_video.js +4 -0
  33. package/server/services/ai/compaction.js +7 -2
  34. package/server/services/ai/history.js +44 -5
  35. package/server/services/ai/integrated_tools/http_request.js +8 -0
  36. package/server/services/ai/loop/agent_engine_core.js +358 -162
  37. package/server/services/ai/loop/callbacks.js +1 -0
  38. package/server/services/ai/loop/completion_judge.js +12 -0
  39. package/server/services/ai/loop/conversation_loop.js +348 -242
  40. package/server/services/ai/loop/messaging_delivery.js +129 -57
  41. package/server/services/ai/loop/model_call_guard.js +91 -0
  42. package/server/services/ai/loop/model_io.js +20 -45
  43. package/server/services/ai/loop/tool_dispatch.js +19 -8
  44. package/server/services/ai/loopPolicy.js +24 -19
  45. package/server/services/ai/model_discovery.js +227 -0
  46. package/server/services/ai/model_identity.js +71 -0
  47. package/server/services/ai/models.js +67 -162
  48. package/server/services/ai/providerRetry.js +17 -59
  49. package/server/services/ai/provider_selector.js +111 -0
  50. package/server/services/ai/providers/anthropic.js +2 -2
  51. package/server/services/ai/providers/claudeCode.js +21 -33
  52. package/server/services/ai/providers/githubCopilot.js +41 -20
  53. package/server/services/ai/providers/google.js +23 -5
  54. package/server/services/ai/providers/grok.js +4 -3
  55. package/server/services/ai/providers/grokOauth.js +19 -27
  56. package/server/services/ai/providers/nvidia.js +10 -5
  57. package/server/services/ai/providers/ollama.js +111 -84
  58. package/server/services/ai/providers/ollama_stream.js +142 -0
  59. package/server/services/ai/providers/openai.js +39 -5
  60. package/server/services/ai/providers/openaiCodex.js +11 -4
  61. package/server/services/ai/providers/openrouter.js +29 -7
  62. package/server/services/ai/providers/provider_error.js +36 -0
  63. package/server/services/ai/settings.js +26 -2
  64. package/server/services/ai/taskAnalysis.js +5 -1
  65. package/server/services/ai/terminal_reply.js +45 -0
  66. package/server/services/ai/toolEvidence.js +58 -29
  67. package/server/services/ai/tools.js +124 -111
  68. package/server/services/android/controller.js +770 -237
  69. package/server/services/android/process.js +140 -0
  70. package/server/services/android/sdk_download.js +143 -0
  71. package/server/services/android/uia.js +6 -5
  72. package/server/services/artifacts/store.js +24 -0
  73. package/server/services/browser/controller.js +736 -385
  74. package/server/services/browser/extension/gateway.js +40 -16
  75. package/server/services/browser/extension/protocol.js +12 -1
  76. package/server/services/browser/extension/provider.js +59 -47
  77. package/server/services/browser/extension/registry.js +155 -34
  78. package/server/services/cli/executor.js +62 -9
  79. package/server/services/desktop/gateway.js +41 -4
  80. package/server/services/desktop/protocol.js +3 -0
  81. package/server/services/desktop/provider.js +39 -42
  82. package/server/services/desktop/registry.js +137 -52
  83. package/server/services/integrations/figma/provider.js +78 -12
  84. package/server/services/integrations/github/common.js +11 -6
  85. package/server/services/integrations/github/provider.js +52 -53
  86. package/server/services/integrations/google/provider.js +55 -19
  87. package/server/services/integrations/home_assistant/network.js +17 -20
  88. package/server/services/integrations/home_assistant/provider.js +7 -5
  89. package/server/services/integrations/home_assistant/tools.js +17 -5
  90. package/server/services/integrations/http.js +51 -0
  91. package/server/services/integrations/manager.js +158 -53
  92. package/server/services/integrations/microsoft/provider.js +80 -13
  93. package/server/services/integrations/neoarchive/provider.js +55 -29
  94. package/server/services/integrations/neorecall/client.js +17 -10
  95. package/server/services/integrations/neorecall/provider.js +20 -11
  96. package/server/services/integrations/notion/provider.js +16 -13
  97. package/server/services/integrations/oauth_provider.js +115 -51
  98. package/server/services/integrations/slack/provider.js +98 -9
  99. package/server/services/integrations/spotify/provider.js +67 -71
  100. package/server/services/integrations/trello/provider.js +21 -7
  101. package/server/services/integrations/weather/provider.js +18 -12
  102. package/server/services/integrations/whatsapp/provider.js +76 -16
  103. package/server/services/manager.js +87 -1
  104. package/server/services/memory/embedding_index.js +20 -8
  105. package/server/services/memory/embeddings.js +151 -90
  106. package/server/services/memory/ingestion.js +50 -9
  107. package/server/services/memory/ingestion_documents.js +13 -3
  108. package/server/services/memory/manager.js +52 -19
  109. package/server/services/messaging/automation.js +84 -9
  110. package/server/services/messaging/http_platforms.js +33 -13
  111. package/server/services/messaging/inbound_queue.js +78 -24
  112. package/server/services/messaging/inbound_store.js +224 -0
  113. package/server/services/messaging/manager.js +326 -51
  114. package/server/services/messaging/typing_keepalive.js +5 -2
  115. package/server/services/network/http.js +210 -0
  116. package/server/services/network/safe_request.js +307 -0
  117. package/server/services/runtime/backends/local-vm.js +214 -66
  118. package/server/services/runtime/manager.js +17 -12
  119. package/server/services/social_reach/channels/github.js +10 -4
  120. package/server/services/social_reach/channels/reddit.js +4 -4
  121. package/server/services/social_reach/channels/rss.js +2 -2
  122. package/server/services/social_reach/channels/social_video.js +12 -7
  123. package/server/services/social_reach/channels/v2ex.js +21 -8
  124. package/server/services/social_reach/channels/x.js +2 -2
  125. package/server/services/social_reach/channels/xueqiu.js +5 -5
  126. package/server/services/social_reach/service.js +9 -6
  127. package/server/services/social_reach/utils.js +65 -14
  128. package/server/services/social_video/service.js +160 -50
  129. package/server/services/tasks/integration_runtime.js +18 -8
  130. package/server/services/tasks/runtime.js +39 -4
  131. package/server/services/voice/agentBridge.js +17 -4
  132. package/server/services/voice/bufferedLiveRelayAdapter.js +5 -0
  133. package/server/services/voice/liveSession.js +31 -0
  134. package/server/services/voice/openaiSpeech.js +33 -8
  135. package/server/services/voice/providers.js +233 -151
  136. package/server/services/voice/runtimeManager.js +118 -20
  137. package/server/services/voice/turnRunner.js +6 -0
  138. package/server/services/wearable/firmware_manifest.js +51 -13
  139. package/server/services/wearable/service.js +1 -0
  140. package/server/utils/abort.js +96 -0
  141. package/server/utils/cloud-security.js +110 -3
  142. package/server/utils/files.js +31 -0
  143. package/server/utils/image_payload.js +95 -0
  144. package/server/utils/retry.js +107 -0
@@ -5950,11 +5950,13 @@ class NeoAgentController extends ChangeNotifier {
5950
5950
  List<String> get enabledModelIds {
5951
5951
  final raw = settings['enabled_models'];
5952
5952
  if (raw is List) {
5953
- final knownIds = supportedModels.map((model) => model.id).toSet();
5954
- final filtered = raw
5955
- .map((item) => item.toString())
5956
- .where((id) => knownIds.contains(id))
5957
- .toList();
5953
+ final filtered = <String>[];
5954
+ for (final item in raw) {
5955
+ final model = _modelForValue(item.toString(), supportedModels);
5956
+ if (model != null && !filtered.contains(model.id)) {
5957
+ filtered.add(model.id);
5958
+ }
5959
+ }
5958
5960
  if (filtered.isNotEmpty) {
5959
5961
  return filtered;
5960
5962
  }
@@ -5965,18 +5967,30 @@ class NeoAgentController extends ChangeNotifier {
5965
5967
  .toList();
5966
5968
  }
5967
5969
 
5968
- String get defaultChatModel =>
5969
- settings['default_chat_model']?.toString() ?? 'auto';
5970
+ String get defaultChatModel => _ensureModelValue(
5971
+ settings['default_chat_model']?.toString() ?? 'auto',
5972
+ supportedModels,
5973
+ allowAuto: true,
5974
+ );
5970
5975
 
5971
- String get defaultSubagentModel =>
5972
- settings['default_subagent_model']?.toString() ?? 'auto';
5976
+ String get defaultSubagentModel => _ensureModelValue(
5977
+ settings['default_subagent_model']?.toString() ?? 'auto',
5978
+ supportedModels,
5979
+ allowAuto: true,
5980
+ );
5973
5981
 
5974
- String get defaultSpeechModel =>
5975
- settings['default_speech_model']?.toString() ?? 'auto';
5982
+ String get defaultSpeechModel => _ensureModelValue(
5983
+ settings['default_speech_model']?.toString() ?? 'auto',
5984
+ supportedModels,
5985
+ allowAuto: true,
5986
+ );
5976
5987
 
5977
- String get fallbackModel =>
5978
- settings['fallback_model_id']?.toString() ??
5979
- _firstAvailableModelId(supportedModels);
5988
+ String get fallbackModel => _ensureModelValue(
5989
+ settings['fallback_model_id']?.toString() ??
5990
+ _firstAvailableModelId(supportedModels),
5991
+ supportedModels,
5992
+ allowAuto: false,
5993
+ );
5980
5994
 
5981
5995
  String get voiceSttProvider =>
5982
5996
  _settingString('voice_stt_provider', 'openai', lowercase: true);
@@ -6117,12 +6131,7 @@ class NeoAgentController extends ChangeNotifier {
6117
6131
  }
6118
6132
 
6119
6133
  ModelMeta? _modelById(String id) {
6120
- for (final model in supportedModels) {
6121
- if (model.id == id) {
6122
- return model;
6123
- }
6124
- }
6125
- return null;
6134
+ return _modelForValue(id, supportedModels);
6126
6135
  }
6127
6136
 
6128
6137
  void _ensureUpdatePolling() {
@@ -1852,6 +1852,7 @@ class AgentProfile {
1852
1852
  class ModelMeta {
1853
1853
  const ModelMeta({
1854
1854
  required this.id,
1855
+ required this.modelId,
1855
1856
  required this.label,
1856
1857
  required this.provider,
1857
1858
  required this.purpose,
@@ -1864,6 +1865,7 @@ class ModelMeta {
1864
1865
  factory ModelMeta.fromJson(Map<dynamic, dynamic> json) {
1865
1866
  return ModelMeta(
1866
1867
  id: json['id']?.toString() ?? '',
1868
+ modelId: json['modelId']?.toString() ?? json['id']?.toString() ?? '',
1867
1869
  label: json['label']?.toString() ?? '',
1868
1870
  provider: json['provider']?.toString() ?? '',
1869
1871
  purpose: json['purpose']?.toString() ?? '',
@@ -1875,6 +1877,7 @@ class ModelMeta {
1875
1877
  }
1876
1878
 
1877
1879
  final String id;
1880
+ final String modelId;
1878
1881
  final String label;
1879
1882
  final String provider;
1880
1883
  final String purpose;