neoagent 2.3.1-beta.2 → 2.3.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.
Files changed (264) hide show
  1. package/.env.example +39 -0
  2. package/README.md +2 -0
  3. package/docs/capabilities.md +2 -2
  4. package/docs/configuration.md +13 -5
  5. package/docs/integrations.md +4 -1
  6. package/flutter_app/.metadata +42 -0
  7. package/flutter_app/README.md +21 -0
  8. package/flutter_app/analysis_options.yaml +32 -0
  9. package/flutter_app/android/app/build.gradle.kts +109 -0
  10. package/flutter_app/android/app/src/debug/AndroidManifest.xml +7 -0
  11. package/flutter_app/android/app/src/main/AndroidManifest.xml +147 -0
  12. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/MainActivity.kt +747 -0
  13. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthConnectGateway.kt +280 -0
  14. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncNotifications.kt +113 -0
  15. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncPayload.kt +57 -0
  16. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncScheduler.kt +78 -0
  17. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncWorker.kt +253 -0
  18. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/PermissionsRationaleActivity.kt +46 -0
  19. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingBootReceiver.kt +21 -0
  20. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingForegroundService.kt +586 -0
  21. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingStateStore.kt +78 -0
  22. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingUploadClient.kt +104 -0
  23. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiHomeWidgetProvider.kt +457 -0
  24. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiWidgetStore.kt +194 -0
  25. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/VoiceLaunchWidgetProvider.kt +67 -0
  26. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetConfigActivity.kt +228 -0
  27. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncScheduler.kt +72 -0
  28. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncWorker.kt +186 -0
  29. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetTaskRunWorker.kt +210 -0
  30. package/flutter_app/android/app/src/main/res/drawable/launch_background.xml +12 -0
  31. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_bg.xml +11 -0
  32. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_task_bg.xml +8 -0
  33. package/flutter_app/android/app/src/main/res/drawable-v21/launch_background.xml +12 -0
  34. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget.xml +138 -0
  35. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget_task_row.xml +52 -0
  36. package/flutter_app/android/app/src/main/res/layout/neoagent_voice_widget.xml +49 -0
  37. package/flutter_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  38. package/flutter_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  39. package/flutter_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  40. package/flutter_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  41. package/flutter_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  42. package/flutter_app/android/app/src/main/res/values/strings.xml +12 -0
  43. package/flutter_app/android/app/src/main/res/values/styles.xml +18 -0
  44. package/flutter_app/android/app/src/main/res/values-night/styles.xml +18 -0
  45. package/flutter_app/android/app/src/main/res/xml/file_paths.xml +6 -0
  46. package/flutter_app/android/app/src/main/res/xml/neoagent_ai_widget_info.xml +12 -0
  47. package/flutter_app/android/app/src/main/res/xml/neoagent_voice_widget_info.xml +12 -0
  48. package/flutter_app/android/app/src/profile/AndroidManifest.xml +7 -0
  49. package/flutter_app/android/build.gradle.kts +24 -0
  50. package/flutter_app/android/ci-release.keystore +0 -0
  51. package/flutter_app/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  52. package/flutter_app/android/gradle.properties +3 -0
  53. package/flutter_app/android/key.properties +4 -0
  54. package/flutter_app/android/settings.gradle.kts +26 -0
  55. package/flutter_app/assets/branding/app_icon_1024.png +0 -0
  56. package/flutter_app/assets/branding/app_icon_128.png +0 -0
  57. package/flutter_app/assets/branding/app_icon_192.png +0 -0
  58. package/flutter_app/assets/branding/app_icon_256.png +0 -0
  59. package/flutter_app/assets/branding/app_icon_32.png +0 -0
  60. package/flutter_app/assets/branding/app_icon_512.png +0 -0
  61. package/flutter_app/assets/branding/app_icon_64.png +0 -0
  62. package/flutter_app/assets/branding/tray_icon_template.png +0 -0
  63. package/flutter_app/lib/features/location/location_service.dart +119 -0
  64. package/flutter_app/lib/features/notifications/notification_interceptor.dart +97 -0
  65. package/flutter_app/lib/main.dart +23057 -0
  66. package/flutter_app/lib/main_app_shell.dart +1682 -0
  67. package/flutter_app/lib/main_integrations.dart +931 -0
  68. package/flutter_app/lib/main_launcher.dart +959 -0
  69. package/flutter_app/lib/main_launcher_entry.dart +5 -0
  70. package/flutter_app/lib/main_models.dart +3473 -0
  71. package/flutter_app/lib/main_shared.dart +2861 -0
  72. package/flutter_app/lib/main_theme.dart +204 -0
  73. package/flutter_app/lib/main_voice_assistant.dart +831 -0
  74. package/flutter_app/lib/src/android_apk_drop_zone.dart +32 -0
  75. package/flutter_app/lib/src/android_apk_drop_zone_stub.dart +16 -0
  76. package/flutter_app/lib/src/android_apk_drop_zone_web.dart +348 -0
  77. package/flutter_app/lib/src/android_app_installer.dart +22 -0
  78. package/flutter_app/lib/src/android_app_installer_io.dart +122 -0
  79. package/flutter_app/lib/src/android_app_installer_stub.dart +21 -0
  80. package/flutter_app/lib/src/android_launcher_bridge.dart +239 -0
  81. package/flutter_app/lib/src/app_launch_bridge.dart +29 -0
  82. package/flutter_app/lib/src/app_release_updater.dart +511 -0
  83. package/flutter_app/lib/src/backend_client.dart +1833 -0
  84. package/flutter_app/lib/src/desktop_companion.dart +2 -0
  85. package/flutter_app/lib/src/desktop_companion_actions.dart +586 -0
  86. package/flutter_app/lib/src/desktop_companion_io.dart +538 -0
  87. package/flutter_app/lib/src/desktop_companion_stub.dart +59 -0
  88. package/flutter_app/lib/src/desktop_native_bridge.dart +91 -0
  89. package/flutter_app/lib/src/desktop_screen_capture.dart +21 -0
  90. package/flutter_app/lib/src/desktop_screen_capture_io.dart +142 -0
  91. package/flutter_app/lib/src/desktop_screen_capture_stub.dart +12 -0
  92. package/flutter_app/lib/src/diagnostics_logger.dart +119 -0
  93. package/flutter_app/lib/src/health_bridge.dart +136 -0
  94. package/flutter_app/lib/src/live_voice_capture.dart +85 -0
  95. package/flutter_app/lib/src/messaging_access_summary.dart +46 -0
  96. package/flutter_app/lib/src/network/app_http_client.dart +53 -0
  97. package/flutter_app/lib/src/network/app_http_client_factory.dart +6 -0
  98. package/flutter_app/lib/src/network/app_http_client_io.dart +138 -0
  99. package/flutter_app/lib/src/network/app_http_client_stub.dart +3 -0
  100. package/flutter_app/lib/src/network/app_http_client_web.dart +94 -0
  101. package/flutter_app/lib/src/oauth_launcher.dart +33 -0
  102. package/flutter_app/lib/src/oauth_launcher_io.dart +77 -0
  103. package/flutter_app/lib/src/oauth_launcher_stub.dart +33 -0
  104. package/flutter_app/lib/src/oauth_launcher_web.dart +107 -0
  105. package/flutter_app/lib/src/recording_bridge.dart +232 -0
  106. package/flutter_app/lib/src/recording_bridge_io.dart +1019 -0
  107. package/flutter_app/lib/src/recording_bridge_stub.dart +120 -0
  108. package/flutter_app/lib/src/recording_bridge_web.dart +689 -0
  109. package/flutter_app/lib/src/recording_payloads.dart +86 -0
  110. package/flutter_app/lib/src/theme/palette.dart +81 -0
  111. package/flutter_app/lib/src/widget_bridge.dart +49 -0
  112. package/flutter_app/linux/CMakeLists.txt +128 -0
  113. package/flutter_app/linux/flutter/CMakeLists.txt +88 -0
  114. package/flutter_app/linux/flutter/generated_plugin_registrant.cc +43 -0
  115. package/flutter_app/linux/flutter/generated_plugin_registrant.h +15 -0
  116. package/flutter_app/linux/flutter/generated_plugins.cmake +31 -0
  117. package/flutter_app/linux/runner/CMakeLists.txt +26 -0
  118. package/flutter_app/linux/runner/main.cc +6 -0
  119. package/flutter_app/linux/runner/my_application.cc +144 -0
  120. package/flutter_app/linux/runner/my_application.h +18 -0
  121. package/flutter_app/linux/runner/resources/app_icon.png +0 -0
  122. package/flutter_app/macos/Flutter/Flutter-Debug.xcconfig +2 -0
  123. package/flutter_app/macos/Flutter/Flutter-Release.xcconfig +2 -0
  124. package/flutter_app/macos/Flutter/GeneratedPluginRegistrant.swift +40 -0
  125. package/flutter_app/macos/Podfile +42 -0
  126. package/flutter_app/macos/Podfile.lock +87 -0
  127. package/flutter_app/macos/Runner/AppDelegate.swift +576 -0
  128. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
  129. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
  130. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
  131. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
  132. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
  133. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
  134. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
  135. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
  136. package/flutter_app/macos/Runner/Base.lproj/MainMenu.xib +342 -0
  137. package/flutter_app/macos/Runner/Configs/AppInfo.xcconfig +14 -0
  138. package/flutter_app/macos/Runner/Configs/Debug.xcconfig +2 -0
  139. package/flutter_app/macos/Runner/Configs/Release.xcconfig +2 -0
  140. package/flutter_app/macos/Runner/Configs/Warnings.xcconfig +13 -0
  141. package/flutter_app/macos/Runner/DebugProfile.entitlements +16 -0
  142. package/flutter_app/macos/Runner/Info.plist +36 -0
  143. package/flutter_app/macos/Runner/MainFlutterWindow.swift +19 -0
  144. package/flutter_app/macos/Runner/Release.entitlements +12 -0
  145. package/flutter_app/macos/Runner.xcodeproj/project.pbxproj +801 -0
  146. package/flutter_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  147. package/flutter_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +99 -0
  148. package/flutter_app/macos/Runner.xcworkspace/contents.xcworkspacedata +10 -0
  149. package/flutter_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  150. package/flutter_app/macos/RunnerTests/RunnerTests.swift +12 -0
  151. package/flutter_app/patch_strings.py +12 -0
  152. package/flutter_app/pubspec.lock +1088 -0
  153. package/flutter_app/pubspec.yaml +53 -0
  154. package/flutter_app/test/messaging_access_summary_test.dart +22 -0
  155. package/flutter_app/test/recording_payloads_test.dart +53 -0
  156. package/flutter_app/third_party/desktop_audio_capture/LICENSE +21 -0
  157. package/flutter_app/third_party/desktop_audio_capture/README.md +262 -0
  158. package/flutter_app/third_party/desktop_audio_capture/lib/audio_capture.dart +65 -0
  159. package/flutter_app/third_party/desktop_audio_capture/lib/config/mic_audio_config.dart +153 -0
  160. package/flutter_app/third_party/desktop_audio_capture/lib/config/system_adudio_config.dart +110 -0
  161. package/flutter_app/third_party/desktop_audio_capture/lib/mic/mic_audio_capture.dart +461 -0
  162. package/flutter_app/third_party/desktop_audio_capture/lib/model/audio_status.dart +91 -0
  163. package/flutter_app/third_party/desktop_audio_capture/lib/model/decibel_data.dart +106 -0
  164. package/flutter_app/third_party/desktop_audio_capture/lib/model/input_device_type.dart +219 -0
  165. package/flutter_app/third_party/desktop_audio_capture/lib/system/system_audio_capture.dart +336 -0
  166. package/flutter_app/third_party/desktop_audio_capture/linux/CMakeLists.txt +101 -0
  167. package/flutter_app/third_party/desktop_audio_capture/linux/audio_capture_plugin.cc +692 -0
  168. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/audio_capture_plugin.h +35 -0
  169. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/mic_capture_plugin.h +36 -0
  170. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/audio_capture_plugin.h +32 -0
  171. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/mic_capture_plugin.h +32 -0
  172. package/flutter_app/third_party/desktop_audio_capture/linux/mic_capture_plugin.cc +878 -0
  173. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/AudioCapturePlugin.swift +27 -0
  174. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/MicCapturePlugin.swift +1172 -0
  175. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/SystemCapturePlugin.swift +655 -0
  176. package/flutter_app/third_party/desktop_audio_capture/macos/Resources/PrivacyInfo.xcprivacy +12 -0
  177. package/flutter_app/third_party/desktop_audio_capture/macos/desktop_audio_capture.podspec +30 -0
  178. package/flutter_app/third_party/desktop_audio_capture/pubspec.yaml +87 -0
  179. package/flutter_app/third_party/desktop_audio_capture/windows/CMakeLists.txt +105 -0
  180. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.cpp +80 -0
  181. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.h +31 -0
  182. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin_c_api.cpp +12 -0
  183. package/flutter_app/third_party/desktop_audio_capture/windows/include/audio_capture/audio_capture_plugin_c_api.h +23 -0
  184. package/flutter_app/third_party/desktop_audio_capture/windows/include/desktop_audio_capture/audio_capture_plugin.h +25 -0
  185. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.cpp +1117 -0
  186. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.h +115 -0
  187. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.cpp +777 -0
  188. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.h +87 -0
  189. package/flutter_app/third_party/flutter_secure_storage_linux/linux/CMakeLists.txt +30 -0
  190. package/flutter_app/third_party/flutter_secure_storage_linux/linux/flutter_secure_storage_linux_plugin.cc +215 -0
  191. package/flutter_app/third_party/flutter_secure_storage_linux/linux/include/flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h +27 -0
  192. package/flutter_app/third_party/flutter_secure_storage_linux/pubspec.yaml +20 -0
  193. package/flutter_app/tool/generate_desktop_branding.py +219 -0
  194. package/flutter_app/web/favicon.png +0 -0
  195. package/flutter_app/web/favicon.svg +12 -0
  196. package/flutter_app/web/icons/Icon-192.png +0 -0
  197. package/flutter_app/web/icons/Icon-512.png +0 -0
  198. package/flutter_app/web/icons/Icon-maskable-192.png +0 -0
  199. package/flutter_app/web/icons/Icon-maskable-512.png +0 -0
  200. package/flutter_app/web/index.html +39 -0
  201. package/flutter_app/web/manifest.json +35 -0
  202. package/flutter_app/windows/CMakeLists.txt +108 -0
  203. package/flutter_app/windows/flutter/CMakeLists.txt +109 -0
  204. package/flutter_app/windows/flutter/generated_plugin_registrant.cc +47 -0
  205. package/flutter_app/windows/flutter/generated_plugin_registrant.h +15 -0
  206. package/flutter_app/windows/flutter/generated_plugins.cmake +35 -0
  207. package/flutter_app/windows/runner/CMakeLists.txt +41 -0
  208. package/flutter_app/windows/runner/Runner.rc +121 -0
  209. package/flutter_app/windows/runner/flutter_window.cpp +533 -0
  210. package/flutter_app/windows/runner/flutter_window.h +37 -0
  211. package/flutter_app/windows/runner/main.cpp +53 -0
  212. package/flutter_app/windows/runner/resource.h +16 -0
  213. package/flutter_app/windows/runner/resources/app_icon.ico +0 -0
  214. package/flutter_app/windows/runner/runner.exe.manifest +14 -0
  215. package/flutter_app/windows/runner/utils.cpp +65 -0
  216. package/flutter_app/windows/runner/utils.h +19 -0
  217. package/flutter_app/windows/runner/win32_window.cpp +299 -0
  218. package/flutter_app/windows/runner/win32_window.h +102 -0
  219. package/lib/manager.js +231 -7
  220. package/package.json +3 -1
  221. package/server/db/database.js +68 -0
  222. package/server/http/middleware.js +50 -0
  223. package/server/http/routes.js +3 -1
  224. package/server/index.js +1 -0
  225. package/server/public/.last_build_id +1 -1
  226. package/server/public/assets/NOTICES +61 -0
  227. package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
  228. package/server/public/flutter_bootstrap.js +1 -1
  229. package/server/public/main.dart.js +65262 -64422
  230. package/server/routes/integrations.js +86 -0
  231. package/server/routes/memory.js +11 -2
  232. package/server/routes/screenHistory.js +46 -0
  233. package/server/routes/triggers.js +81 -0
  234. package/server/services/ai/models.js +30 -0
  235. package/server/services/ai/providers/githubCopilot.js +97 -0
  236. package/server/services/ai/providers/openai.js +2 -1
  237. package/server/services/ai/providers/openaiCodex.js +31 -0
  238. package/server/services/ai/settings.js +20 -0
  239. package/server/services/ai/systemPrompt.js +1 -1
  240. package/server/services/ai/tools.js +35 -6
  241. package/server/services/browser/controller.js +47 -3
  242. package/server/services/desktop/screenRecorder.js +172 -0
  243. package/server/services/integrations/env.js +5 -0
  244. package/server/services/integrations/github/common.js +106 -0
  245. package/server/services/integrations/github/provider.js +499 -0
  246. package/server/services/integrations/github/repos.js +1124 -0
  247. package/server/services/integrations/home_assistant/provider.js +306 -26
  248. package/server/services/integrations/manager.js +63 -7
  249. package/server/services/integrations/oauth_provider.js +13 -6
  250. package/server/services/integrations/provider_config_store.js +76 -0
  251. package/server/services/integrations/registry.js +4 -0
  252. package/server/services/integrations/trello/provider.js +744 -0
  253. package/server/services/integrations/whatsapp/provider.js +6 -2
  254. package/server/services/manager.js +22 -0
  255. package/server/services/memory/manager.js +39 -2
  256. package/server/services/skills/base_catalog.js +33 -0
  257. package/server/services/tasks/adapters/index.js +1 -0
  258. package/server/services/tasks/adapters/manual.js +12 -0
  259. package/server/services/tasks/runtime.js +1 -1
  260. package/server/services/voice/openaiClient.js +4 -1
  261. package/server/services/voice/providers.js +2 -1
  262. package/server/services/widgets/service.js +49 -4
  263. package/server/utils/local_secrets.js +56 -0
  264. package/server/utils/logger.js +37 -9
@@ -0,0 +1,87 @@
1
+ name: desktop_audio_capture
2
+ description: "Flutter plugin for capturing audio on desktop platforms (macOS, Linux, Windows). Supports microphone and system audio with streaming, decibel monitoring, and device management."
3
+ version: 0.0.2
4
+ homepage: https://github.com/hiuhuyn/desktop_audio_capture
5
+ issue_tracker: https://github.com/hiuhuyn/desktop_audio_capture/issues
6
+ repository: https://github.com/hiuhuyn/desktop_audio_capture
7
+ documentation: https://github.com/hiuhuyn/desktop_audio_capture/blob/main/README.md
8
+
9
+ plugin:
10
+ platforms:
11
+ linux:
12
+ pluginClass: AudioCapturePlugin
13
+ macos:
14
+ pluginClass: AudioCapturePlugin
15
+ windows:
16
+ pluginClass: AudioCapturePlugin
17
+
18
+
19
+
20
+ environment:
21
+ sdk: '>=3.0.0 <4.0.0'
22
+ flutter: '>=3.10.0'
23
+
24
+ dependencies:
25
+ flutter:
26
+ sdk: flutter
27
+ plugin_platform_interface: ^2.0.2
28
+
29
+ dev_dependencies:
30
+ flutter_test:
31
+ sdk: flutter
32
+ flutter_lints: ^2.0.1
33
+
34
+ # For information on the generic Dart part of this file, see the
35
+ # following page: https://dart.dev/tools/pub/pubspec
36
+
37
+ # The following section is specific to Flutter packages.
38
+ flutter:
39
+ # This section identifies this Flutter project as a plugin project.
40
+ # The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.)
41
+ # which should be registered in the plugin registry. This is required for
42
+ # using method channels.
43
+ # The Android 'package' specifies package in which the registered class is.
44
+ # This is required for using method channels on Android.
45
+ # The 'ffiPlugin' specifies that native code should be built and bundled.
46
+ # This is required for using `dart:ffi`.
47
+ # All these are used by the tooling to maintain consistency when
48
+ # adding or updating assets for this project.
49
+ plugin:
50
+ platforms:
51
+ linux:
52
+ pluginClass: AudioCapturePlugin
53
+ macos:
54
+ pluginClass: AudioCapturePlugin
55
+ windows:
56
+ pluginClass: AudioCapturePlugin
57
+
58
+ # To add assets to your plugin package, add an assets section, like this:
59
+ # assets:
60
+ # - images/a_dot_burr.jpeg
61
+ # - images/a_dot_ham.jpeg
62
+ #
63
+ # For details regarding assets in packages, see
64
+ # https://flutter.dev/to/asset-from-package
65
+ #
66
+ # An image asset can refer to one or more resolution-specific "variants", see
67
+ # https://flutter.dev/to/resolution-aware-images
68
+
69
+ # To add custom fonts to your plugin package, add a fonts section here,
70
+ # in this "flutter" section. Each entry in this list should have a
71
+ # "family" key with the font family name, and a "fonts" key with a
72
+ # list giving the asset and other descriptors for the font. For
73
+ # example:
74
+ # fonts:
75
+ # - family: Schyler
76
+ # fonts:
77
+ # - asset: fonts/Schyler-Regular.ttf
78
+ # - asset: fonts/Schyler-Italic.ttf
79
+ # style: italic
80
+ # - family: Trajan Pro
81
+ # fonts:
82
+ # - asset: fonts/TrajanPro.ttf
83
+ # - asset: fonts/TrajanPro_Bold.ttf
84
+ # weight: 700
85
+ #
86
+ # For details regarding fonts in packages, see
87
+ # https://flutter.dev/to/font-from-package
@@ -0,0 +1,105 @@
1
+ # The Flutter tooling requires that developers have a version of Visual Studio
2
+ # installed that includes CMake 3.14 or later. You should not increase this
3
+ # version, as doing so will cause the plugin to fail to compile for some
4
+ # customers of the plugin.
5
+ cmake_minimum_required(VERSION 3.14)
6
+
7
+ # Project-level configuration.
8
+ set(PROJECT_NAME "desktop_audio_capture")
9
+ project(${PROJECT_NAME} LANGUAGES CXX)
10
+
11
+ # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
12
+ # versions of CMake.
13
+ cmake_policy(VERSION 3.14...3.25)
14
+
15
+ # This value is used when generating builds using this plugin, so it must
16
+ # not be changed
17
+ set(PLUGIN_NAME "desktop_audio_capture_plugin")
18
+
19
+ # Any new source files that you add to the plugin should be added here.
20
+ list(APPEND PLUGIN_SOURCES
21
+ "audio_capture_plugin.cpp"
22
+ "audio_capture_plugin.h"
23
+ "system_audio_capture_plugin.cpp"
24
+ "system_audio_capture_plugin.h"
25
+ "mic_capture_plugin.cpp"
26
+ "mic_capture_plugin.h"
27
+ )
28
+
29
+ # Define the plugin library target. Its name must not be changed (see comment
30
+ # on PLUGIN_NAME above).
31
+ add_library(${PLUGIN_NAME} SHARED
32
+ "include/audio_capture/audio_capture_plugin_c_api.h"
33
+ "include/desktop_audio_capture/audio_capture_plugin.h"
34
+ "audio_capture_plugin_c_api.cpp"
35
+ ${PLUGIN_SOURCES}
36
+ )
37
+
38
+ # Apply a standard set of build settings that are configured in the
39
+ # application-level CMakeLists.txt. This can be removed for plugins that want
40
+ # full control over build settings.
41
+ apply_standard_settings(${PLUGIN_NAME})
42
+
43
+ # Symbols are hidden by default to reduce the chance of accidental conflicts
44
+ # between plugins. This should not be removed; any symbols that should be
45
+ # exported should be explicitly exported with the FLUTTER_PLUGIN_EXPORT macro.
46
+ set_target_properties(${PLUGIN_NAME} PROPERTIES
47
+ CXX_VISIBILITY_PRESET hidden)
48
+ target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
49
+
50
+ # Source include directories and library dependencies. Add any plugin-specific
51
+ # dependencies here.
52
+ target_include_directories(${PLUGIN_NAME} INTERFACE
53
+ "${CMAKE_CURRENT_SOURCE_DIR}/include")
54
+ target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin)
55
+
56
+ # List of absolute paths to libraries that should be bundled with the plugin.
57
+ # This list could contain prebuilt libraries, or libraries created by an
58
+ # external build triggered from this build file.
59
+ set(desktop_audio_capture_bundled_libraries
60
+ ""
61
+ PARENT_SCOPE
62
+ )
63
+
64
+ # === Tests ===
65
+ # These unit tests can be run from a terminal after building the example, or
66
+ # from Visual Studio after opening the generated solution file.
67
+
68
+ # Only enable test builds when building the example (which sets this variable)
69
+ # so that plugin clients aren't building the tests.
70
+ if (${include_${PROJECT_NAME}_tests})
71
+ set(TEST_RUNNER "${PROJECT_NAME}_test")
72
+ enable_testing()
73
+
74
+ # Add the Google Test dependency.
75
+ include(FetchContent)
76
+ FetchContent_Declare(
77
+ googletest
78
+ URL https://github.com/google/googletest/archive/release-1.11.0.zip
79
+ )
80
+ # Prevent overriding the parent project's compiler/linker settings
81
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
82
+ # Disable install commands for gtest so it doesn't end up in the bundle.
83
+ set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of googletest" FORCE)
84
+ FetchContent_MakeAvailable(googletest)
85
+
86
+ # The plugin's C API is not very useful for unit testing, so build the sources
87
+ # directly into the test binary rather than using the DLL.
88
+ add_executable(${TEST_RUNNER}
89
+ test/audio_capture_plugin_test.cpp
90
+ ${PLUGIN_SOURCES}
91
+ )
92
+ apply_standard_settings(${TEST_RUNNER})
93
+ target_include_directories(${TEST_RUNNER} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}")
94
+ target_link_libraries(${TEST_RUNNER} PRIVATE flutter_wrapper_plugin)
95
+ target_link_libraries(${TEST_RUNNER} PRIVATE gtest_main gmock)
96
+ # flutter_wrapper_plugin has link dependencies on the Flutter DLL.
97
+ add_custom_command(TARGET ${TEST_RUNNER} POST_BUILD
98
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
99
+ "${FLUTTER_LIBRARY}" $<TARGET_FILE_DIR:${TEST_RUNNER}>
100
+ )
101
+
102
+ # Enable automatic test discovery.
103
+ include(GoogleTest)
104
+ gtest_discover_tests(${TEST_RUNNER})
105
+ endif()
@@ -0,0 +1,80 @@
1
+ #include "audio_capture_plugin.h"
2
+
3
+ // This must be included before many other Windows headers.
4
+ #include <windows.h>
5
+
6
+ // For getPlatformVersion; remove unless needed for your plugin implementation.
7
+ #include <VersionHelpers.h>
8
+
9
+ #include <flutter/method_channel.h>
10
+ #include <flutter/plugin_registrar_windows.h>
11
+ #include <flutter/standard_method_codec.h>
12
+
13
+ #include <memory>
14
+ #include <sstream>
15
+
16
+ #include "system_audio_capture_plugin.h"
17
+ #include "mic_capture_plugin.h"
18
+
19
+ // Include the public header for the wrapper function declaration
20
+ #include "include/desktop_audio_capture/audio_capture_plugin.h"
21
+
22
+ namespace audio_capture {
23
+
24
+ // static
25
+ void AudioCapturePlugin::RegisterWithRegistrar(
26
+ flutter::PluginRegistrarWindows *registrar) {
27
+ auto channel =
28
+ std::make_unique<flutter::MethodChannel<flutter::EncodableValue>>(
29
+ registrar->messenger(), "audio_capture",
30
+ &flutter::StandardMethodCodec::GetInstance());
31
+
32
+ auto plugin = std::make_unique<AudioCapturePlugin>();
33
+
34
+ channel->SetMethodCallHandler(
35
+ [plugin_pointer = plugin.get()](const auto &call, auto result) {
36
+ plugin_pointer->HandleMethodCall(call, std::move(result));
37
+ });
38
+
39
+ registrar->AddPlugin(std::move(plugin));
40
+
41
+ // Register system audio capture plugin
42
+ SystemAudioCapturePlugin::RegisterWithRegistrar(registrar);
43
+
44
+ // Register microphone capture plugin
45
+ MicCapturePlugin::RegisterWithRegistrar(registrar);
46
+ }
47
+
48
+ AudioCapturePlugin::AudioCapturePlugin() {}
49
+
50
+ AudioCapturePlugin::~AudioCapturePlugin() {}
51
+
52
+ void AudioCapturePlugin::HandleMethodCall(
53
+ const flutter::MethodCall<flutter::EncodableValue> &method_call,
54
+ std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result) {
55
+ if (method_call.method_name().compare("getPlatformVersion") == 0) {
56
+ std::ostringstream version_stream;
57
+ version_stream << "Windows ";
58
+ if (IsWindows10OrGreater()) {
59
+ version_stream << "10+";
60
+ } else if (IsWindows8OrGreater()) {
61
+ version_stream << "8";
62
+ } else if (IsWindows7OrGreater()) {
63
+ version_stream << "7";
64
+ }
65
+ result->Success(flutter::EncodableValue(version_stream.str()));
66
+ } else {
67
+ result->NotImplemented();
68
+ }
69
+ }
70
+
71
+ } // namespace audio_capture
72
+
73
+ // Wrapper function for plugin registration (used by generated_plugin_registrant.cc)
74
+ // Export the function from the DLL
75
+ __declspec(dllexport) void AudioCapturePluginRegisterWithRegistrar(
76
+ FlutterDesktopPluginRegistrarRef registrar) {
77
+ audio_capture::AudioCapturePlugin::RegisterWithRegistrar(
78
+ flutter::PluginRegistrarManager::GetInstance()
79
+ ->GetRegistrar<flutter::PluginRegistrarWindows>(registrar));
80
+ }
@@ -0,0 +1,31 @@
1
+ #ifndef FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_H_
2
+ #define FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_H_
3
+
4
+ #include <flutter/method_channel.h>
5
+ #include <flutter/plugin_registrar_windows.h>
6
+
7
+ #include <memory>
8
+
9
+ namespace audio_capture {
10
+
11
+ class AudioCapturePlugin : public flutter::Plugin {
12
+ public:
13
+ static void RegisterWithRegistrar(flutter::PluginRegistrarWindows *registrar);
14
+
15
+ AudioCapturePlugin();
16
+
17
+ virtual ~AudioCapturePlugin();
18
+
19
+ // Disallow copy and assign.
20
+ AudioCapturePlugin(const AudioCapturePlugin&) = delete;
21
+ AudioCapturePlugin& operator=(const AudioCapturePlugin&) = delete;
22
+
23
+ // Called when a method is called on this plugin's channel from Dart.
24
+ void HandleMethodCall(
25
+ const flutter::MethodCall<flutter::EncodableValue> &method_call,
26
+ std::unique_ptr<flutter::MethodResult<flutter::EncodableValue>> result);
27
+ };
28
+
29
+ } // namespace audio_capture
30
+
31
+ #endif // FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_H_
@@ -0,0 +1,12 @@
1
+ #include "include/audio_capture/audio_capture_plugin_c_api.h"
2
+
3
+ #include <flutter/plugin_registrar_windows.h>
4
+
5
+ #include "audio_capture_plugin.h"
6
+
7
+ void AudioCapturePluginCApiRegisterWithRegistrar(
8
+ FlutterDesktopPluginRegistrarRef registrar) {
9
+ audio_capture::AudioCapturePlugin::RegisterWithRegistrar(
10
+ flutter::PluginRegistrarManager::GetInstance()
11
+ ->GetRegistrar<flutter::PluginRegistrarWindows>(registrar));
12
+ }
@@ -0,0 +1,23 @@
1
+ #ifndef FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_C_API_H_
2
+ #define FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_C_API_H_
3
+
4
+ #include <flutter_plugin_registrar.h>
5
+
6
+ #ifdef FLUTTER_PLUGIN_IMPL
7
+ #define FLUTTER_PLUGIN_EXPORT __declspec(dllexport)
8
+ #else
9
+ #define FLUTTER_PLUGIN_EXPORT __declspec(dllimport)
10
+ #endif
11
+
12
+ #if defined(__cplusplus)
13
+ extern "C" {
14
+ #endif
15
+
16
+ FLUTTER_PLUGIN_EXPORT void AudioCapturePluginCApiRegisterWithRegistrar(
17
+ FlutterDesktopPluginRegistrarRef registrar);
18
+
19
+ #if defined(__cplusplus)
20
+ } // extern "C"
21
+ #endif
22
+
23
+ #endif // FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_C_API_H_
@@ -0,0 +1,25 @@
1
+ #ifndef FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_H_
2
+ #define FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_H_
3
+
4
+ #include <flutter_plugin_registrar.h>
5
+
6
+ #include <memory>
7
+
8
+ #ifdef FLUTTER_PLUGIN_IMPL
9
+ #define FLUTTER_PLUGIN_EXPORT __declspec(dllexport)
10
+ #else
11
+ #define FLUTTER_PLUGIN_EXPORT __declspec(dllimport)
12
+ #endif
13
+
14
+ namespace audio_capture {
15
+
16
+ class AudioCapturePlugin;
17
+
18
+ } // namespace audio_capture
19
+
20
+ // Wrapper function for plugin registration
21
+ FLUTTER_PLUGIN_EXPORT void AudioCapturePluginRegisterWithRegistrar(
22
+ FlutterDesktopPluginRegistrarRef registrar);
23
+
24
+ #endif // FLUTTER_PLUGIN_AUDIO_CAPTURE_PLUGIN_H_
25
+