neoagent 2.3.1-beta.20 → 2.3.1-beta.22
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/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/install_helpers.js +13 -0
- package/lib/manager.js +0 -4
- package/package.json +2 -1
- package/server/public/flutter_bootstrap.js +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# This file tracks properties of this Flutter project.
|
|
2
|
+
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
|
3
|
+
#
|
|
4
|
+
# This file should be version controlled and should not be manually edited.
|
|
5
|
+
|
|
6
|
+
version:
|
|
7
|
+
revision: "ac4e799d237041cf905519190471f657b657155a"
|
|
8
|
+
channel: "stable"
|
|
9
|
+
|
|
10
|
+
project_type: app
|
|
11
|
+
|
|
12
|
+
# Tracks metadata for the flutter migrate command
|
|
13
|
+
migration:
|
|
14
|
+
platforms:
|
|
15
|
+
- platform: root
|
|
16
|
+
create_revision: ac4e799d237041cf905519190471f657b657155a
|
|
17
|
+
base_revision: ac4e799d237041cf905519190471f657b657155a
|
|
18
|
+
- platform: android
|
|
19
|
+
create_revision: ac4e799d237041cf905519190471f657b657155a
|
|
20
|
+
base_revision: ac4e799d237041cf905519190471f657b657155a
|
|
21
|
+
- platform: linux
|
|
22
|
+
create_revision: ac4e799d237041cf905519190471f657b657155a
|
|
23
|
+
base_revision: ac4e799d237041cf905519190471f657b657155a
|
|
24
|
+
- platform: macos
|
|
25
|
+
create_revision: ac4e799d237041cf905519190471f657b657155a
|
|
26
|
+
base_revision: ac4e799d237041cf905519190471f657b657155a
|
|
27
|
+
- platform: web
|
|
28
|
+
create_revision: ac4e799d237041cf905519190471f657b657155a
|
|
29
|
+
base_revision: ac4e799d237041cf905519190471f657b657155a
|
|
30
|
+
- platform: windows
|
|
31
|
+
create_revision: ac4e799d237041cf905519190471f657b657155a
|
|
32
|
+
base_revision: ac4e799d237041cf905519190471f657b657155a
|
|
33
|
+
|
|
34
|
+
# User provided section
|
|
35
|
+
|
|
36
|
+
# List of Local paths (relative to this file) that should be
|
|
37
|
+
# ignored by the migrate tool.
|
|
38
|
+
#
|
|
39
|
+
# Files that are not part of the templates will be ignored by default.
|
|
40
|
+
unmanaged_files:
|
|
41
|
+
- 'lib/main.dart'
|
|
42
|
+
- 'ios/Runner.xcodeproj/project.pbxproj'
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# neoagent_flutter
|
|
2
|
+
|
|
3
|
+
A new Flutter project.
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
This project is a starting point for a Flutter application.
|
|
8
|
+
|
|
9
|
+
A few resources to get you started if this is your first Flutter project:
|
|
10
|
+
|
|
11
|
+
- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
|
|
12
|
+
- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
|
|
13
|
+
|
|
14
|
+
For help getting started with Flutter development, view the
|
|
15
|
+
[online documentation](https://docs.flutter.dev/), which offers tutorials,
|
|
16
|
+
samples, guidance on mobile development, and a full API reference.
|
|
17
|
+
|
|
18
|
+
## Desktop audio capture note
|
|
19
|
+
|
|
20
|
+
Desktop recording currently depends on `desktop_audio_capture` and is pinned to
|
|
21
|
+
`0.0.2` to avoid unexpected API shifts from automatic minor updates.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# This file configures the analyzer, which statically analyzes Dart code to
|
|
2
|
+
# check for errors, warnings, and lints.
|
|
3
|
+
#
|
|
4
|
+
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
|
|
5
|
+
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
|
|
6
|
+
# invoked from the command line by running `flutter analyze`.
|
|
7
|
+
|
|
8
|
+
# The following line activates a set of recommended lints for Flutter apps,
|
|
9
|
+
# packages, and plugins designed to encourage good coding practices.
|
|
10
|
+
include: package:flutter_lints/flutter.yaml
|
|
11
|
+
|
|
12
|
+
analyzer:
|
|
13
|
+
exclude:
|
|
14
|
+
- third_party/**
|
|
15
|
+
|
|
16
|
+
linter:
|
|
17
|
+
# The lint rules applied to this project can be customized in the
|
|
18
|
+
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
|
19
|
+
# included above or to enable additional rules. A list of all available lints
|
|
20
|
+
# and their documentation is published at https://dart.dev/lints.
|
|
21
|
+
#
|
|
22
|
+
# Instead of disabling a lint rule for the entire project in the
|
|
23
|
+
# section below, it can also be suppressed for a single line of code
|
|
24
|
+
# or a specific dart file by using the `// ignore: name_of_lint` and
|
|
25
|
+
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
|
26
|
+
# producing the lint.
|
|
27
|
+
rules:
|
|
28
|
+
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
|
29
|
+
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
|
30
|
+
|
|
31
|
+
# Additional information about this file can be found at
|
|
32
|
+
# https://dart.dev/guides/language/analysis-options
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import java.util.Properties
|
|
2
|
+
|
|
3
|
+
plugins {
|
|
4
|
+
id("com.android.application")
|
|
5
|
+
id("kotlin-android")
|
|
6
|
+
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
|
|
7
|
+
id("dev.flutter.flutter-gradle-plugin")
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
val envReleaseKeystorePath = System.getenv("ANDROID_KEYSTORE_PATH")?.trim().orEmpty()
|
|
11
|
+
val envReleaseKeystorePassword = System.getenv("ANDROID_KEYSTORE_PASSWORD")?.trim().orEmpty()
|
|
12
|
+
val envReleaseKeyAlias = System.getenv("ANDROID_KEY_ALIAS")?.trim().orEmpty()
|
|
13
|
+
val envReleaseKeyPassword = System.getenv("ANDROID_KEY_PASSWORD")?.trim().orEmpty()
|
|
14
|
+
val keyPropertiesFile = rootProject.file("key.properties")
|
|
15
|
+
val keyProperties = Properties()
|
|
16
|
+
if (keyPropertiesFile.exists()) {
|
|
17
|
+
keyPropertiesFile.inputStream().use(keyProperties::load)
|
|
18
|
+
}
|
|
19
|
+
val repoReleaseKeystorePath = keyProperties.getProperty("storeFile", "").trim()
|
|
20
|
+
val repoReleaseKeystorePassword = keyProperties.getProperty("storePassword", "").trim()
|
|
21
|
+
val repoReleaseKeyAlias = keyProperties.getProperty("keyAlias", "").trim()
|
|
22
|
+
val repoReleaseKeyPassword = keyProperties.getProperty("keyPassword", "").trim()
|
|
23
|
+
val hasEnvReleaseSigning =
|
|
24
|
+
envReleaseKeystorePath.isNotEmpty() &&
|
|
25
|
+
envReleaseKeystorePassword.isNotEmpty() &&
|
|
26
|
+
envReleaseKeyAlias.isNotEmpty() &&
|
|
27
|
+
envReleaseKeyPassword.isNotEmpty()
|
|
28
|
+
val hasRepoReleaseSigning =
|
|
29
|
+
repoReleaseKeystorePath.isNotEmpty() &&
|
|
30
|
+
repoReleaseKeystorePassword.isNotEmpty() &&
|
|
31
|
+
repoReleaseKeyAlias.isNotEmpty() &&
|
|
32
|
+
repoReleaseKeyPassword.isNotEmpty()
|
|
33
|
+
val launcherBuild =
|
|
34
|
+
System.getenv("NEOAGENT_ANDROID_LAUNCHER_MODE")
|
|
35
|
+
?.trim()
|
|
36
|
+
?.lowercase() in setOf("1", "true", "yes", "on")
|
|
37
|
+
val applicationIdValue =
|
|
38
|
+
if (launcherBuild) "com.neoagent.flutter_app.launcher" else "com.neoagent.flutter_app"
|
|
39
|
+
val applicationLabelValue = if (launcherBuild) "NeoAgent Launcher" else "NeoAgent"
|
|
40
|
+
val androidAppModeValue = if (launcherBuild) "launcher" else "standard"
|
|
41
|
+
val launcherHomeEnabledValue = launcherBuild.toString()
|
|
42
|
+
|
|
43
|
+
android {
|
|
44
|
+
namespace = "com.neoagent.flutter_app"
|
|
45
|
+
compileSdk = flutter.compileSdkVersion
|
|
46
|
+
ndkVersion = flutter.ndkVersion
|
|
47
|
+
|
|
48
|
+
compileOptions {
|
|
49
|
+
sourceCompatibility = JavaVersion.VERSION_11
|
|
50
|
+
targetCompatibility = JavaVersion.VERSION_11
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
kotlinOptions {
|
|
54
|
+
jvmTarget = JavaVersion.VERSION_11.toString()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
defaultConfig {
|
|
58
|
+
applicationId = applicationIdValue
|
|
59
|
+
minSdk = 26
|
|
60
|
+
targetSdk = flutter.targetSdkVersion
|
|
61
|
+
versionCode = flutter.versionCode
|
|
62
|
+
versionName = flutter.versionName
|
|
63
|
+
manifestPlaceholders["neoagentAppLabel"] = applicationLabelValue
|
|
64
|
+
manifestPlaceholders["neoagentAppMode"] = androidAppModeValue
|
|
65
|
+
manifestPlaceholders["neoagentLauncherHomeEnabled"] =
|
|
66
|
+
launcherHomeEnabledValue
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
signingConfigs {
|
|
70
|
+
if (hasEnvReleaseSigning) {
|
|
71
|
+
create("release") {
|
|
72
|
+
storeFile = file(envReleaseKeystorePath)
|
|
73
|
+
storePassword = envReleaseKeystorePassword
|
|
74
|
+
keyAlias = envReleaseKeyAlias
|
|
75
|
+
keyPassword = envReleaseKeyPassword
|
|
76
|
+
}
|
|
77
|
+
} else if (hasRepoReleaseSigning) {
|
|
78
|
+
create("release") {
|
|
79
|
+
storeFile = rootProject.file(repoReleaseKeystorePath)
|
|
80
|
+
storePassword = repoReleaseKeystorePassword
|
|
81
|
+
keyAlias = repoReleaseKeyAlias
|
|
82
|
+
keyPassword = repoReleaseKeyPassword
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
buildTypes {
|
|
88
|
+
release {
|
|
89
|
+
signingConfig =
|
|
90
|
+
if (hasEnvReleaseSigning || hasRepoReleaseSigning) {
|
|
91
|
+
signingConfigs.getByName("release")
|
|
92
|
+
} else {
|
|
93
|
+
signingConfigs.getByName("debug")
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
dependencies {
|
|
100
|
+
implementation("androidx.activity:activity-ktx:1.10.1")
|
|
101
|
+
implementation("androidx.health.connect:connect-client:1.1.0")
|
|
102
|
+
implementation("androidx.security:security-crypto:1.1.0")
|
|
103
|
+
implementation("androidx.work:work-runtime-ktx:2.10.1")
|
|
104
|
+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0")
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
flutter {
|
|
108
|
+
source = "../.."
|
|
109
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
|
+
<!-- The INTERNET permission is required for development. Specifically,
|
|
3
|
+
the Flutter tool needs it to communicate with the running application
|
|
4
|
+
to allow setting breakpoints, to provide hot reload, etc.
|
|
5
|
+
-->
|
|
6
|
+
<uses-permission android:name="android.permission.INTERNET"/>
|
|
7
|
+
</manifest>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
2
|
+
xmlns:tools="http://schemas.android.com/tools">
|
|
3
|
+
<uses-permission android:name="android.permission.INTERNET" />
|
|
4
|
+
<uses-permission android:name="android.permission.CAMERA" />
|
|
5
|
+
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
6
|
+
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
|
7
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
8
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
|
9
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
|
|
10
|
+
<uses-permission android:name="android.permission.health.READ_STEPS" />
|
|
11
|
+
<uses-permission android:name="android.permission.health.READ_HEART_RATE" />
|
|
12
|
+
<uses-permission android:name="android.permission.health.READ_SLEEP" />
|
|
13
|
+
<uses-permission android:name="android.permission.health.READ_EXERCISE" />
|
|
14
|
+
<uses-permission android:name="android.permission.health.READ_WEIGHT" />
|
|
15
|
+
<uses-permission android:name="android.permission.health.READ_HEALTH_DATA_IN_BACKGROUND" />
|
|
16
|
+
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
|
17
|
+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
18
|
+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
19
|
+
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
|
20
|
+
|
|
21
|
+
<queries>
|
|
22
|
+
<package android:name="com.google.android.apps.healthdata" />
|
|
23
|
+
<intent>
|
|
24
|
+
<action android:name="android.intent.action.PROCESS_TEXT"/>
|
|
25
|
+
<data android:mimeType="text/plain"/>
|
|
26
|
+
</intent>
|
|
27
|
+
</queries>
|
|
28
|
+
|
|
29
|
+
<application
|
|
30
|
+
android:label="${neoagentAppLabel}"
|
|
31
|
+
android:name="${applicationName}"
|
|
32
|
+
android:icon="@mipmap/ic_launcher"
|
|
33
|
+
android:usesCleartextTraffic="true">
|
|
34
|
+
<activity
|
|
35
|
+
android:name=".MainActivity"
|
|
36
|
+
android:exported="true"
|
|
37
|
+
android:launchMode="singleTop"
|
|
38
|
+
android:taskAffinity=""
|
|
39
|
+
android:theme="@style/LaunchTheme"
|
|
40
|
+
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
|
41
|
+
android:hardwareAccelerated="true"
|
|
42
|
+
android:windowSoftInputMode="adjustResize">
|
|
43
|
+
<!-- Specifies an Android theme to apply to this Activity as soon as
|
|
44
|
+
the Android process has started. This theme is visible to the user
|
|
45
|
+
while the Flutter UI initializes. After that, this theme continues
|
|
46
|
+
to determine the Window background behind the Flutter UI. -->
|
|
47
|
+
<meta-data
|
|
48
|
+
android:name="io.flutter.embedding.android.NormalTheme"
|
|
49
|
+
android:resource="@style/NormalTheme"
|
|
50
|
+
/>
|
|
51
|
+
<intent-filter>
|
|
52
|
+
<action android:name="android.intent.action.MAIN"/>
|
|
53
|
+
<category android:name="android.intent.category.LAUNCHER"/>
|
|
54
|
+
</intent-filter>
|
|
55
|
+
</activity>
|
|
56
|
+
<provider
|
|
57
|
+
android:name="androidx.core.content.FileProvider"
|
|
58
|
+
android:authorities="${applicationId}.fileprovider"
|
|
59
|
+
android:exported="false"
|
|
60
|
+
android:grantUriPermissions="true">
|
|
61
|
+
<meta-data
|
|
62
|
+
android:name="android.support.FILE_PROVIDER_PATHS"
|
|
63
|
+
android:resource="@xml/file_paths" />
|
|
64
|
+
</provider>
|
|
65
|
+
<activity-alias
|
|
66
|
+
android:name=".LauncherHomeAlias"
|
|
67
|
+
android:enabled="${neoagentLauncherHomeEnabled}"
|
|
68
|
+
android:exported="true"
|
|
69
|
+
android:label="${neoagentAppLabel}"
|
|
70
|
+
android:targetActivity=".MainActivity">
|
|
71
|
+
<intent-filter>
|
|
72
|
+
<action android:name="android.intent.action.MAIN" />
|
|
73
|
+
<category android:name="android.intent.category.HOME" />
|
|
74
|
+
<category android:name="android.intent.category.DEFAULT" />
|
|
75
|
+
</intent-filter>
|
|
76
|
+
</activity-alias>
|
|
77
|
+
<activity
|
|
78
|
+
android:name=".health.PermissionsRationaleActivity"
|
|
79
|
+
android:exported="false" />
|
|
80
|
+
<activity
|
|
81
|
+
android:name=".widgets.WidgetConfigActivity"
|
|
82
|
+
android:exported="true"
|
|
83
|
+
android:theme="@style/LaunchTheme" />
|
|
84
|
+
<activity-alias
|
|
85
|
+
android:name=".ViewPermissionUsageActivity"
|
|
86
|
+
android:exported="true"
|
|
87
|
+
android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
|
|
88
|
+
android:targetActivity=".health.PermissionsRationaleActivity">
|
|
89
|
+
<intent-filter>
|
|
90
|
+
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
|
|
91
|
+
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
|
|
92
|
+
</intent-filter>
|
|
93
|
+
</activity-alias>
|
|
94
|
+
<service
|
|
95
|
+
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
|
96
|
+
android:foregroundServiceType="dataSync"
|
|
97
|
+
tools:node="merge" />
|
|
98
|
+
<service
|
|
99
|
+
android:name=".recording.RecordingForegroundService"
|
|
100
|
+
android:exported="false"
|
|
101
|
+
android:foregroundServiceType="microphone|connectedDevice" />
|
|
102
|
+
<receiver
|
|
103
|
+
android:name=".recording.RecordingBootReceiver"
|
|
104
|
+
android:enabled="true"
|
|
105
|
+
android:exported="false">
|
|
106
|
+
<intent-filter>
|
|
107
|
+
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
|
108
|
+
</intent-filter>
|
|
109
|
+
</receiver>
|
|
110
|
+
<receiver
|
|
111
|
+
android:name=".widgets.AiHomeWidgetProvider"
|
|
112
|
+
android:exported="true">
|
|
113
|
+
<intent-filter>
|
|
114
|
+
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
|
115
|
+
</intent-filter>
|
|
116
|
+
<meta-data
|
|
117
|
+
android:name="android.appwidget.provider"
|
|
118
|
+
android:resource="@xml/neoagent_ai_widget_info" />
|
|
119
|
+
</receiver>
|
|
120
|
+
<receiver
|
|
121
|
+
android:name=".widgets.VoiceLaunchWidgetProvider"
|
|
122
|
+
android:exported="true">
|
|
123
|
+
<intent-filter>
|
|
124
|
+
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
|
125
|
+
</intent-filter>
|
|
126
|
+
<meta-data
|
|
127
|
+
android:name="android.appwidget.provider"
|
|
128
|
+
android:resource="@xml/neoagent_voice_widget_info" />
|
|
129
|
+
</receiver>
|
|
130
|
+
<meta-data
|
|
131
|
+
android:name="com.neoagent.APP_MODE"
|
|
132
|
+
android:value="${neoagentAppMode}" />
|
|
133
|
+
<meta-data
|
|
134
|
+
android:name="flutterEmbedding"
|
|
135
|
+
android:value="2" />
|
|
136
|
+
|
|
137
|
+
<!-- Notification Listener Service for Interception -->
|
|
138
|
+
<service android:name="notification.listener.service.NotificationListener"
|
|
139
|
+
android:label="NeoAgent Notifications"
|
|
140
|
+
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
|
|
141
|
+
android:exported="true">
|
|
142
|
+
<intent-filter>
|
|
143
|
+
<action android:name="android.service.notification.NotificationListenerService" />
|
|
144
|
+
</intent-filter>
|
|
145
|
+
</service>
|
|
146
|
+
</application>
|
|
147
|
+
</manifest>
|