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.
- package/.env.example +39 -0
- package/README.md +2 -0
- package/docs/capabilities.md +2 -2
- package/docs/configuration.md +13 -5
- package/docs/integrations.md +4 -1
- package/flutter_app/.metadata +42 -0
- package/flutter_app/README.md +21 -0
- package/flutter_app/analysis_options.yaml +32 -0
- package/flutter_app/android/app/build.gradle.kts +109 -0
- package/flutter_app/android/app/src/debug/AndroidManifest.xml +7 -0
- package/flutter_app/android/app/src/main/AndroidManifest.xml +147 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/MainActivity.kt +747 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthConnectGateway.kt +280 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncNotifications.kt +113 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncPayload.kt +57 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncScheduler.kt +78 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncWorker.kt +253 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/PermissionsRationaleActivity.kt +46 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingBootReceiver.kt +21 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingForegroundService.kt +586 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingStateStore.kt +78 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingUploadClient.kt +104 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiHomeWidgetProvider.kt +457 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiWidgetStore.kt +194 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/VoiceLaunchWidgetProvider.kt +67 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetConfigActivity.kt +228 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncScheduler.kt +72 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncWorker.kt +186 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetTaskRunWorker.kt +210 -0
- package/flutter_app/android/app/src/main/res/drawable/launch_background.xml +12 -0
- package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_bg.xml +11 -0
- package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_task_bg.xml +8 -0
- package/flutter_app/android/app/src/main/res/drawable-v21/launch_background.xml +12 -0
- package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget.xml +138 -0
- package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget_task_row.xml +52 -0
- package/flutter_app/android/app/src/main/res/layout/neoagent_voice_widget.xml +49 -0
- package/flutter_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/values/strings.xml +12 -0
- package/flutter_app/android/app/src/main/res/values/styles.xml +18 -0
- package/flutter_app/android/app/src/main/res/values-night/styles.xml +18 -0
- package/flutter_app/android/app/src/main/res/xml/file_paths.xml +6 -0
- package/flutter_app/android/app/src/main/res/xml/neoagent_ai_widget_info.xml +12 -0
- package/flutter_app/android/app/src/main/res/xml/neoagent_voice_widget_info.xml +12 -0
- package/flutter_app/android/app/src/profile/AndroidManifest.xml +7 -0
- package/flutter_app/android/build.gradle.kts +24 -0
- package/flutter_app/android/ci-release.keystore +0 -0
- package/flutter_app/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/flutter_app/android/gradle.properties +3 -0
- package/flutter_app/android/key.properties +4 -0
- package/flutter_app/android/settings.gradle.kts +26 -0
- package/flutter_app/assets/branding/app_icon_1024.png +0 -0
- package/flutter_app/assets/branding/app_icon_128.png +0 -0
- package/flutter_app/assets/branding/app_icon_192.png +0 -0
- package/flutter_app/assets/branding/app_icon_256.png +0 -0
- package/flutter_app/assets/branding/app_icon_32.png +0 -0
- package/flutter_app/assets/branding/app_icon_512.png +0 -0
- package/flutter_app/assets/branding/app_icon_64.png +0 -0
- package/flutter_app/assets/branding/tray_icon_template.png +0 -0
- package/flutter_app/lib/features/location/location_service.dart +119 -0
- package/flutter_app/lib/features/notifications/notification_interceptor.dart +97 -0
- package/flutter_app/lib/main.dart +23057 -0
- package/flutter_app/lib/main_app_shell.dart +1682 -0
- package/flutter_app/lib/main_integrations.dart +931 -0
- package/flutter_app/lib/main_launcher.dart +959 -0
- package/flutter_app/lib/main_launcher_entry.dart +5 -0
- package/flutter_app/lib/main_models.dart +3473 -0
- package/flutter_app/lib/main_shared.dart +2861 -0
- package/flutter_app/lib/main_theme.dart +204 -0
- package/flutter_app/lib/main_voice_assistant.dart +831 -0
- package/flutter_app/lib/src/android_apk_drop_zone.dart +32 -0
- package/flutter_app/lib/src/android_apk_drop_zone_stub.dart +16 -0
- package/flutter_app/lib/src/android_apk_drop_zone_web.dart +348 -0
- package/flutter_app/lib/src/android_app_installer.dart +22 -0
- package/flutter_app/lib/src/android_app_installer_io.dart +122 -0
- package/flutter_app/lib/src/android_app_installer_stub.dart +21 -0
- package/flutter_app/lib/src/android_launcher_bridge.dart +239 -0
- package/flutter_app/lib/src/app_launch_bridge.dart +29 -0
- package/flutter_app/lib/src/app_release_updater.dart +511 -0
- package/flutter_app/lib/src/backend_client.dart +1833 -0
- package/flutter_app/lib/src/desktop_companion.dart +2 -0
- package/flutter_app/lib/src/desktop_companion_actions.dart +586 -0
- package/flutter_app/lib/src/desktop_companion_io.dart +538 -0
- package/flutter_app/lib/src/desktop_companion_stub.dart +59 -0
- package/flutter_app/lib/src/desktop_native_bridge.dart +91 -0
- package/flutter_app/lib/src/desktop_screen_capture.dart +21 -0
- package/flutter_app/lib/src/desktop_screen_capture_io.dart +142 -0
- package/flutter_app/lib/src/desktop_screen_capture_stub.dart +12 -0
- package/flutter_app/lib/src/diagnostics_logger.dart +119 -0
- package/flutter_app/lib/src/health_bridge.dart +136 -0
- package/flutter_app/lib/src/live_voice_capture.dart +85 -0
- package/flutter_app/lib/src/messaging_access_summary.dart +46 -0
- package/flutter_app/lib/src/network/app_http_client.dart +53 -0
- package/flutter_app/lib/src/network/app_http_client_factory.dart +6 -0
- package/flutter_app/lib/src/network/app_http_client_io.dart +138 -0
- package/flutter_app/lib/src/network/app_http_client_stub.dart +3 -0
- package/flutter_app/lib/src/network/app_http_client_web.dart +94 -0
- package/flutter_app/lib/src/oauth_launcher.dart +33 -0
- package/flutter_app/lib/src/oauth_launcher_io.dart +77 -0
- package/flutter_app/lib/src/oauth_launcher_stub.dart +33 -0
- package/flutter_app/lib/src/oauth_launcher_web.dart +107 -0
- package/flutter_app/lib/src/recording_bridge.dart +232 -0
- package/flutter_app/lib/src/recording_bridge_io.dart +1019 -0
- package/flutter_app/lib/src/recording_bridge_stub.dart +120 -0
- package/flutter_app/lib/src/recording_bridge_web.dart +689 -0
- package/flutter_app/lib/src/recording_payloads.dart +86 -0
- package/flutter_app/lib/src/theme/palette.dart +81 -0
- package/flutter_app/lib/src/widget_bridge.dart +49 -0
- package/flutter_app/linux/CMakeLists.txt +128 -0
- package/flutter_app/linux/flutter/CMakeLists.txt +88 -0
- package/flutter_app/linux/flutter/generated_plugin_registrant.cc +43 -0
- package/flutter_app/linux/flutter/generated_plugin_registrant.h +15 -0
- package/flutter_app/linux/flutter/generated_plugins.cmake +31 -0
- package/flutter_app/linux/runner/CMakeLists.txt +26 -0
- package/flutter_app/linux/runner/main.cc +6 -0
- package/flutter_app/linux/runner/my_application.cc +144 -0
- package/flutter_app/linux/runner/my_application.h +18 -0
- package/flutter_app/linux/runner/resources/app_icon.png +0 -0
- package/flutter_app/macos/Flutter/Flutter-Debug.xcconfig +2 -0
- package/flutter_app/macos/Flutter/Flutter-Release.xcconfig +2 -0
- package/flutter_app/macos/Flutter/GeneratedPluginRegistrant.swift +40 -0
- package/flutter_app/macos/Podfile +42 -0
- package/flutter_app/macos/Podfile.lock +87 -0
- package/flutter_app/macos/Runner/AppDelegate.swift +576 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
- package/flutter_app/macos/Runner/Base.lproj/MainMenu.xib +342 -0
- package/flutter_app/macos/Runner/Configs/AppInfo.xcconfig +14 -0
- package/flutter_app/macos/Runner/Configs/Debug.xcconfig +2 -0
- package/flutter_app/macos/Runner/Configs/Release.xcconfig +2 -0
- package/flutter_app/macos/Runner/Configs/Warnings.xcconfig +13 -0
- package/flutter_app/macos/Runner/DebugProfile.entitlements +16 -0
- package/flutter_app/macos/Runner/Info.plist +36 -0
- package/flutter_app/macos/Runner/MainFlutterWindow.swift +19 -0
- package/flutter_app/macos/Runner/Release.entitlements +12 -0
- package/flutter_app/macos/Runner.xcodeproj/project.pbxproj +801 -0
- package/flutter_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/flutter_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +99 -0
- package/flutter_app/macos/Runner.xcworkspace/contents.xcworkspacedata +10 -0
- package/flutter_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/flutter_app/macos/RunnerTests/RunnerTests.swift +12 -0
- package/flutter_app/patch_strings.py +12 -0
- package/flutter_app/pubspec.lock +1088 -0
- package/flutter_app/pubspec.yaml +53 -0
- package/flutter_app/test/messaging_access_summary_test.dart +22 -0
- package/flutter_app/test/recording_payloads_test.dart +53 -0
- package/flutter_app/third_party/desktop_audio_capture/LICENSE +21 -0
- package/flutter_app/third_party/desktop_audio_capture/README.md +262 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/audio_capture.dart +65 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/config/mic_audio_config.dart +153 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/config/system_adudio_config.dart +110 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/mic/mic_audio_capture.dart +461 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/model/audio_status.dart +91 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/model/decibel_data.dart +106 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/model/input_device_type.dart +219 -0
- package/flutter_app/third_party/desktop_audio_capture/lib/system/system_audio_capture.dart +336 -0
- package/flutter_app/third_party/desktop_audio_capture/linux/CMakeLists.txt +101 -0
- package/flutter_app/third_party/desktop_audio_capture/linux/audio_capture_plugin.cc +692 -0
- package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/audio_capture_plugin.h +35 -0
- package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/mic_capture_plugin.h +36 -0
- package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/audio_capture_plugin.h +32 -0
- package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/mic_capture_plugin.h +32 -0
- package/flutter_app/third_party/desktop_audio_capture/linux/mic_capture_plugin.cc +878 -0
- package/flutter_app/third_party/desktop_audio_capture/macos/Classes/AudioCapturePlugin.swift +27 -0
- package/flutter_app/third_party/desktop_audio_capture/macos/Classes/MicCapturePlugin.swift +1172 -0
- package/flutter_app/third_party/desktop_audio_capture/macos/Classes/SystemCapturePlugin.swift +655 -0
- package/flutter_app/third_party/desktop_audio_capture/macos/Resources/PrivacyInfo.xcprivacy +12 -0
- package/flutter_app/third_party/desktop_audio_capture/macos/desktop_audio_capture.podspec +30 -0
- package/flutter_app/third_party/desktop_audio_capture/pubspec.yaml +87 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/CMakeLists.txt +105 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.cpp +80 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.h +31 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin_c_api.cpp +12 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/include/audio_capture/audio_capture_plugin_c_api.h +23 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/include/desktop_audio_capture/audio_capture_plugin.h +25 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.cpp +1117 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.h +115 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.cpp +777 -0
- package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.h +87 -0
- package/flutter_app/third_party/flutter_secure_storage_linux/linux/CMakeLists.txt +30 -0
- package/flutter_app/third_party/flutter_secure_storage_linux/linux/flutter_secure_storage_linux_plugin.cc +215 -0
- package/flutter_app/third_party/flutter_secure_storage_linux/linux/include/flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h +27 -0
- package/flutter_app/third_party/flutter_secure_storage_linux/pubspec.yaml +20 -0
- package/flutter_app/tool/generate_desktop_branding.py +219 -0
- package/flutter_app/web/favicon.png +0 -0
- package/flutter_app/web/favicon.svg +12 -0
- package/flutter_app/web/icons/Icon-192.png +0 -0
- package/flutter_app/web/icons/Icon-512.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-192.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-512.png +0 -0
- package/flutter_app/web/index.html +39 -0
- package/flutter_app/web/manifest.json +35 -0
- package/flutter_app/windows/CMakeLists.txt +108 -0
- package/flutter_app/windows/flutter/CMakeLists.txt +109 -0
- package/flutter_app/windows/flutter/generated_plugin_registrant.cc +47 -0
- package/flutter_app/windows/flutter/generated_plugin_registrant.h +15 -0
- package/flutter_app/windows/flutter/generated_plugins.cmake +35 -0
- package/flutter_app/windows/runner/CMakeLists.txt +41 -0
- package/flutter_app/windows/runner/Runner.rc +121 -0
- package/flutter_app/windows/runner/flutter_window.cpp +533 -0
- package/flutter_app/windows/runner/flutter_window.h +37 -0
- package/flutter_app/windows/runner/main.cpp +53 -0
- package/flutter_app/windows/runner/resource.h +16 -0
- package/flutter_app/windows/runner/resources/app_icon.ico +0 -0
- package/flutter_app/windows/runner/runner.exe.manifest +14 -0
- package/flutter_app/windows/runner/utils.cpp +65 -0
- package/flutter_app/windows/runner/utils.h +19 -0
- package/flutter_app/windows/runner/win32_window.cpp +299 -0
- package/flutter_app/windows/runner/win32_window.h +102 -0
- package/lib/manager.js +231 -7
- package/package.json +3 -1
- package/server/db/database.js +68 -0
- package/server/http/middleware.js +50 -0
- package/server/http/routes.js +3 -1
- package/server/index.js +1 -0
- package/server/public/.last_build_id +1 -1
- package/server/public/assets/NOTICES +61 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +65262 -64422
- package/server/routes/integrations.js +86 -0
- package/server/routes/memory.js +11 -2
- package/server/routes/screenHistory.js +46 -0
- package/server/routes/triggers.js +81 -0
- package/server/services/ai/models.js +30 -0
- package/server/services/ai/providers/githubCopilot.js +97 -0
- package/server/services/ai/providers/openai.js +2 -1
- package/server/services/ai/providers/openaiCodex.js +31 -0
- package/server/services/ai/settings.js +20 -0
- package/server/services/ai/systemPrompt.js +1 -1
- package/server/services/ai/tools.js +35 -6
- package/server/services/browser/controller.js +47 -3
- package/server/services/desktop/screenRecorder.js +172 -0
- package/server/services/integrations/env.js +5 -0
- package/server/services/integrations/github/common.js +106 -0
- package/server/services/integrations/github/provider.js +499 -0
- package/server/services/integrations/github/repos.js +1124 -0
- package/server/services/integrations/home_assistant/provider.js +306 -26
- package/server/services/integrations/manager.js +63 -7
- package/server/services/integrations/oauth_provider.js +13 -6
- package/server/services/integrations/provider_config_store.js +76 -0
- package/server/services/integrations/registry.js +4 -0
- package/server/services/integrations/trello/provider.js +744 -0
- package/server/services/integrations/whatsapp/provider.js +6 -2
- package/server/services/manager.js +22 -0
- package/server/services/memory/manager.js +39 -2
- package/server/services/skills/base_catalog.js +33 -0
- package/server/services/tasks/adapters/index.js +1 -0
- package/server/services/tasks/adapters/manual.js +12 -0
- package/server/services/tasks/runtime.js +1 -1
- package/server/services/voice/openaiClient.js +4 -1
- package/server/services/voice/providers.js +2 -1
- package/server/services/widgets/service.js +49 -4
- package/server/utils/local_secrets.js +56 -0
- 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
|
+
|