neoagent 2.3.1-beta.11 → 2.3.1-beta.110

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 (390) hide show
  1. package/.env.example +53 -5
  2. package/README.md +16 -7
  3. package/com.neoagent.plist +1 -1
  4. package/docs/automation.md +82 -41
  5. package/docs/capabilities.md +85 -89
  6. package/docs/configuration.md +87 -94
  7. package/docs/getting-started.md +46 -27
  8. package/docs/hardware.md +1 -1
  9. package/docs/index.md +24 -30
  10. package/docs/integrations.md +46 -64
  11. package/docs/migration.md +41 -146
  12. package/docs/operations.md +23 -20
  13. package/docs/skills.md +20 -20
  14. package/docs/why-neoagent.md +15 -13
  15. package/extensions/chrome-browser/background.mjs +10 -2
  16. package/flutter_app/.metadata +42 -0
  17. package/flutter_app/DESIGN_SYSTEM.md +166 -0
  18. package/flutter_app/README.md +21 -0
  19. package/flutter_app/analysis_options.yaml +32 -0
  20. package/flutter_app/android/app/build.gradle.kts +111 -0
  21. package/flutter_app/android/app/src/debug/AndroidManifest.xml +7 -0
  22. package/flutter_app/android/app/src/main/AndroidManifest.xml +185 -0
  23. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/MainActivity.kt +888 -0
  24. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/auto/NeoAgentCarAppService.kt +114 -0
  25. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthConnectGateway.kt +280 -0
  26. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncNotifications.kt +113 -0
  27. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncPayload.kt +57 -0
  28. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncScheduler.kt +78 -0
  29. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncWorker.kt +253 -0
  30. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/PermissionsRationaleActivity.kt +46 -0
  31. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingBootReceiver.kt +21 -0
  32. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingForegroundService.kt +586 -0
  33. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingStateStore.kt +78 -0
  34. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingUploadClient.kt +104 -0
  35. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/telecom/NeoAgentConnection.kt +118 -0
  36. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/telecom/NeoAgentConnectionService.kt +86 -0
  37. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiHomeWidgetProvider.kt +457 -0
  38. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiWidgetStore.kt +194 -0
  39. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/VoiceLaunchWidgetProvider.kt +67 -0
  40. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetConfigActivity.kt +228 -0
  41. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncScheduler.kt +72 -0
  42. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncWorker.kt +186 -0
  43. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetTaskRunWorker.kt +210 -0
  44. package/flutter_app/android/app/src/main/res/drawable/launch_background.xml +12 -0
  45. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_bg.xml +11 -0
  46. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_task_bg.xml +8 -0
  47. package/flutter_app/android/app/src/main/res/drawable-v21/launch_background.xml +12 -0
  48. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget.xml +138 -0
  49. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget_task_row.xml +52 -0
  50. package/flutter_app/android/app/src/main/res/layout/neoagent_voice_widget.xml +49 -0
  51. package/flutter_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  52. package/flutter_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  53. package/flutter_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  54. package/flutter_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  55. package/flutter_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  56. package/flutter_app/android/app/src/main/res/values/arrays.xml +8 -0
  57. package/flutter_app/android/app/src/main/res/values/strings.xml +12 -0
  58. package/flutter_app/android/app/src/main/res/values/styles.xml +18 -0
  59. package/flutter_app/android/app/src/main/res/values-night/styles.xml +18 -0
  60. package/flutter_app/android/app/src/main/res/xml/automotive_app_desc.xml +4 -0
  61. package/flutter_app/android/app/src/main/res/xml/file_paths.xml +6 -0
  62. package/flutter_app/android/app/src/main/res/xml/neoagent_ai_widget_info.xml +12 -0
  63. package/flutter_app/android/app/src/main/res/xml/neoagent_voice_widget_info.xml +12 -0
  64. package/flutter_app/android/app/src/profile/AndroidManifest.xml +7 -0
  65. package/flutter_app/android/build.gradle.kts +24 -0
  66. package/flutter_app/android/ci-release.keystore +0 -0
  67. package/flutter_app/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  68. package/flutter_app/android/gradle.properties +3 -0
  69. package/flutter_app/android/key.properties +4 -0
  70. package/flutter_app/android/settings.gradle.kts +26 -0
  71. package/flutter_app/assets/branding/app_icon_1024.png +0 -0
  72. package/flutter_app/assets/branding/app_icon_128.png +0 -0
  73. package/flutter_app/assets/branding/app_icon_192.png +0 -0
  74. package/flutter_app/assets/branding/app_icon_256.png +0 -0
  75. package/flutter_app/assets/branding/app_icon_32.png +0 -0
  76. package/flutter_app/assets/branding/app_icon_512.png +0 -0
  77. package/flutter_app/assets/branding/app_icon_64.png +0 -0
  78. package/flutter_app/assets/branding/onboarding_intro.mp4 +0 -0
  79. package/flutter_app/assets/branding/tray_icon_template.png +0 -0
  80. package/flutter_app/lib/features/location/location_service.dart +117 -0
  81. package/flutter_app/lib/features/notifications/notification_interceptor.dart +73 -0
  82. package/flutter_app/lib/features/onboarding/onboarding_chrome.dart +571 -0
  83. package/flutter_app/lib/features/onboarding/onboarding_messaging_step.dart +275 -0
  84. package/flutter_app/lib/features/onboarding/onboarding_model_step.dart +366 -0
  85. package/flutter_app/lib/features/onboarding/onboarding_shell.dart +57 -0
  86. package/flutter_app/lib/features/onboarding/onboarding_video_step.dart +218 -0
  87. package/flutter_app/lib/features/onboarding/onboarding_welcome_step.dart +46 -0
  88. package/flutter_app/lib/main.dart +107 -0
  89. package/flutter_app/lib/main_account_settings.dart +1340 -0
  90. package/flutter_app/lib/main_admin.dart +900 -0
  91. package/flutter_app/lib/main_app_shell.dart +2162 -0
  92. package/flutter_app/lib/main_chat.dart +3902 -0
  93. package/flutter_app/lib/main_controller.dart +7229 -0
  94. package/flutter_app/lib/main_devices.dart +1738 -0
  95. package/flutter_app/lib/main_integrations.dart +917 -0
  96. package/flutter_app/lib/main_launcher.dart +959 -0
  97. package/flutter_app/lib/main_launcher_entry.dart +5 -0
  98. package/flutter_app/lib/main_models.dart +3807 -0
  99. package/flutter_app/lib/main_navigation.dart +206 -0
  100. package/flutter_app/lib/main_operations.dart +5249 -0
  101. package/flutter_app/lib/main_recordings.dart +920 -0
  102. package/flutter_app/lib/main_runtime.dart +869 -0
  103. package/flutter_app/lib/main_settings.dart +2288 -0
  104. package/flutter_app/lib/main_shared.dart +3393 -0
  105. package/flutter_app/lib/main_spacing.dart +33 -0
  106. package/flutter_app/lib/main_theme.dart +276 -0
  107. package/flutter_app/lib/main_unified.dart +388 -0
  108. package/flutter_app/lib/main_voice_assistant.dart +957 -0
  109. package/flutter_app/lib/src/analytics_service.dart +294 -0
  110. package/flutter_app/lib/src/android_apk_drop_zone.dart +32 -0
  111. package/flutter_app/lib/src/android_apk_drop_zone_stub.dart +16 -0
  112. package/flutter_app/lib/src/android_apk_drop_zone_web.dart +348 -0
  113. package/flutter_app/lib/src/android_app_installer.dart +22 -0
  114. package/flutter_app/lib/src/android_app_installer_io.dart +122 -0
  115. package/flutter_app/lib/src/android_app_installer_stub.dart +21 -0
  116. package/flutter_app/lib/src/android_auto_bridge.dart +59 -0
  117. package/flutter_app/lib/src/android_launcher_bridge.dart +239 -0
  118. package/flutter_app/lib/src/app_launch_bridge.dart +58 -0
  119. package/flutter_app/lib/src/app_release_updater.dart +511 -0
  120. package/flutter_app/lib/src/backend_client.dart +1870 -0
  121. package/flutter_app/lib/src/desktop_companion.dart +2 -0
  122. package/flutter_app/lib/src/desktop_companion_actions.dart +586 -0
  123. package/flutter_app/lib/src/desktop_companion_io.dart +538 -0
  124. package/flutter_app/lib/src/desktop_companion_stub.dart +59 -0
  125. package/flutter_app/lib/src/desktop_native_bridge.dart +91 -0
  126. package/flutter_app/lib/src/desktop_screen_capture.dart +21 -0
  127. package/flutter_app/lib/src/desktop_screen_capture_io.dart +142 -0
  128. package/flutter_app/lib/src/desktop_screen_capture_stub.dart +12 -0
  129. package/flutter_app/lib/src/diagnostics_logger.dart +119 -0
  130. package/flutter_app/lib/src/health_bridge.dart +136 -0
  131. package/flutter_app/lib/src/live_voice_capture.dart +85 -0
  132. package/flutter_app/lib/src/messaging_access_summary.dart +46 -0
  133. package/flutter_app/lib/src/network/app_http_client.dart +53 -0
  134. package/flutter_app/lib/src/network/app_http_client_factory.dart +6 -0
  135. package/flutter_app/lib/src/network/app_http_client_io.dart +138 -0
  136. package/flutter_app/lib/src/network/app_http_client_stub.dart +3 -0
  137. package/flutter_app/lib/src/network/app_http_client_web.dart +94 -0
  138. package/flutter_app/lib/src/oauth_launcher.dart +33 -0
  139. package/flutter_app/lib/src/oauth_launcher_io.dart +95 -0
  140. package/flutter_app/lib/src/oauth_launcher_stub.dart +33 -0
  141. package/flutter_app/lib/src/oauth_launcher_web.dart +107 -0
  142. package/flutter_app/lib/src/recording_bridge.dart +232 -0
  143. package/flutter_app/lib/src/recording_bridge_io.dart +1019 -0
  144. package/flutter_app/lib/src/recording_bridge_stub.dart +120 -0
  145. package/flutter_app/lib/src/recording_bridge_web.dart +689 -0
  146. package/flutter_app/lib/src/recording_payloads.dart +86 -0
  147. package/flutter_app/lib/src/theme/palette.dart +81 -0
  148. package/flutter_app/lib/src/web_app_update_monitor.dart +17 -0
  149. package/flutter_app/lib/src/web_app_update_monitor_stub.dart +24 -0
  150. package/flutter_app/lib/src/web_app_update_monitor_web.dart +123 -0
  151. package/flutter_app/lib/src/widget_bridge.dart +49 -0
  152. package/flutter_app/linux/CMakeLists.txt +128 -0
  153. package/flutter_app/linux/flutter/CMakeLists.txt +88 -0
  154. package/flutter_app/linux/flutter/generated_plugin_registrant.cc +47 -0
  155. package/flutter_app/linux/flutter/generated_plugin_registrant.h +15 -0
  156. package/flutter_app/linux/flutter/generated_plugins.cmake +32 -0
  157. package/flutter_app/linux/runner/CMakeLists.txt +26 -0
  158. package/flutter_app/linux/runner/main.cc +6 -0
  159. package/flutter_app/linux/runner/my_application.cc +144 -0
  160. package/flutter_app/linux/runner/my_application.h +18 -0
  161. package/flutter_app/linux/runner/resources/app_icon.png +0 -0
  162. package/flutter_app/macos/Flutter/Flutter-Debug.xcconfig +2 -0
  163. package/flutter_app/macos/Flutter/Flutter-Release.xcconfig +2 -0
  164. package/flutter_app/macos/Flutter/GeneratedPluginRegistrant.swift +48 -0
  165. package/flutter_app/macos/Podfile +42 -0
  166. package/flutter_app/macos/Podfile.lock +87 -0
  167. package/flutter_app/macos/Runner/AppDelegate.swift +576 -0
  168. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
  169. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
  170. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
  171. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
  172. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
  173. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
  174. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
  175. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
  176. package/flutter_app/macos/Runner/Base.lproj/MainMenu.xib +342 -0
  177. package/flutter_app/macos/Runner/Configs/AppInfo.xcconfig +14 -0
  178. package/flutter_app/macos/Runner/Configs/Debug.xcconfig +2 -0
  179. package/flutter_app/macos/Runner/Configs/Release.xcconfig +2 -0
  180. package/flutter_app/macos/Runner/Configs/Warnings.xcconfig +13 -0
  181. package/flutter_app/macos/Runner/DebugProfile.entitlements +16 -0
  182. package/flutter_app/macos/Runner/Info.plist +36 -0
  183. package/flutter_app/macos/Runner/MainFlutterWindow.swift +19 -0
  184. package/flutter_app/macos/Runner/Release.entitlements +12 -0
  185. package/flutter_app/macos/Runner.xcodeproj/project.pbxproj +801 -0
  186. package/flutter_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  187. package/flutter_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +99 -0
  188. package/flutter_app/macos/Runner.xcworkspace/contents.xcworkspacedata +10 -0
  189. package/flutter_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  190. package/flutter_app/macos/RunnerTests/RunnerTests.swift +12 -0
  191. package/flutter_app/patch_strings.py +12 -0
  192. package/flutter_app/pubspec.lock +1256 -0
  193. package/flutter_app/pubspec.yaml +59 -0
  194. package/flutter_app/third_party/desktop_audio_capture/LICENSE +21 -0
  195. package/flutter_app/third_party/desktop_audio_capture/README.md +262 -0
  196. package/flutter_app/third_party/desktop_audio_capture/lib/audio_capture.dart +65 -0
  197. package/flutter_app/third_party/desktop_audio_capture/lib/config/mic_audio_config.dart +153 -0
  198. package/flutter_app/third_party/desktop_audio_capture/lib/config/system_adudio_config.dart +110 -0
  199. package/flutter_app/third_party/desktop_audio_capture/lib/mic/mic_audio_capture.dart +461 -0
  200. package/flutter_app/third_party/desktop_audio_capture/lib/model/audio_status.dart +91 -0
  201. package/flutter_app/third_party/desktop_audio_capture/lib/model/decibel_data.dart +106 -0
  202. package/flutter_app/third_party/desktop_audio_capture/lib/model/input_device_type.dart +219 -0
  203. package/flutter_app/third_party/desktop_audio_capture/lib/system/system_audio_capture.dart +336 -0
  204. package/flutter_app/third_party/desktop_audio_capture/linux/CMakeLists.txt +101 -0
  205. package/flutter_app/third_party/desktop_audio_capture/linux/audio_capture_plugin.cc +692 -0
  206. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/audio_capture_plugin.h +35 -0
  207. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/mic_capture_plugin.h +36 -0
  208. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/audio_capture_plugin.h +32 -0
  209. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/mic_capture_plugin.h +32 -0
  210. package/flutter_app/third_party/desktop_audio_capture/linux/mic_capture_plugin.cc +878 -0
  211. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/AudioCapturePlugin.swift +27 -0
  212. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/MicCapturePlugin.swift +1172 -0
  213. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/SystemCapturePlugin.swift +655 -0
  214. package/flutter_app/third_party/desktop_audio_capture/macos/Resources/PrivacyInfo.xcprivacy +12 -0
  215. package/flutter_app/third_party/desktop_audio_capture/macos/desktop_audio_capture.podspec +30 -0
  216. package/flutter_app/third_party/desktop_audio_capture/pubspec.yaml +87 -0
  217. package/flutter_app/third_party/desktop_audio_capture/windows/CMakeLists.txt +105 -0
  218. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.cpp +80 -0
  219. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.h +31 -0
  220. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin_c_api.cpp +12 -0
  221. package/flutter_app/third_party/desktop_audio_capture/windows/include/audio_capture/audio_capture_plugin_c_api.h +23 -0
  222. package/flutter_app/third_party/desktop_audio_capture/windows/include/desktop_audio_capture/audio_capture_plugin.h +25 -0
  223. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.cpp +1117 -0
  224. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.h +115 -0
  225. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.cpp +777 -0
  226. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.h +87 -0
  227. package/flutter_app/third_party/flutter_secure_storage_linux/linux/CMakeLists.txt +30 -0
  228. package/flutter_app/third_party/flutter_secure_storage_linux/linux/flutter_secure_storage_linux_plugin.cc +215 -0
  229. package/flutter_app/third_party/flutter_secure_storage_linux/linux/include/flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h +27 -0
  230. package/flutter_app/third_party/flutter_secure_storage_linux/pubspec.yaml +20 -0
  231. package/flutter_app/tool/generate_desktop_branding.py +219 -0
  232. package/flutter_app/web/favicon.png +0 -0
  233. package/flutter_app/web/favicon.svg +12 -0
  234. package/flutter_app/web/icons/Icon-192.png +0 -0
  235. package/flutter_app/web/icons/Icon-512.png +0 -0
  236. package/flutter_app/web/icons/Icon-maskable-192.png +0 -0
  237. package/flutter_app/web/icons/Icon-maskable-512.png +0 -0
  238. package/flutter_app/web/index.html +39 -0
  239. package/flutter_app/web/manifest.json +35 -0
  240. package/flutter_app/windows/CMakeLists.txt +108 -0
  241. package/flutter_app/windows/flutter/CMakeLists.txt +109 -0
  242. package/flutter_app/windows/flutter/generated_plugin_registrant.cc +50 -0
  243. package/flutter_app/windows/flutter/generated_plugin_registrant.h +15 -0
  244. package/flutter_app/windows/flutter/generated_plugins.cmake +36 -0
  245. package/flutter_app/windows/runner/CMakeLists.txt +41 -0
  246. package/flutter_app/windows/runner/Runner.rc +121 -0
  247. package/flutter_app/windows/runner/flutter_window.cpp +533 -0
  248. package/flutter_app/windows/runner/flutter_window.h +37 -0
  249. package/flutter_app/windows/runner/main.cpp +53 -0
  250. package/flutter_app/windows/runner/resource.h +16 -0
  251. package/flutter_app/windows/runner/resources/app_icon.ico +0 -0
  252. package/flutter_app/windows/runner/runner.exe.manifest +14 -0
  253. package/flutter_app/windows/runner/utils.cpp +65 -0
  254. package/flutter_app/windows/runner/utils.h +19 -0
  255. package/flutter_app/windows/runner/win32_window.cpp +299 -0
  256. package/flutter_app/windows/runner/win32_window.h +102 -0
  257. package/lib/install_helpers.js +31 -0
  258. package/lib/manager.js +578 -122
  259. package/package.json +10 -3
  260. package/runtime/paths.js +137 -0
  261. package/server/config/analytics.js +30 -0
  262. package/server/db/database.js +296 -22
  263. package/server/guest-agent.android.package.json +13 -0
  264. package/server/guest-agent.browser.package.json +14 -0
  265. package/server/guest_agent.js +98 -52
  266. package/server/http/middleware.js +5 -2
  267. package/server/http/routes.js +3 -0
  268. package/server/http/static.js +41 -1
  269. package/server/index.js +15 -16
  270. package/server/public/.last_build_id +1 -1
  271. package/server/public/assets/AssetManifest.bin +1 -1
  272. package/server/public/assets/AssetManifest.bin.json +1 -1
  273. package/server/public/assets/AssetManifest.json +1 -1
  274. package/server/public/assets/NOTICES +644 -155
  275. package/server/public/assets/assets/branding/onboarding_intro.mp4 +0 -0
  276. package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
  277. package/server/public/assets/packages/mixpanel_flutter/assets/mixpanel.js +3 -0
  278. package/server/public/canvaskit/wimp.wasm +0 -0
  279. package/server/public/flutter_bootstrap.js +2 -2
  280. package/server/public/main.dart.js +96067 -88139
  281. package/server/routes/account.js +26 -1
  282. package/server/routes/agents.js +6 -2
  283. package/server/routes/android.js +22 -6
  284. package/server/routes/auth.js +25 -5
  285. package/server/routes/browser.js +47 -13
  286. package/server/routes/integrations.js +22 -1
  287. package/server/routes/memory.js +168 -6
  288. package/server/routes/runtime.js +14 -0
  289. package/server/routes/settings.js +102 -24
  290. package/server/routes/skills.js +12 -0
  291. package/server/routes/social_video.js +66 -0
  292. package/server/routes/tasks.js +22 -2
  293. package/server/routes/triggers.js +44 -35
  294. package/server/routes/wearable.js +67 -0
  295. package/server/routes/widgets.js +4 -4
  296. package/server/services/ai/capabilityHealth.js +23 -51
  297. package/server/services/ai/compaction.js +1 -1
  298. package/server/services/ai/deliverables/artifact_helpers.js +190 -0
  299. package/server/services/ai/deliverables/contracts.js +113 -0
  300. package/server/services/ai/deliverables/index.js +20 -0
  301. package/server/services/ai/deliverables/selector.js +94 -0
  302. package/server/services/ai/deliverables/validator.js +63 -0
  303. package/server/services/ai/deliverables/workflows.js +207 -0
  304. package/server/services/ai/engine.js +363 -27
  305. package/server/services/ai/hooks.js +127 -0
  306. package/server/services/ai/integrated_tools/index.js +98 -0
  307. package/server/services/ai/integrated_tools/remotion.js +373 -0
  308. package/server/services/ai/integrated_tools/shared.js +204 -0
  309. package/server/services/ai/integrated_tools/slidev.js +207 -0
  310. package/server/services/ai/loopPolicy.js +146 -0
  311. package/server/services/ai/models.js +31 -4
  312. package/server/services/ai/providers/claudeCode.js +49 -0
  313. package/server/services/ai/providers/openai.js +2 -1
  314. package/server/services/ai/providers/openaiCodex.js +422 -15
  315. package/server/services/ai/recordingInsights.js +11 -13
  316. package/server/services/ai/runEvents.js +100 -0
  317. package/server/services/ai/settings.js +12 -2
  318. package/server/services/ai/systemPrompt.js +15 -1
  319. package/server/services/ai/taskAnalysis.js +2 -0
  320. package/server/services/ai/toolResult.js +20 -0
  321. package/server/services/ai/toolRunner.js +46 -6
  322. package/server/services/ai/toolSelector.js +54 -1
  323. package/server/services/ai/tools.js +210 -116
  324. package/server/services/android/android_bootstrap_worker.js +63 -0
  325. package/server/services/android/controller.js +442 -1760
  326. package/server/services/bootstrap_helpers.js +0 -34
  327. package/server/services/browser/controller.js +279 -49
  328. package/server/services/cli/executor.js +40 -1
  329. package/server/services/desktop/screenRecorder.js +65 -9
  330. package/server/services/integrations/figma/provider.js +1 -0
  331. package/server/services/integrations/github/provider.js +3 -3
  332. package/server/services/integrations/google/provider.js +1 -0
  333. package/server/services/integrations/manager.js +25 -5
  334. package/server/services/integrations/microsoft/provider.js +1 -0
  335. package/server/services/integrations/oauth_provider.js +15 -5
  336. package/server/services/integrations/provider_config_store.js +22 -13
  337. package/server/services/integrations/registry.js +2 -4
  338. package/server/services/integrations/spotify/provider.js +1 -0
  339. package/server/services/integrations/trello/provider.js +842 -0
  340. package/server/services/manager.js +88 -155
  341. package/server/services/mcp/client.js +120 -23
  342. package/server/services/memory/llm_transfer.js +218 -0
  343. package/server/services/memory/manager.js +260 -33
  344. package/server/services/messaging/access_policy.js +10 -0
  345. package/server/services/messaging/automation.js +1 -1
  346. package/server/services/messaging/manager.js +64 -1
  347. package/server/services/messaging/meshtastic.js +277 -0
  348. package/server/services/messaging/meshtastic_env.js +40 -0
  349. package/server/services/messaging/meshtastic_protocol.js +530 -0
  350. package/server/services/messaging/meshtastic_tcp_transport.js +25 -0
  351. package/server/services/runtime/backends/local-vm.js +221 -158
  352. package/server/services/runtime/docker-vm-manager.js +392 -0
  353. package/server/services/runtime/guest_bootstrap.js +654 -0
  354. package/server/services/runtime/manager.js +85 -29
  355. package/server/services/runtime/settings.js +22 -31
  356. package/server/services/runtime/validation.js +16 -31
  357. package/server/services/social_video/adapters/base.js +26 -0
  358. package/server/services/social_video/adapters/index.js +27 -0
  359. package/server/services/social_video/adapters/instagram.js +17 -0
  360. package/server/services/social_video/adapters/tiktok.js +17 -0
  361. package/server/services/social_video/adapters/x.js +17 -0
  362. package/server/services/social_video/adapters/youtube.js +17 -0
  363. package/server/services/social_video/captions.js +187 -0
  364. package/server/services/social_video/frame.js +42 -0
  365. package/server/services/social_video/index.js +7 -0
  366. package/server/services/social_video/metadata.js +63 -0
  367. package/server/services/social_video/result.js +63 -0
  368. package/server/services/social_video/service.js +720 -0
  369. package/server/services/social_video/url.js +83 -0
  370. package/server/services/tasks/integration_runtime.js +1 -1
  371. package/server/services/tasks/runtime.js +1 -1
  372. package/server/services/tasks/task_repository.js +3 -6
  373. package/server/services/voice/openaiSpeech.js +6 -1
  374. package/server/services/voice/providers.js +142 -14
  375. package/server/services/voice/runtime.js +8 -8
  376. package/server/services/voice/runtimeManager.js +156 -19
  377. package/server/services/voice/turnRunner.js +29 -9
  378. package/server/services/wearable/firmware_manifest.js +353 -0
  379. package/server/services/wearable/gateway.js +350 -0
  380. package/server/services/wearable/protocol.js +45 -0
  381. package/server/services/wearable/service.js +240 -0
  382. package/server/services/websocket.js +3 -1
  383. package/server/services/widgets/focus_widget.js +137 -0
  384. package/server/services/widgets/service.js +133 -2
  385. package/server/services/workspace/manager.js +301 -0
  386. package/server/utils/deployment.js +16 -9
  387. package/server/services/integrations/home_assistant/provider.js +0 -630
  388. package/server/services/messaging/access_policy.test.js +0 -228
  389. package/server/services/runtime/backends/host.js +0 -37
  390. package/server/services/runtime/qemu.js +0 -391
@@ -0,0 +1,166 @@
1
+ # NeoAgent Design System
2
+
3
+ Reference for UI/UX conventions across the Flutter workspace. When adding new screens or widgets, use the tokens and patterns documented here rather than raw values.
4
+
5
+ ---
6
+
7
+ ## Tokens
8
+
9
+ ### Spacing — `AppSpacing` (main_spacing.dart)
10
+
11
+ | Token | Value | Use |
12
+ |-------|-------|-----|
13
+ | `AppSpacing.xs` | 8px | Tight internal gaps, icon-to-label |
14
+ | `AppSpacing.sm` | 12px | Component internal padding |
15
+ | `AppSpacing.md` | 16px | Standard padding, list item spacing |
16
+ | `AppSpacing.lg` | 24px | Section gaps |
17
+ | `AppSpacing.xl` | 32px | Screen-level margins |
18
+
19
+ Page-level horizontal padding is handled by `_pagePadding(context)` (20–40px responsive). Do not hardcode page margins.
20
+
21
+ ### Border Radius — `AppRadius` (main_spacing.dart)
22
+
23
+ | Token | Value | Use |
24
+ |-------|-------|-----|
25
+ | `AppRadius.tag` | 8px | Code blocks, chips, inline badges |
26
+ | `AppRadius.card` | 14px | Secondary cards, list items, blockquotes |
27
+ | `AppRadius.input` | 18px | Buttons, text fields (matches theme) |
28
+ | `AppRadius.panel` | 28px | Major glass surfaces, primary cards (matches theme) |
29
+ | `AppRadius.pill` | 999px | Avatars, full-pill badges, status indicators |
30
+
31
+ ### Typography — `main_theme.dart`
32
+
33
+ | Function | Size | Weight | Use |
34
+ |----------|------|--------|-----|
35
+ | `_displayTitleStyle(size)` | 28px default | w700 | Section headers, page titles |
36
+ | `_heroTitleStyle(size)` | 24px default | w800 | Stats, empty-state headlines, splash copy |
37
+ | `_sectionEyebrowStyle()` | 12px | w700 | Category labels above sections |
38
+ | Theme `titleMedium` | 18px | w600 | App bar titles, panel headers |
39
+ | Theme `bodyMedium` | — | — | Body text (always prefer theme over `TextStyle()`) |
40
+
41
+ **Rules:**
42
+ - Minimum font size: **12px**. Never go below this for legibility.
43
+ - Use `Theme.of(context).textTheme.bodyMedium?.copyWith(color: ...)` instead of bare `TextStyle(color: ...)` to guarantee font-family inheritance.
44
+ - Defined weights: **w600** (sub-labels), **w700** (standard bold), **w800** (hero/display). Do not use w400, w500, or w900.
45
+
46
+ ---
47
+
48
+ ## Color System
49
+
50
+ Colors are defined in `src/theme/palette.dart` and accessed via theme-aware getters in `main_theme.dart`.
51
+
52
+ ### Background layers (darkest → lightest prominence)
53
+
54
+ ```
55
+ _bgPrimary → _bgSecondary → _bgTertiary → _bgCard
56
+ ```
57
+
58
+ ### Text hierarchy
59
+
60
+ ```
61
+ _textPrimary (readable body) → _textSecondary (supporting) → _textMuted (subtle, disabled)
62
+ ```
63
+
64
+ ### Accents
65
+
66
+ - `_accent` — gold/brown, primary interactive elements
67
+ - `_accentHover` — lighter gold, hover/focus states
68
+ - `_accentAlt` — teal, secondary highlights, assistant avatar glow
69
+ - `_accentMuted` — low-saturation accent for backgrounds
70
+
71
+ ### Semantic status colors
72
+
73
+ | Color | Meaning | Never use for |
74
+ |-------|---------|---------------|
75
+ | `_success` | Completed, connected, healthy | General decoration |
76
+ | `_warning` | In-progress, caution | Errors |
77
+ | `_danger` | Error, destructive action, disconnected | Warnings |
78
+ | `_info` | Informational, neutral status | Alerts requiring action |
79
+
80
+ ### Hardcoded color rules
81
+
82
+ - **Do not** use `Color(0x...)` or `Colors.X` literals in widget trees. Use palette getters.
83
+ - **Exception 1:** `Color(0xFF4285F4)` — Google Sign-In brand blue, required by Google branding guidelines.
84
+ - **Exception 2:** `_qrPanel*` constants in `main_app_shell.dart` — intentional deep-space atmosphere for the QR login panel, defined as named constants at file scope.
85
+ - `Colors.transparent` and `Colors.white/black` with `.withValues(alpha:)` for glass overlays are acceptable when no semantic color applies.
86
+
87
+ ---
88
+
89
+ ## Component Patterns
90
+
91
+ ### Glass surface
92
+
93
+ Use `_GlassSurface` from `main_shared.dart`. Do not duplicate the backdrop-blur + fill + border pattern inline.
94
+
95
+ Parameters: `child`, `borderRadius` (default `AppRadius.panel`), `padding`.
96
+
97
+ ### Inline status messages
98
+
99
+ - Errors → `_InlineError(message: '...')` from `main_shared.dart`
100
+ - Success → `_InlineSuccess(message: '...')` from `main_shared.dart`
101
+
102
+ Do not inline `Container(color: _danger...)` patterns — use these shared widgets so error styling stays consistent.
103
+
104
+ ### Empty states
105
+
106
+ Pattern: eyebrow label → icon → headline (`_heroTitleStyle`) → helper text (`_textSecondary`).
107
+
108
+ ### Dialogs
109
+
110
+ - Confirm/cancel: **Cancel** (outlined, left) + **primary action** (filled, right)
111
+ - Destructive: **Cancel** (left) + **Delete** (filled with `_danger` background, right)
112
+ - Avoid "OK" — always use a specific verb (Save, Connect, Remove, etc.)
113
+
114
+ ### Buttons
115
+
116
+ - **Primary action:** `FilledButton`
117
+ - **Secondary/cancel:** `OutlinedButton`
118
+ - **Tertiary/nav links:** `TextButton`
119
+ - **Icon-only actions:** `IconButton` — always include `tooltip:` with a descriptive label
120
+
121
+ ---
122
+
123
+ ## Accessibility
124
+
125
+ - Every `IconButton` must have `tooltip: 'Descriptive action'`.
126
+ - Prefer `InkWell` over `GestureDetector` for tappable surfaces — `InkWell` inherits Material semantics. If you must use `GestureDetector`, wrap it with `Semantics(button: true, label: '...')`.
127
+ - Minimum touch target: 44×44px (Material guideline). Use `minimumSize` on `ButtonStyle` or `IconButton.styleFrom` if needed.
128
+ - Do not rely on color alone to convey state — pair color with an icon or label.
129
+
130
+ ---
131
+
132
+ ## Animation
133
+
134
+ | Animation | Duration | Curve |
135
+ |-----------|----------|-------|
136
+ | Page entrance (slide + fade) | 700ms | `Curves.easeOutCubic` |
137
+ | Button / container hover | 180ms | `Curves.easeOutCubic` |
138
+ | Ambient background orbs | 24 000ms | `Curves.easeInOut` (looping) |
139
+ | Opacity fades | 140–180ms | default |
140
+
141
+ ---
142
+
143
+ ## Responsive layout
144
+
145
+ | Breakpoint | Value | Layout change |
146
+ |------------|-------|---------------|
147
+ | `AppBreakpoints.mobile` | 480px | Sidebar becomes modal, single-column |
148
+ | `AppBreakpoints.tablet` | 960px | Two-column layouts activate |
149
+ | Desktop implicit | 1280px+ | Full sidebar + main panel |
150
+
151
+ Use `_pagePadding(context)` for horizontal screen padding. Do not hardcode `EdgeInsets.symmetric(horizontal: 20)` — the helper already handles responsive scaling.
152
+
153
+ ---
154
+
155
+ ## File conventions
156
+
157
+ | What | Where |
158
+ |------|-------|
159
+ | Color palette | `lib/src/theme/palette.dart` |
160
+ | Theme builder + text styles | `lib/main_theme.dart` |
161
+ | Spacing + radius tokens | `lib/main_spacing.dart` |
162
+ | Shared widgets | `lib/main_shared.dart` |
163
+ | Navigation enums + labels | `lib/main_navigation.dart` |
164
+ | App state | `lib/main_controller.dart` |
165
+
166
+ **Do not** define new reusable widgets in feature files (`main_chat.dart`, `main_operations.dart`, etc.) — add them to `main_shared.dart` so they are available across the app.
@@ -0,0 +1,21 @@
1
+ # neoagent_flutter
2
+
3
+ A new Flutter project.
4
+
5
+ ## Getting Started
6
+
7
+ This project is a starting point for a Flutter application.
8
+
9
+ A few resources to get you started if this is your first Flutter project:
10
+
11
+ - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
12
+ - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
13
+
14
+ For help getting started with Flutter development, view the
15
+ [online documentation](https://docs.flutter.dev/), which offers tutorials,
16
+ samples, guidance on mobile development, and a full API reference.
17
+
18
+ ## Desktop audio capture note
19
+
20
+ Desktop recording currently depends on `desktop_audio_capture` and is pinned to
21
+ `0.0.2` to avoid unexpected API shifts from automatic minor updates.
@@ -0,0 +1,32 @@
1
+ # This file configures the analyzer, which statically analyzes Dart code to
2
+ # check for errors, warnings, and lints.
3
+ #
4
+ # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5
+ # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6
+ # invoked from the command line by running `flutter analyze`.
7
+
8
+ # The following line activates a set of recommended lints for Flutter apps,
9
+ # packages, and plugins designed to encourage good coding practices.
10
+ include: package:flutter_lints/flutter.yaml
11
+
12
+ analyzer:
13
+ exclude:
14
+ - third_party/**
15
+
16
+ linter:
17
+ # The lint rules applied to this project can be customized in the
18
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
19
+ # included above or to enable additional rules. A list of all available lints
20
+ # and their documentation is published at https://dart.dev/lints.
21
+ #
22
+ # Instead of disabling a lint rule for the entire project in the
23
+ # section below, it can also be suppressed for a single line of code
24
+ # or a specific dart file by using the `// ignore: name_of_lint` and
25
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
26
+ # producing the lint.
27
+ rules:
28
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
29
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
30
+
31
+ # Additional information about this file can be found at
32
+ # https://dart.dev/guides/language/analysis-options
@@ -0,0 +1,111 @@
1
+ import java.util.Properties
2
+
3
+ plugins {
4
+ id("com.android.application")
5
+ id("kotlin-android")
6
+ // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
7
+ id("dev.flutter.flutter-gradle-plugin")
8
+ }
9
+
10
+ val envReleaseKeystorePath = System.getenv("ANDROID_KEYSTORE_PATH")?.trim().orEmpty()
11
+ val envReleaseKeystorePassword = System.getenv("ANDROID_KEYSTORE_PASSWORD")?.trim().orEmpty()
12
+ val envReleaseKeyAlias = System.getenv("ANDROID_KEY_ALIAS")?.trim().orEmpty()
13
+ val envReleaseKeyPassword = System.getenv("ANDROID_KEY_PASSWORD")?.trim().orEmpty()
14
+ val keyPropertiesFile = rootProject.file("key.properties")
15
+ val keyProperties = Properties()
16
+ if (keyPropertiesFile.exists()) {
17
+ keyPropertiesFile.inputStream().use(keyProperties::load)
18
+ }
19
+ val repoReleaseKeystorePath = keyProperties.getProperty("storeFile", "").trim()
20
+ val repoReleaseKeystorePassword = keyProperties.getProperty("storePassword", "").trim()
21
+ val repoReleaseKeyAlias = keyProperties.getProperty("keyAlias", "").trim()
22
+ val repoReleaseKeyPassword = keyProperties.getProperty("keyPassword", "").trim()
23
+ val hasEnvReleaseSigning =
24
+ envReleaseKeystorePath.isNotEmpty() &&
25
+ envReleaseKeystorePassword.isNotEmpty() &&
26
+ envReleaseKeyAlias.isNotEmpty() &&
27
+ envReleaseKeyPassword.isNotEmpty()
28
+ val hasRepoReleaseSigning =
29
+ repoReleaseKeystorePath.isNotEmpty() &&
30
+ repoReleaseKeystorePassword.isNotEmpty() &&
31
+ repoReleaseKeyAlias.isNotEmpty() &&
32
+ repoReleaseKeyPassword.isNotEmpty()
33
+ val launcherBuild =
34
+ System.getenv("NEOAGENT_ANDROID_LAUNCHER_MODE")
35
+ ?.trim()
36
+ ?.lowercase() in setOf("1", "true", "yes", "on")
37
+ val applicationIdValue =
38
+ if (launcherBuild) "com.neoagent.flutter_app.launcher" else "com.neoagent.flutter_app"
39
+ val applicationLabelValue = if (launcherBuild) "NeoAgent Launcher" else "NeoAgent"
40
+ val androidAppModeValue = if (launcherBuild) "launcher" else "standard"
41
+ val launcherHomeEnabledValue = launcherBuild.toString()
42
+
43
+ android {
44
+ namespace = "com.neoagent.flutter_app"
45
+ compileSdk = flutter.compileSdkVersion
46
+ ndkVersion = flutter.ndkVersion
47
+
48
+ compileOptions {
49
+ sourceCompatibility = JavaVersion.VERSION_11
50
+ targetCompatibility = JavaVersion.VERSION_11
51
+ }
52
+
53
+ kotlinOptions {
54
+ jvmTarget = JavaVersion.VERSION_11.toString()
55
+ }
56
+
57
+ defaultConfig {
58
+ applicationId = applicationIdValue
59
+ minSdk = 26
60
+ targetSdk = flutter.targetSdkVersion
61
+ versionCode = flutter.versionCode
62
+ versionName = flutter.versionName
63
+ manifestPlaceholders["neoagentAppLabel"] = applicationLabelValue
64
+ manifestPlaceholders["neoagentAppMode"] = androidAppModeValue
65
+ manifestPlaceholders["neoagentLauncherHomeEnabled"] =
66
+ launcherHomeEnabledValue
67
+ }
68
+
69
+ signingConfigs {
70
+ if (hasEnvReleaseSigning) {
71
+ create("release") {
72
+ storeFile = file(envReleaseKeystorePath)
73
+ storePassword = envReleaseKeystorePassword
74
+ keyAlias = envReleaseKeyAlias
75
+ keyPassword = envReleaseKeyPassword
76
+ }
77
+ } else if (hasRepoReleaseSigning) {
78
+ create("release") {
79
+ storeFile = rootProject.file(repoReleaseKeystorePath)
80
+ storePassword = repoReleaseKeystorePassword
81
+ keyAlias = repoReleaseKeyAlias
82
+ keyPassword = repoReleaseKeyPassword
83
+ }
84
+ }
85
+ }
86
+
87
+ buildTypes {
88
+ release {
89
+ signingConfig =
90
+ if (hasEnvReleaseSigning || hasRepoReleaseSigning) {
91
+ signingConfigs.getByName("release")
92
+ } else {
93
+ signingConfigs.getByName("debug")
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ dependencies {
100
+ implementation("androidx.activity:activity-ktx:1.10.1")
101
+ implementation("androidx.car.app:app:1.7.0")
102
+ implementation("androidx.car.app:app-projected:1.7.0")
103
+ implementation("androidx.health.connect:connect-client:1.1.0")
104
+ implementation("androidx.security:security-crypto:1.1.0")
105
+ implementation("androidx.work:work-runtime-ktx:2.10.1")
106
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0")
107
+ }
108
+
109
+ flutter {
110
+ source = "../.."
111
+ }
@@ -0,0 +1,7 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ <!-- The INTERNET permission is required for development. Specifically,
3
+ the Flutter tool needs it to communicate with the running application
4
+ to allow setting breakpoints, to provide hot reload, etc.
5
+ -->
6
+ <uses-permission android:name="android.permission.INTERNET"/>
7
+ </manifest>
@@ -0,0 +1,185 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ xmlns:tools="http://schemas.android.com/tools">
3
+ <uses-permission android:name="android.permission.INTERNET" />
4
+ <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
5
+ <uses-permission android:name="android.permission.CAMERA" />
6
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
7
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
8
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
9
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
10
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
11
+ <uses-permission android:name="android.permission.health.READ_STEPS" />
12
+ <uses-permission android:name="android.permission.health.READ_HEART_RATE" />
13
+ <uses-permission android:name="android.permission.health.READ_SLEEP" />
14
+ <uses-permission android:name="android.permission.health.READ_EXERCISE" />
15
+ <uses-permission android:name="android.permission.health.READ_WEIGHT" />
16
+ <uses-permission android:name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" />
17
+ <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
18
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
19
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
20
+ <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
21
+
22
+ <queries>
23
+ <package android:name="com.google.android.apps.healthdata" />
24
+ <intent>
25
+ <action android:name="android.intent.action.PROCESS_TEXT"/>
26
+ <data android:mimeType="text/plain"/>
27
+ </intent>
28
+ </queries>
29
+
30
+ <application
31
+ android:label="${neoagentAppLabel}"
32
+ android:name="${applicationName}"
33
+ android:icon="@mipmap/ic_launcher"
34
+ android:usesCleartextTraffic="true">
35
+ <meta-data
36
+ android:name="com.google.android.gms.car.application"
37
+ android:resource="@xml/automotive_app_desc" />
38
+ <activity
39
+ android:name=".MainActivity"
40
+ android:exported="true"
41
+ android:launchMode="singleTop"
42
+ android:taskAffinity=""
43
+ android:theme="@style/LaunchTheme"
44
+ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
45
+ android:hardwareAccelerated="true"
46
+ android:windowSoftInputMode="adjustResize">
47
+ <!-- Specifies an Android theme to apply to this Activity as soon as
48
+ the Android process has started. This theme is visible to the user
49
+ while the Flutter UI initializes. After that, this theme continues
50
+ to determine the Window background behind the Flutter UI. -->
51
+ <meta-data
52
+ android:name="io.flutter.embedding.android.NormalTheme"
53
+ android:resource="@style/NormalTheme"
54
+ />
55
+ <intent-filter>
56
+ <action android:name="android.intent.action.MAIN"/>
57
+ <category android:name="android.intent.category.LAUNCHER"/>
58
+ </intent-filter>
59
+ <intent-filter>
60
+ <action android:name="android.intent.action.SEND" />
61
+ <category android:name="android.intent.category.DEFAULT" />
62
+ <data android:mimeType="text/*" />
63
+ <data android:mimeType="video/*" />
64
+ <data android:mimeType="image/*" />
65
+ <data android:mimeType="audio/*" />
66
+ <data android:mimeType="application/*" />
67
+ </intent-filter>
68
+ <intent-filter>
69
+ <action android:name="android.intent.action.SEND_MULTIPLE" />
70
+ <category android:name="android.intent.category.DEFAULT" />
71
+ <data android:mimeType="*/*" />
72
+ </intent-filter>
73
+ </activity>
74
+ <provider
75
+ android:name="androidx.core.content.FileProvider"
76
+ android:authorities="${applicationId}.fileprovider"
77
+ android:exported="false"
78
+ android:grantUriPermissions="true">
79
+ <meta-data
80
+ android:name="android.support.FILE_PROVIDER_PATHS"
81
+ android:resource="@xml/file_paths" />
82
+ </provider>
83
+ <activity-alias
84
+ android:name=".LauncherHomeAlias"
85
+ android:enabled="${neoagentLauncherHomeEnabled}"
86
+ android:exported="true"
87
+ android:label="${neoagentAppLabel}"
88
+ android:targetActivity=".MainActivity">
89
+ <intent-filter>
90
+ <action android:name="android.intent.action.MAIN" />
91
+ <category android:name="android.intent.category.HOME" />
92
+ <category android:name="android.intent.category.DEFAULT" />
93
+ </intent-filter>
94
+ </activity-alias>
95
+ <activity
96
+ android:name=".health.PermissionsRationaleActivity"
97
+ android:exported="false" />
98
+ <activity
99
+ android:name=".widgets.WidgetConfigActivity"
100
+ android:exported="true"
101
+ android:theme="@style/LaunchTheme" />
102
+ <activity-alias
103
+ android:name=".ViewPermissionUsageActivity"
104
+ android:exported="true"
105
+ android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
106
+ android:targetActivity=".health.PermissionsRationaleActivity">
107
+ <intent-filter>
108
+ <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
109
+ <category android:name="android.intent.category.HEALTH_PERMISSIONS" />
110
+ </intent-filter>
111
+ </activity-alias>
112
+ <service
113
+ android:name="androidx.work.impl.foreground.SystemForegroundService"
114
+ android:foregroundServiceType="dataSync"
115
+ tools:node="merge" />
116
+ <service
117
+ android:name=".telecom.NeoAgentConnectionService"
118
+ android:exported="true"
119
+ android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
120
+ <intent-filter>
121
+ <action android:name="android.telecom.ConnectionService" />
122
+ </intent-filter>
123
+ </service>
124
+
125
+ <service
126
+ android:name=".auto.NeoAgentCarAppService"
127
+ android:exported="true">
128
+ <intent-filter>
129
+ <action android:name="androidx.car.app.CarAppService" />
130
+ <category android:name="androidx.car.app.category.IOT" />
131
+ </intent-filter>
132
+ <meta-data
133
+ android:name="androidx.car.app.minCarApiLevel"
134
+ android:value="1" />
135
+ </service>
136
+ <service
137
+ android:name=".recording.RecordingForegroundService"
138
+ android:exported="false"
139
+ android:foregroundServiceType="microphone|connectedDevice" />
140
+ <receiver
141
+ android:name=".recording.RecordingBootReceiver"
142
+ android:enabled="true"
143
+ android:exported="false">
144
+ <intent-filter>
145
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
146
+ </intent-filter>
147
+ </receiver>
148
+ <receiver
149
+ android:name=".widgets.AiHomeWidgetProvider"
150
+ android:exported="true">
151
+ <intent-filter>
152
+ <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
153
+ </intent-filter>
154
+ <meta-data
155
+ android:name="android.appwidget.provider"
156
+ android:resource="@xml/neoagent_ai_widget_info" />
157
+ </receiver>
158
+ <receiver
159
+ android:name=".widgets.VoiceLaunchWidgetProvider"
160
+ android:exported="true">
161
+ <intent-filter>
162
+ <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
163
+ </intent-filter>
164
+ <meta-data
165
+ android:name="android.appwidget.provider"
166
+ android:resource="@xml/neoagent_voice_widget_info" />
167
+ </receiver>
168
+ <meta-data
169
+ android:name="com.neoagent.APP_MODE"
170
+ android:value="${neoagentAppMode}" />
171
+ <meta-data
172
+ android:name="flutterEmbedding"
173
+ android:value="2" />
174
+
175
+ <!-- Notification Listener Service for Interception -->
176
+ <service android:name="notification.listener.service.NotificationListener"
177
+ android:label="NeoAgent Notifications"
178
+ android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
179
+ android:exported="true">
180
+ <intent-filter>
181
+ <action android:name="android.service.notification.NotificationListenerService" />
182
+ </intent-filter>
183
+ </service>
184
+ </application>
185
+ </manifest>