neoagent 2.3.1-beta.20 → 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 (215) hide show
  1. package/flutter_app/.metadata +42 -0
  2. package/flutter_app/README.md +21 -0
  3. package/flutter_app/analysis_options.yaml +32 -0
  4. package/flutter_app/android/app/build.gradle.kts +109 -0
  5. package/flutter_app/android/app/src/debug/AndroidManifest.xml +7 -0
  6. package/flutter_app/android/app/src/main/AndroidManifest.xml +147 -0
  7. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/MainActivity.kt +747 -0
  8. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthConnectGateway.kt +280 -0
  9. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncNotifications.kt +113 -0
  10. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncPayload.kt +57 -0
  11. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncScheduler.kt +78 -0
  12. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/HealthSyncWorker.kt +253 -0
  13. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/health/PermissionsRationaleActivity.kt +46 -0
  14. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingBootReceiver.kt +21 -0
  15. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingForegroundService.kt +586 -0
  16. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingStateStore.kt +78 -0
  17. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/recording/RecordingUploadClient.kt +104 -0
  18. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiHomeWidgetProvider.kt +457 -0
  19. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/AiWidgetStore.kt +194 -0
  20. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/VoiceLaunchWidgetProvider.kt +67 -0
  21. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetConfigActivity.kt +228 -0
  22. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncScheduler.kt +72 -0
  23. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetSyncWorker.kt +186 -0
  24. package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/widgets/WidgetTaskRunWorker.kt +210 -0
  25. package/flutter_app/android/app/src/main/res/drawable/launch_background.xml +12 -0
  26. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_bg.xml +11 -0
  27. package/flutter_app/android/app/src/main/res/drawable/neoagent_ai_widget_task_bg.xml +8 -0
  28. package/flutter_app/android/app/src/main/res/drawable-v21/launch_background.xml +12 -0
  29. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget.xml +138 -0
  30. package/flutter_app/android/app/src/main/res/layout/neoagent_ai_widget_task_row.xml +52 -0
  31. package/flutter_app/android/app/src/main/res/layout/neoagent_voice_widget.xml +49 -0
  32. package/flutter_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  33. package/flutter_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  34. package/flutter_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  35. package/flutter_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  36. package/flutter_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  37. package/flutter_app/android/app/src/main/res/values/strings.xml +12 -0
  38. package/flutter_app/android/app/src/main/res/values/styles.xml +18 -0
  39. package/flutter_app/android/app/src/main/res/values-night/styles.xml +18 -0
  40. package/flutter_app/android/app/src/main/res/xml/file_paths.xml +6 -0
  41. package/flutter_app/android/app/src/main/res/xml/neoagent_ai_widget_info.xml +12 -0
  42. package/flutter_app/android/app/src/main/res/xml/neoagent_voice_widget_info.xml +12 -0
  43. package/flutter_app/android/app/src/profile/AndroidManifest.xml +7 -0
  44. package/flutter_app/android/build.gradle.kts +24 -0
  45. package/flutter_app/android/ci-release.keystore +0 -0
  46. package/flutter_app/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  47. package/flutter_app/android/gradle.properties +3 -0
  48. package/flutter_app/android/key.properties +4 -0
  49. package/flutter_app/android/settings.gradle.kts +26 -0
  50. package/flutter_app/assets/branding/app_icon_1024.png +0 -0
  51. package/flutter_app/assets/branding/app_icon_128.png +0 -0
  52. package/flutter_app/assets/branding/app_icon_192.png +0 -0
  53. package/flutter_app/assets/branding/app_icon_256.png +0 -0
  54. package/flutter_app/assets/branding/app_icon_32.png +0 -0
  55. package/flutter_app/assets/branding/app_icon_512.png +0 -0
  56. package/flutter_app/assets/branding/app_icon_64.png +0 -0
  57. package/flutter_app/assets/branding/tray_icon_template.png +0 -0
  58. package/flutter_app/lib/features/location/location_service.dart +119 -0
  59. package/flutter_app/lib/features/notifications/notification_interceptor.dart +97 -0
  60. package/flutter_app/lib/main.dart +23057 -0
  61. package/flutter_app/lib/main_app_shell.dart +1682 -0
  62. package/flutter_app/lib/main_integrations.dart +931 -0
  63. package/flutter_app/lib/main_launcher.dart +959 -0
  64. package/flutter_app/lib/main_launcher_entry.dart +5 -0
  65. package/flutter_app/lib/main_models.dart +3473 -0
  66. package/flutter_app/lib/main_shared.dart +2861 -0
  67. package/flutter_app/lib/main_theme.dart +204 -0
  68. package/flutter_app/lib/main_voice_assistant.dart +831 -0
  69. package/flutter_app/lib/src/android_apk_drop_zone.dart +32 -0
  70. package/flutter_app/lib/src/android_apk_drop_zone_stub.dart +16 -0
  71. package/flutter_app/lib/src/android_apk_drop_zone_web.dart +348 -0
  72. package/flutter_app/lib/src/android_app_installer.dart +22 -0
  73. package/flutter_app/lib/src/android_app_installer_io.dart +122 -0
  74. package/flutter_app/lib/src/android_app_installer_stub.dart +21 -0
  75. package/flutter_app/lib/src/android_launcher_bridge.dart +239 -0
  76. package/flutter_app/lib/src/app_launch_bridge.dart +29 -0
  77. package/flutter_app/lib/src/app_release_updater.dart +511 -0
  78. package/flutter_app/lib/src/backend_client.dart +1833 -0
  79. package/flutter_app/lib/src/desktop_companion.dart +2 -0
  80. package/flutter_app/lib/src/desktop_companion_actions.dart +586 -0
  81. package/flutter_app/lib/src/desktop_companion_io.dart +538 -0
  82. package/flutter_app/lib/src/desktop_companion_stub.dart +59 -0
  83. package/flutter_app/lib/src/desktop_native_bridge.dart +91 -0
  84. package/flutter_app/lib/src/desktop_screen_capture.dart +21 -0
  85. package/flutter_app/lib/src/desktop_screen_capture_io.dart +142 -0
  86. package/flutter_app/lib/src/desktop_screen_capture_stub.dart +12 -0
  87. package/flutter_app/lib/src/diagnostics_logger.dart +119 -0
  88. package/flutter_app/lib/src/health_bridge.dart +136 -0
  89. package/flutter_app/lib/src/live_voice_capture.dart +85 -0
  90. package/flutter_app/lib/src/messaging_access_summary.dart +46 -0
  91. package/flutter_app/lib/src/network/app_http_client.dart +53 -0
  92. package/flutter_app/lib/src/network/app_http_client_factory.dart +6 -0
  93. package/flutter_app/lib/src/network/app_http_client_io.dart +138 -0
  94. package/flutter_app/lib/src/network/app_http_client_stub.dart +3 -0
  95. package/flutter_app/lib/src/network/app_http_client_web.dart +94 -0
  96. package/flutter_app/lib/src/oauth_launcher.dart +33 -0
  97. package/flutter_app/lib/src/oauth_launcher_io.dart +77 -0
  98. package/flutter_app/lib/src/oauth_launcher_stub.dart +33 -0
  99. package/flutter_app/lib/src/oauth_launcher_web.dart +107 -0
  100. package/flutter_app/lib/src/recording_bridge.dart +232 -0
  101. package/flutter_app/lib/src/recording_bridge_io.dart +1019 -0
  102. package/flutter_app/lib/src/recording_bridge_stub.dart +120 -0
  103. package/flutter_app/lib/src/recording_bridge_web.dart +689 -0
  104. package/flutter_app/lib/src/recording_payloads.dart +86 -0
  105. package/flutter_app/lib/src/theme/palette.dart +81 -0
  106. package/flutter_app/lib/src/widget_bridge.dart +49 -0
  107. package/flutter_app/linux/CMakeLists.txt +128 -0
  108. package/flutter_app/linux/flutter/CMakeLists.txt +88 -0
  109. package/flutter_app/linux/flutter/generated_plugin_registrant.cc +43 -0
  110. package/flutter_app/linux/flutter/generated_plugin_registrant.h +15 -0
  111. package/flutter_app/linux/flutter/generated_plugins.cmake +31 -0
  112. package/flutter_app/linux/runner/CMakeLists.txt +26 -0
  113. package/flutter_app/linux/runner/main.cc +6 -0
  114. package/flutter_app/linux/runner/my_application.cc +144 -0
  115. package/flutter_app/linux/runner/my_application.h +18 -0
  116. package/flutter_app/linux/runner/resources/app_icon.png +0 -0
  117. package/flutter_app/macos/Flutter/Flutter-Debug.xcconfig +2 -0
  118. package/flutter_app/macos/Flutter/Flutter-Release.xcconfig +2 -0
  119. package/flutter_app/macos/Flutter/GeneratedPluginRegistrant.swift +40 -0
  120. package/flutter_app/macos/Podfile +42 -0
  121. package/flutter_app/macos/Podfile.lock +87 -0
  122. package/flutter_app/macos/Runner/AppDelegate.swift +576 -0
  123. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
  124. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
  125. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
  126. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
  127. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
  128. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
  129. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
  130. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
  131. package/flutter_app/macos/Runner/Base.lproj/MainMenu.xib +342 -0
  132. package/flutter_app/macos/Runner/Configs/AppInfo.xcconfig +14 -0
  133. package/flutter_app/macos/Runner/Configs/Debug.xcconfig +2 -0
  134. package/flutter_app/macos/Runner/Configs/Release.xcconfig +2 -0
  135. package/flutter_app/macos/Runner/Configs/Warnings.xcconfig +13 -0
  136. package/flutter_app/macos/Runner/DebugProfile.entitlements +16 -0
  137. package/flutter_app/macos/Runner/Info.plist +36 -0
  138. package/flutter_app/macos/Runner/MainFlutterWindow.swift +19 -0
  139. package/flutter_app/macos/Runner/Release.entitlements +12 -0
  140. package/flutter_app/macos/Runner.xcodeproj/project.pbxproj +801 -0
  141. package/flutter_app/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  142. package/flutter_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +99 -0
  143. package/flutter_app/macos/Runner.xcworkspace/contents.xcworkspacedata +10 -0
  144. package/flutter_app/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  145. package/flutter_app/macos/RunnerTests/RunnerTests.swift +12 -0
  146. package/flutter_app/patch_strings.py +12 -0
  147. package/flutter_app/pubspec.lock +1088 -0
  148. package/flutter_app/pubspec.yaml +53 -0
  149. package/flutter_app/test/messaging_access_summary_test.dart +22 -0
  150. package/flutter_app/test/recording_payloads_test.dart +53 -0
  151. package/flutter_app/third_party/desktop_audio_capture/LICENSE +21 -0
  152. package/flutter_app/third_party/desktop_audio_capture/README.md +262 -0
  153. package/flutter_app/third_party/desktop_audio_capture/lib/audio_capture.dart +65 -0
  154. package/flutter_app/third_party/desktop_audio_capture/lib/config/mic_audio_config.dart +153 -0
  155. package/flutter_app/third_party/desktop_audio_capture/lib/config/system_adudio_config.dart +110 -0
  156. package/flutter_app/third_party/desktop_audio_capture/lib/mic/mic_audio_capture.dart +461 -0
  157. package/flutter_app/third_party/desktop_audio_capture/lib/model/audio_status.dart +91 -0
  158. package/flutter_app/third_party/desktop_audio_capture/lib/model/decibel_data.dart +106 -0
  159. package/flutter_app/third_party/desktop_audio_capture/lib/model/input_device_type.dart +219 -0
  160. package/flutter_app/third_party/desktop_audio_capture/lib/system/system_audio_capture.dart +336 -0
  161. package/flutter_app/third_party/desktop_audio_capture/linux/CMakeLists.txt +101 -0
  162. package/flutter_app/third_party/desktop_audio_capture/linux/audio_capture_plugin.cc +692 -0
  163. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/audio_capture_plugin.h +35 -0
  164. package/flutter_app/third_party/desktop_audio_capture/linux/include/audio_capture/mic_capture_plugin.h +36 -0
  165. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/audio_capture_plugin.h +32 -0
  166. package/flutter_app/third_party/desktop_audio_capture/linux/include/desktop_audio_capture/mic_capture_plugin.h +32 -0
  167. package/flutter_app/third_party/desktop_audio_capture/linux/mic_capture_plugin.cc +878 -0
  168. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/AudioCapturePlugin.swift +27 -0
  169. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/MicCapturePlugin.swift +1172 -0
  170. package/flutter_app/third_party/desktop_audio_capture/macos/Classes/SystemCapturePlugin.swift +655 -0
  171. package/flutter_app/third_party/desktop_audio_capture/macos/Resources/PrivacyInfo.xcprivacy +12 -0
  172. package/flutter_app/third_party/desktop_audio_capture/macos/desktop_audio_capture.podspec +30 -0
  173. package/flutter_app/third_party/desktop_audio_capture/pubspec.yaml +87 -0
  174. package/flutter_app/third_party/desktop_audio_capture/windows/CMakeLists.txt +105 -0
  175. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.cpp +80 -0
  176. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin.h +31 -0
  177. package/flutter_app/third_party/desktop_audio_capture/windows/audio_capture_plugin_c_api.cpp +12 -0
  178. package/flutter_app/third_party/desktop_audio_capture/windows/include/audio_capture/audio_capture_plugin_c_api.h +23 -0
  179. package/flutter_app/third_party/desktop_audio_capture/windows/include/desktop_audio_capture/audio_capture_plugin.h +25 -0
  180. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.cpp +1117 -0
  181. package/flutter_app/third_party/desktop_audio_capture/windows/mic_capture_plugin.h +115 -0
  182. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.cpp +777 -0
  183. package/flutter_app/third_party/desktop_audio_capture/windows/system_audio_capture_plugin.h +87 -0
  184. package/flutter_app/third_party/flutter_secure_storage_linux/linux/CMakeLists.txt +30 -0
  185. package/flutter_app/third_party/flutter_secure_storage_linux/linux/flutter_secure_storage_linux_plugin.cc +215 -0
  186. package/flutter_app/third_party/flutter_secure_storage_linux/linux/include/flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h +27 -0
  187. package/flutter_app/third_party/flutter_secure_storage_linux/pubspec.yaml +20 -0
  188. package/flutter_app/tool/generate_desktop_branding.py +219 -0
  189. package/flutter_app/web/favicon.png +0 -0
  190. package/flutter_app/web/favicon.svg +12 -0
  191. package/flutter_app/web/icons/Icon-192.png +0 -0
  192. package/flutter_app/web/icons/Icon-512.png +0 -0
  193. package/flutter_app/web/icons/Icon-maskable-192.png +0 -0
  194. package/flutter_app/web/icons/Icon-maskable-512.png +0 -0
  195. package/flutter_app/web/index.html +39 -0
  196. package/flutter_app/web/manifest.json +35 -0
  197. package/flutter_app/windows/CMakeLists.txt +108 -0
  198. package/flutter_app/windows/flutter/CMakeLists.txt +109 -0
  199. package/flutter_app/windows/flutter/generated_plugin_registrant.cc +47 -0
  200. package/flutter_app/windows/flutter/generated_plugin_registrant.h +15 -0
  201. package/flutter_app/windows/flutter/generated_plugins.cmake +35 -0
  202. package/flutter_app/windows/runner/CMakeLists.txt +41 -0
  203. package/flutter_app/windows/runner/Runner.rc +121 -0
  204. package/flutter_app/windows/runner/flutter_window.cpp +533 -0
  205. package/flutter_app/windows/runner/flutter_window.h +37 -0
  206. package/flutter_app/windows/runner/main.cpp +53 -0
  207. package/flutter_app/windows/runner/resource.h +16 -0
  208. package/flutter_app/windows/runner/resources/app_icon.ico +0 -0
  209. package/flutter_app/windows/runner/runner.exe.manifest +14 -0
  210. package/flutter_app/windows/runner/utils.cpp +65 -0
  211. package/flutter_app/windows/runner/utils.h +19 -0
  212. package/flutter_app/windows/runner/win32_window.cpp +299 -0
  213. package/flutter_app/windows/runner/win32_window.h +102 -0
  214. package/package.json +2 -1
  215. package/server/public/flutter_bootstrap.js +1 -1
@@ -0,0 +1,232 @@
1
+ import 'package:flutter/foundation.dart';
2
+
3
+ import 'recording_bridge_stub.dart'
4
+ if (dart.library.html) 'recording_bridge_web.dart'
5
+ if (dart.library.io) 'recording_bridge_io.dart';
6
+
7
+ RecordingBridge createRecordingBridge() => createPlatformRecordingBridge();
8
+
9
+ abstract class RecordingBridge extends ChangeNotifier {
10
+ RecordingRuntimeStatus get status;
11
+
12
+ Future<void> refreshStatus();
13
+
14
+ Future<void> startWebRecording({
15
+ required String baseUrl,
16
+ required String sessionId,
17
+ });
18
+
19
+ Future<void> startWebMicrophoneRecording({
20
+ required String baseUrl,
21
+ required String sessionId,
22
+ });
23
+
24
+ Future<void> startBackgroundRecording({
25
+ required String baseUrl,
26
+ required String sessionCookie,
27
+ required String sessionId,
28
+ });
29
+
30
+ Future<void> startDesktopAudioRecording({
31
+ required String baseUrl,
32
+ required String sessionCookie,
33
+ required String sessionId,
34
+ bool autoShowToolbar = true,
35
+ });
36
+
37
+ Future<void> pauseBackgroundRecording();
38
+
39
+ Future<void> resumeBackgroundRecording();
40
+
41
+ Future<void> pauseDesktopRecording();
42
+
43
+ Future<void> resumeDesktopRecording();
44
+
45
+ Future<void> showFloatingToolbar();
46
+
47
+ Future<void> hideFloatingToolbar();
48
+
49
+ Future<void> openMicrophoneSettings();
50
+
51
+ Future<void> openSystemAudioSettings();
52
+
53
+ Future<void> stopActiveRecording({bool notifyEnded = false});
54
+
55
+ Future<void> Function(String sessionId)? onRecordingStopped;
56
+ }
57
+
58
+ enum RecordingPermissionState {
59
+ unsupported,
60
+ unknown,
61
+ granted,
62
+ denied,
63
+ needsRestart,
64
+ }
65
+
66
+ @immutable
67
+ class RecordingRuntimeStatus {
68
+ const RecordingRuntimeStatus({
69
+ required this.supportsScreenAndMic,
70
+ required this.supportsBackgroundMic,
71
+ this.supportsSystemAudio = false,
72
+ this.supportsDesktopBackgroundRuntime = false,
73
+ this.supportsFloatingToolbar = false,
74
+ this.supportsGlobalHotkeys = false,
75
+ this.active = false,
76
+ this.paused = false,
77
+ this.sessionId,
78
+ this.platformLabel,
79
+ this.startedAt,
80
+ this.errorMessage,
81
+ this.microphonePermission = RecordingPermissionState.unknown,
82
+ this.systemAudioPermission = RecordingPermissionState.unknown,
83
+ this.backgroundRuntimeActive = false,
84
+ this.floatingToolbarVisible = false,
85
+ this.activeSources = const <String>[],
86
+ this.microphoneLevelDb = -120,
87
+ this.systemAudioLevelDb = -120,
88
+ this.availableInputDevices = const <RecordingInputDevice>[],
89
+ this.selectedInputDeviceId,
90
+ this.selectedInputDeviceName,
91
+ });
92
+
93
+ final bool supportsScreenAndMic;
94
+ final bool supportsBackgroundMic;
95
+ final bool supportsSystemAudio;
96
+ final bool supportsDesktopBackgroundRuntime;
97
+ final bool supportsFloatingToolbar;
98
+ final bool supportsGlobalHotkeys;
99
+ final bool active;
100
+ final bool paused;
101
+ final String? sessionId;
102
+ final String? platformLabel;
103
+ final DateTime? startedAt;
104
+ final String? errorMessage;
105
+ final RecordingPermissionState microphonePermission;
106
+ final RecordingPermissionState systemAudioPermission;
107
+ final bool backgroundRuntimeActive;
108
+ final bool floatingToolbarVisible;
109
+ final List<String> activeSources;
110
+ final double microphoneLevelDb;
111
+ final double systemAudioLevelDb;
112
+ final List<RecordingInputDevice> availableInputDevices;
113
+ final String? selectedInputDeviceId;
114
+ final String? selectedInputDeviceName;
115
+
116
+ RecordingRuntimeStatus copyWith({
117
+ bool? supportsScreenAndMic,
118
+ bool? supportsBackgroundMic,
119
+ bool? supportsSystemAudio,
120
+ bool? supportsDesktopBackgroundRuntime,
121
+ bool? supportsFloatingToolbar,
122
+ bool? supportsGlobalHotkeys,
123
+ bool? active,
124
+ bool? paused,
125
+ Object? sessionId = _unset,
126
+ Object? platformLabel = _unset,
127
+ Object? startedAt = _unset,
128
+ Object? errorMessage = _unset,
129
+ RecordingPermissionState? microphonePermission,
130
+ RecordingPermissionState? systemAudioPermission,
131
+ bool? backgroundRuntimeActive,
132
+ bool? floatingToolbarVisible,
133
+ List<String>? activeSources,
134
+ double? microphoneLevelDb,
135
+ double? systemAudioLevelDb,
136
+ List<RecordingInputDevice>? availableInputDevices,
137
+ Object? selectedInputDeviceId = _unset,
138
+ Object? selectedInputDeviceName = _unset,
139
+ }) {
140
+ return RecordingRuntimeStatus(
141
+ supportsScreenAndMic: supportsScreenAndMic ?? this.supportsScreenAndMic,
142
+ supportsBackgroundMic:
143
+ supportsBackgroundMic ?? this.supportsBackgroundMic,
144
+ supportsSystemAudio: supportsSystemAudio ?? this.supportsSystemAudio,
145
+ supportsDesktopBackgroundRuntime:
146
+ supportsDesktopBackgroundRuntime ??
147
+ this.supportsDesktopBackgroundRuntime,
148
+ supportsFloatingToolbar:
149
+ supportsFloatingToolbar ?? this.supportsFloatingToolbar,
150
+ supportsGlobalHotkeys:
151
+ supportsGlobalHotkeys ?? this.supportsGlobalHotkeys,
152
+ active: active ?? this.active,
153
+ paused: paused ?? this.paused,
154
+ sessionId: sessionId == _unset ? this.sessionId : sessionId as String?,
155
+ platformLabel: platformLabel == _unset
156
+ ? this.platformLabel
157
+ : platformLabel as String?,
158
+ startedAt: startedAt == _unset ? this.startedAt : startedAt as DateTime?,
159
+ errorMessage: errorMessage == _unset
160
+ ? this.errorMessage
161
+ : errorMessage as String?,
162
+ microphonePermission:
163
+ microphonePermission ?? this.microphonePermission,
164
+ systemAudioPermission: systemAudioPermission ?? this.systemAudioPermission,
165
+ backgroundRuntimeActive:
166
+ backgroundRuntimeActive ?? this.backgroundRuntimeActive,
167
+ floatingToolbarVisible:
168
+ floatingToolbarVisible ?? this.floatingToolbarVisible,
169
+ activeSources: activeSources ?? this.activeSources,
170
+ microphoneLevelDb: microphoneLevelDb ?? this.microphoneLevelDb,
171
+ systemAudioLevelDb: systemAudioLevelDb ?? this.systemAudioLevelDb,
172
+ availableInputDevices:
173
+ availableInputDevices ?? this.availableInputDevices,
174
+ selectedInputDeviceId: selectedInputDeviceId == _unset
175
+ ? this.selectedInputDeviceId
176
+ : selectedInputDeviceId as String?,
177
+ selectedInputDeviceName: selectedInputDeviceName == _unset
178
+ ? this.selectedInputDeviceName
179
+ : selectedInputDeviceName as String?,
180
+ );
181
+ }
182
+
183
+ static const Object _unset = Object();
184
+ }
185
+
186
+ @immutable
187
+ class RecordingInputDevice {
188
+ const RecordingInputDevice({
189
+ required this.id,
190
+ required this.name,
191
+ required this.kind,
192
+ required this.channelCount,
193
+ required this.isDefault,
194
+ });
195
+
196
+ final String id;
197
+ final String name;
198
+ final String kind;
199
+ final int channelCount;
200
+ final bool isDefault;
201
+
202
+ @override
203
+ bool operator ==(Object other) {
204
+ if (identical(this, other)) {
205
+ return true;
206
+ }
207
+ return other is RecordingInputDevice &&
208
+ other.id == id &&
209
+ other.name == name &&
210
+ other.kind == kind &&
211
+ other.channelCount == channelCount &&
212
+ other.isDefault == isDefault;
213
+ }
214
+
215
+ @override
216
+ int get hashCode => Object.hash(id, name, kind, channelCount, isDefault);
217
+
218
+ @override
219
+ String toString() {
220
+ return 'RecordingInputDevice(id: $id, name: $name, kind: $kind, '
221
+ 'channelCount: $channelCount, isDefault: $isDefault)';
222
+ }
223
+ }
224
+
225
+ class RecordingBridgeException implements Exception {
226
+ const RecordingBridgeException(this.message);
227
+
228
+ final String message;
229
+
230
+ @override
231
+ String toString() => message;
232
+ }