neoagent 2.3.1-beta.11 → 2.3.1-beta.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +53 -5
- package/README.md +16 -7
- package/com.neoagent.plist +1 -1
- package/docs/automation.md +82 -41
- package/docs/capabilities.md +85 -89
- package/docs/configuration.md +87 -94
- package/docs/getting-started.md +46 -27
- package/docs/hardware.md +1 -1
- package/docs/index.md +24 -30
- package/docs/integrations.md +46 -64
- package/docs/migration.md +41 -146
- package/docs/operations.md +23 -20
- package/docs/skills.md +20 -20
- package/docs/why-neoagent.md +15 -13
- package/extensions/chrome-browser/background.mjs +10 -2
- package/flutter_app/.metadata +42 -0
- package/flutter_app/DESIGN_SYSTEM.md +166 -0
- package/flutter_app/README.md +21 -0
- package/flutter_app/analysis_options.yaml +32 -0
- package/flutter_app/android/app/build.gradle.kts +111 -0
- package/flutter_app/android/app/src/debug/AndroidManifest.xml +7 -0
- package/flutter_app/android/app/src/main/AndroidManifest.xml +185 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/MainActivity.kt +888 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/auto/NeoAgentCarAppService.kt +114 -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/telecom/NeoAgentConnection.kt +118 -0
- package/flutter_app/android/app/src/main/kotlin/com/neoagent/flutter_app/telecom/NeoAgentConnectionService.kt +86 -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/arrays.xml +8 -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/automotive_app_desc.xml +4 -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/onboarding_intro.mp4 +0 -0
- package/flutter_app/assets/branding/tray_icon_template.png +0 -0
- package/flutter_app/lib/features/location/location_service.dart +117 -0
- package/flutter_app/lib/features/notifications/notification_interceptor.dart +73 -0
- package/flutter_app/lib/features/onboarding/onboarding_chrome.dart +571 -0
- package/flutter_app/lib/features/onboarding/onboarding_messaging_step.dart +275 -0
- package/flutter_app/lib/features/onboarding/onboarding_model_step.dart +366 -0
- package/flutter_app/lib/features/onboarding/onboarding_shell.dart +57 -0
- package/flutter_app/lib/features/onboarding/onboarding_video_step.dart +218 -0
- package/flutter_app/lib/features/onboarding/onboarding_welcome_step.dart +46 -0
- package/flutter_app/lib/main.dart +107 -0
- package/flutter_app/lib/main_account_settings.dart +1340 -0
- package/flutter_app/lib/main_admin.dart +900 -0
- package/flutter_app/lib/main_app_shell.dart +2162 -0
- package/flutter_app/lib/main_chat.dart +3902 -0
- package/flutter_app/lib/main_controller.dart +7229 -0
- package/flutter_app/lib/main_devices.dart +1738 -0
- package/flutter_app/lib/main_integrations.dart +917 -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 +3807 -0
- package/flutter_app/lib/main_navigation.dart +206 -0
- package/flutter_app/lib/main_operations.dart +5249 -0
- package/flutter_app/lib/main_recordings.dart +920 -0
- package/flutter_app/lib/main_runtime.dart +869 -0
- package/flutter_app/lib/main_settings.dart +2288 -0
- package/flutter_app/lib/main_shared.dart +3393 -0
- package/flutter_app/lib/main_spacing.dart +33 -0
- package/flutter_app/lib/main_theme.dart +276 -0
- package/flutter_app/lib/main_unified.dart +388 -0
- package/flutter_app/lib/main_voice_assistant.dart +957 -0
- package/flutter_app/lib/src/analytics_service.dart +294 -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_auto_bridge.dart +59 -0
- package/flutter_app/lib/src/android_launcher_bridge.dart +239 -0
- package/flutter_app/lib/src/app_launch_bridge.dart +58 -0
- package/flutter_app/lib/src/app_release_updater.dart +511 -0
- package/flutter_app/lib/src/backend_client.dart +1870 -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 +95 -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/web_app_update_monitor.dart +17 -0
- package/flutter_app/lib/src/web_app_update_monitor_stub.dart +24 -0
- package/flutter_app/lib/src/web_app_update_monitor_web.dart +123 -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 +47 -0
- package/flutter_app/linux/flutter/generated_plugin_registrant.h +15 -0
- package/flutter_app/linux/flutter/generated_plugins.cmake +32 -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 +48 -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 +1256 -0
- package/flutter_app/pubspec.yaml +59 -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 +50 -0
- package/flutter_app/windows/flutter/generated_plugin_registrant.h +15 -0
- package/flutter_app/windows/flutter/generated_plugins.cmake +36 -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 +31 -0
- package/lib/manager.js +578 -122
- package/package.json +10 -3
- package/runtime/paths.js +137 -0
- package/server/config/analytics.js +30 -0
- package/server/db/database.js +296 -22
- package/server/guest-agent.android.package.json +13 -0
- package/server/guest-agent.browser.package.json +14 -0
- package/server/guest_agent.js +98 -52
- package/server/http/middleware.js +5 -2
- package/server/http/routes.js +3 -0
- package/server/http/static.js +41 -1
- package/server/index.js +15 -16
- package/server/public/.last_build_id +1 -1
- package/server/public/assets/AssetManifest.bin +1 -1
- package/server/public/assets/AssetManifest.bin.json +1 -1
- package/server/public/assets/AssetManifest.json +1 -1
- package/server/public/assets/NOTICES +644 -155
- package/server/public/assets/assets/branding/onboarding_intro.mp4 +0 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/assets/packages/mixpanel_flutter/assets/mixpanel.js +3 -0
- package/server/public/canvaskit/wimp.wasm +0 -0
- package/server/public/flutter_bootstrap.js +2 -2
- package/server/public/main.dart.js +96067 -88139
- package/server/routes/account.js +26 -1
- package/server/routes/agents.js +6 -2
- package/server/routes/android.js +22 -6
- package/server/routes/auth.js +25 -5
- package/server/routes/browser.js +47 -13
- package/server/routes/integrations.js +22 -1
- package/server/routes/memory.js +168 -6
- package/server/routes/runtime.js +14 -0
- package/server/routes/settings.js +102 -24
- package/server/routes/skills.js +12 -0
- package/server/routes/social_video.js +66 -0
- package/server/routes/tasks.js +22 -2
- package/server/routes/triggers.js +44 -35
- package/server/routes/wearable.js +67 -0
- package/server/routes/widgets.js +4 -4
- package/server/services/ai/capabilityHealth.js +23 -51
- package/server/services/ai/compaction.js +1 -1
- package/server/services/ai/deliverables/artifact_helpers.js +190 -0
- package/server/services/ai/deliverables/contracts.js +113 -0
- package/server/services/ai/deliverables/index.js +20 -0
- package/server/services/ai/deliverables/selector.js +94 -0
- package/server/services/ai/deliverables/validator.js +63 -0
- package/server/services/ai/deliverables/workflows.js +207 -0
- package/server/services/ai/engine.js +363 -27
- package/server/services/ai/hooks.js +127 -0
- package/server/services/ai/integrated_tools/index.js +98 -0
- package/server/services/ai/integrated_tools/remotion.js +373 -0
- package/server/services/ai/integrated_tools/shared.js +204 -0
- package/server/services/ai/integrated_tools/slidev.js +207 -0
- package/server/services/ai/loopPolicy.js +146 -0
- package/server/services/ai/models.js +31 -4
- package/server/services/ai/providers/claudeCode.js +49 -0
- package/server/services/ai/providers/openai.js +2 -1
- package/server/services/ai/providers/openaiCodex.js +422 -15
- package/server/services/ai/recordingInsights.js +11 -13
- package/server/services/ai/runEvents.js +100 -0
- package/server/services/ai/settings.js +12 -2
- package/server/services/ai/systemPrompt.js +15 -1
- package/server/services/ai/taskAnalysis.js +2 -0
- package/server/services/ai/toolResult.js +20 -0
- package/server/services/ai/toolRunner.js +46 -6
- package/server/services/ai/toolSelector.js +54 -1
- package/server/services/ai/tools.js +210 -116
- package/server/services/android/android_bootstrap_worker.js +63 -0
- package/server/services/android/controller.js +442 -1760
- package/server/services/bootstrap_helpers.js +0 -34
- package/server/services/browser/controller.js +279 -49
- package/server/services/cli/executor.js +40 -1
- package/server/services/desktop/screenRecorder.js +65 -9
- package/server/services/integrations/figma/provider.js +1 -0
- package/server/services/integrations/github/provider.js +3 -3
- package/server/services/integrations/google/provider.js +1 -0
- package/server/services/integrations/manager.js +25 -5
- package/server/services/integrations/microsoft/provider.js +1 -0
- package/server/services/integrations/oauth_provider.js +15 -5
- package/server/services/integrations/provider_config_store.js +22 -13
- package/server/services/integrations/registry.js +2 -4
- package/server/services/integrations/spotify/provider.js +1 -0
- package/server/services/integrations/trello/provider.js +842 -0
- package/server/services/manager.js +88 -155
- package/server/services/mcp/client.js +120 -23
- package/server/services/memory/llm_transfer.js +218 -0
- package/server/services/memory/manager.js +260 -33
- package/server/services/messaging/access_policy.js +10 -0
- package/server/services/messaging/automation.js +1 -1
- package/server/services/messaging/manager.js +64 -1
- package/server/services/messaging/meshtastic.js +277 -0
- package/server/services/messaging/meshtastic_env.js +40 -0
- package/server/services/messaging/meshtastic_protocol.js +530 -0
- package/server/services/messaging/meshtastic_tcp_transport.js +25 -0
- package/server/services/runtime/backends/local-vm.js +221 -158
- package/server/services/runtime/docker-vm-manager.js +392 -0
- package/server/services/runtime/guest_bootstrap.js +654 -0
- package/server/services/runtime/manager.js +85 -29
- package/server/services/runtime/settings.js +22 -31
- package/server/services/runtime/validation.js +16 -31
- package/server/services/social_video/adapters/base.js +26 -0
- package/server/services/social_video/adapters/index.js +27 -0
- package/server/services/social_video/adapters/instagram.js +17 -0
- package/server/services/social_video/adapters/tiktok.js +17 -0
- package/server/services/social_video/adapters/x.js +17 -0
- package/server/services/social_video/adapters/youtube.js +17 -0
- package/server/services/social_video/captions.js +187 -0
- package/server/services/social_video/frame.js +42 -0
- package/server/services/social_video/index.js +7 -0
- package/server/services/social_video/metadata.js +63 -0
- package/server/services/social_video/result.js +63 -0
- package/server/services/social_video/service.js +720 -0
- package/server/services/social_video/url.js +83 -0
- package/server/services/tasks/integration_runtime.js +1 -1
- package/server/services/tasks/runtime.js +1 -1
- package/server/services/tasks/task_repository.js +3 -6
- package/server/services/voice/openaiSpeech.js +6 -1
- package/server/services/voice/providers.js +142 -14
- package/server/services/voice/runtime.js +8 -8
- package/server/services/voice/runtimeManager.js +156 -19
- package/server/services/voice/turnRunner.js +29 -9
- package/server/services/wearable/firmware_manifest.js +353 -0
- package/server/services/wearable/gateway.js +350 -0
- package/server/services/wearable/protocol.js +45 -0
- package/server/services/wearable/service.js +240 -0
- package/server/services/websocket.js +3 -1
- package/server/services/widgets/focus_widget.js +137 -0
- package/server/services/widgets/service.js +133 -2
- package/server/services/workspace/manager.js +301 -0
- package/server/utils/deployment.js +16 -9
- package/server/services/integrations/home_assistant/provider.js +0 -630
- package/server/services/messaging/access_policy.test.js +0 -228
- package/server/services/runtime/backends/host.js +0 -37
- package/server/services/runtime/qemu.js +0 -391
package/docs/migration.md
CHANGED
|
@@ -6,43 +6,37 @@ sidebar_label: Migration
|
|
|
6
6
|
|
|
7
7
|
# Migration Guide
|
|
8
8
|
|
|
9
|
-
Migrate your existing agent setup from
|
|
9
|
+
Migrate your existing agent setup from OpenClaw or Hermes to NeoAgent with a single command.
|
|
10
10
|
|
|
11
11
|
## Quick Start
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
#
|
|
15
|
-
neoagent migrate
|
|
16
|
-
|
|
17
|
-
# Preview what would be migrated (dry run)
|
|
18
|
-
neoagent migrate dry-run
|
|
19
|
-
|
|
20
|
-
# Check migration status
|
|
21
|
-
neoagent migrate status
|
|
14
|
+
neoagent migrate # detect and migrate interactively
|
|
15
|
+
neoagent migrate dry-run # preview what would be migrated
|
|
16
|
+
neoagent migrate status # check what's detected
|
|
22
17
|
```
|
|
23
18
|
|
|
24
19
|
## What Gets Migrated
|
|
25
20
|
|
|
26
|
-
| Data
|
|
27
|
-
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
21
|
+
| Data | OpenClaw source | Hermes source | Destination |
|
|
22
|
+
|---|---|---|---|
|
|
23
|
+
| Skills | `~/.openclaw/skills/*.md` | `~/.hermes/skills/*.md` | `~/.neoagent/agent-data/skills/openclaw-imports/` or `hermes-imports/` |
|
|
24
|
+
| Memory | `SOUL.md`, `MEMORY.md`, `USER.md` | `MEMORY.md`, `USER.md` | `~/.neoagent/agent-data/memory/openclaw/` or `hermes/` |
|
|
25
|
+
| API keys | from `.env` | from `.env` | merged into `~/.neoagent/.env` |
|
|
31
26
|
|
|
32
27
|
## Prerequisites
|
|
33
28
|
|
|
34
|
-
- NeoAgent installed
|
|
35
|
-
-
|
|
29
|
+
- NeoAgent installed: `npm install -g neoagent`
|
|
30
|
+
- An existing OpenClaw (`~/.openclaw/`) or Hermes (`~/.hermes/`) installation
|
|
36
31
|
|
|
37
|
-
##
|
|
32
|
+
## Running Migration
|
|
38
33
|
|
|
39
|
-
### 1.
|
|
34
|
+
### 1. Check what's detected
|
|
40
35
|
|
|
41
36
|
```bash
|
|
42
37
|
neoagent migrate status
|
|
43
38
|
```
|
|
44
39
|
|
|
45
|
-
This will show:
|
|
46
40
|
```
|
|
47
41
|
Source agents:
|
|
48
42
|
OpenClaw: FOUND
|
|
@@ -51,13 +45,12 @@ Source agents:
|
|
|
51
45
|
Run `neoagent migrate` to start migration.
|
|
52
46
|
```
|
|
53
47
|
|
|
54
|
-
### 2. Preview
|
|
48
|
+
### 2. Preview (optional)
|
|
55
49
|
|
|
56
50
|
```bash
|
|
57
51
|
neoagent migrate dry-run
|
|
58
52
|
```
|
|
59
53
|
|
|
60
|
-
Sample output:
|
|
61
54
|
```
|
|
62
55
|
=== Migration Dry Run ===
|
|
63
56
|
|
|
@@ -65,13 +58,11 @@ OpenClaw detection: FOUND
|
|
|
65
58
|
Skills: 5
|
|
66
59
|
Memories: 3
|
|
67
60
|
API keys: ANTHROPIC_API_KEY, OPENAI_API_KEY, TELEGRAM_BOT_TOKEN
|
|
68
|
-
Config: ~/.openclaw/openclaw.json
|
|
69
61
|
|
|
70
62
|
Hermes detection: FOUND
|
|
71
63
|
Skills: 3
|
|
72
64
|
Memories: 2
|
|
73
65
|
API keys: OPENAI_API_KEY, XAI_API_KEY
|
|
74
|
-
Config: ~/.hermes/config.yaml
|
|
75
66
|
|
|
76
67
|
Would migrate to:
|
|
77
68
|
Skills → ~/.neoagent/agent-data/skills/
|
|
@@ -79,60 +70,23 @@ Would migrate to:
|
|
|
79
70
|
API keys → ~/.neoagent/.env
|
|
80
71
|
```
|
|
81
72
|
|
|
82
|
-
### 3.
|
|
73
|
+
### 3. Migrate
|
|
83
74
|
|
|
84
75
|
```bash
|
|
85
76
|
neoagent migrate
|
|
86
77
|
```
|
|
87
78
|
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
=== NeoAgent Migration ===
|
|
91
|
-
|
|
92
|
-
-> OpenClaw detected at ~/.openclaw/
|
|
93
|
-
-> Hermes detected at ~/.hermes/
|
|
94
|
-
|
|
95
|
-
What would you like to migrate?
|
|
96
|
-
[1] Migrate from all detected sources
|
|
97
|
-
[2] Migrate from OpenClaw only
|
|
98
|
-
[3] Migrate from Hermes only
|
|
99
|
-
[4] Cancel
|
|
100
|
-
|
|
101
|
-
Choice [1]: 1
|
|
102
|
-
|
|
103
|
-
Scanning sources...
|
|
104
|
-
OpenClaw: 5 skills, 3 memories, 3 API keys
|
|
105
|
-
Hermes: 3 skills, 2 memories, 2 API keys
|
|
106
|
-
|
|
107
|
-
Migrating skills and memories...
|
|
108
|
-
→ Copied 5 skills to openclaw-imports/
|
|
109
|
-
→ Copied 3 skills to hermes-imports/
|
|
110
|
-
→ Copied 5 memory files
|
|
79
|
+
The interactive flow asks which sources to migrate and prompts when an API key exists in multiple sources:
|
|
111
80
|
|
|
81
|
+
```
|
|
112
82
|
⚠️ API Key conflicts detected:
|
|
113
83
|
OPENAI_API_KEY exists in both sources
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
Merging API keys...
|
|
122
|
-
→ Merged 4 API keys
|
|
123
|
-
|
|
124
|
-
=== Migration Complete ===
|
|
125
|
-
|
|
126
|
-
Skills migrated to:
|
|
127
|
-
openclaw-imports/
|
|
128
|
-
hermes-imports/
|
|
129
|
-
|
|
130
|
-
Memories migrated to:
|
|
131
|
-
memory/openclaw/
|
|
132
|
-
memory/hermes/
|
|
133
|
-
|
|
134
|
-
Run `neoagent status` to verify the installation.
|
|
135
|
-
Run `neoagent start` to start the server.
|
|
84
|
+
Existing in: neoagent
|
|
85
|
+
Incoming from: openclaw
|
|
86
|
+
[1] Keep existing
|
|
87
|
+
[2] Overwrite with new
|
|
88
|
+
[3] Skip this key
|
|
89
|
+
Choice [1]:
|
|
136
90
|
```
|
|
137
91
|
|
|
138
92
|
## Source Paths
|
|
@@ -140,99 +94,40 @@ Run `neoagent start` to start the server.
|
|
|
140
94
|
### OpenClaw
|
|
141
95
|
|
|
142
96
|
| Data | Path |
|
|
143
|
-
|
|
97
|
+
|---|---|
|
|
144
98
|
| Config | `~/.openclaw/openclaw.json` |
|
|
145
|
-
| Workspace | `~/.openclaw/workspace/` |
|
|
146
99
|
| Skills | `~/.openclaw/skills/` |
|
|
147
|
-
|
|
|
100
|
+
| Memory | `~/.openclaw/workspace/SOUL.md`, `MEMORY.md`, `USER.md` |
|
|
148
101
|
| Legacy | `~/.clawdbot/` |
|
|
149
102
|
|
|
150
103
|
### Hermes
|
|
151
104
|
|
|
152
105
|
| Data | Path |
|
|
153
|
-
|
|
106
|
+
|---|---|
|
|
154
107
|
| Config | `~/.hermes/config.yaml` |
|
|
155
108
|
| Skills | `~/.hermes/skills/` |
|
|
156
|
-
|
|
|
157
|
-
| API
|
|
109
|
+
| Memory | `~/.hermes/memories/MEMORY.md`, `USER.md` |
|
|
110
|
+
| API keys | `~/.hermes/.env` |
|
|
158
111
|
|
|
159
|
-
##
|
|
112
|
+
## API Keys Detected and Merged
|
|
160
113
|
|
|
161
|
-
|
|
162
|
-
|------|------|
|
|
163
|
-
| Config | `~/.neoagent/.env` |
|
|
164
|
-
| Skills | `~/.neoagent/agent-data/skills/` |
|
|
165
|
-
| Memory | `~/.neoagent/agent-data/memory/` |
|
|
166
|
-
| Database | `~/.neoagent/data/neoagent.db` |
|
|
167
|
-
|
|
168
|
-
## API Keys Merged
|
|
169
|
-
|
|
170
|
-
The following API keys are automatically detected and merged:
|
|
171
|
-
|
|
172
|
-
- `ANTHROPIC_API_KEY`
|
|
173
|
-
- `OPENAI_API_KEY`
|
|
174
|
-
- `XAI_API_KEY`
|
|
175
|
-
- `GOOGLE_AI_KEY`
|
|
176
|
-
- `MINIMAX_API_KEY`
|
|
177
|
-
- `BRAVE_SEARCH_API_KEY`
|
|
178
|
-
- `DEEPGRAM_API_KEY`
|
|
179
|
-
- `TELEGRAM_BOT_TOKEN`
|
|
180
|
-
- `OPENROUTER_API_KEY`
|
|
181
|
-
- `ELEVENLABS_API_KEY`
|
|
182
|
-
- `SLACK_BOT_TOKEN`
|
|
183
|
-
- `DISCORD_BOT_TOKEN`
|
|
184
|
-
|
|
185
|
-
## Conflict Resolution
|
|
186
|
-
|
|
187
|
-
When an API key exists in multiple sources (including your existing NeoAgent config), you'll be prompted:
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
⚠️ Conflict: OPENAI_API_KEY
|
|
191
|
-
Existing in: neoagent
|
|
192
|
-
Incoming from: openclaw
|
|
193
|
-
[1] Keep existing
|
|
194
|
-
[2] Overwrite with new
|
|
195
|
-
[3] Skip this key
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
Choose `1` to keep the NeoAgent value, `2` to overwrite with the imported value, or `3` to skip entirely.
|
|
114
|
+
`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `XAI_API_KEY`, `GOOGLE_AI_KEY`, `MINIMAX_API_KEY`, `BRAVE_SEARCH_API_KEY`, `DEEPGRAM_API_KEY`, `TELEGRAM_BOT_TOKEN`, `OPENROUTER_API_KEY`, `ELEVENLABS_API_KEY`, `SLACK_BOT_TOKEN`, `DISCORD_BOT_TOKEN`
|
|
199
115
|
|
|
200
116
|
## Post-Migration Steps
|
|
201
117
|
|
|
202
|
-
1.
|
|
203
|
-
2.
|
|
204
|
-
3.
|
|
205
|
-
4.
|
|
206
|
-
5.
|
|
118
|
+
1. `neoagent status` — verify the installation
|
|
119
|
+
2. `neoagent start` — start the server
|
|
120
|
+
3. Review imported skills in `~/.neoagent/agent-data/skills/openclaw-imports/` and `hermes-imports/`
|
|
121
|
+
4. Review imported memory in `~/.neoagent/agent-data/memory/`
|
|
122
|
+
5. Reconfigure messaging channels in the NeoAgent UI if you had Telegram or Discord set up
|
|
207
123
|
|
|
208
124
|
## Troubleshooting
|
|
209
125
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
-
|
|
214
|
-
- Memories: Copy to `~/.neoagent/agent-data/memory/`
|
|
215
|
-
- API keys: Merge into `~/.neoagent/.env`
|
|
216
|
-
|
|
217
|
-
### "Permission denied" errors
|
|
218
|
-
|
|
219
|
-
Ensure you have read permissions on the source directories and write permissions on `~/.neoagent/`.
|
|
220
|
-
|
|
221
|
-
### Migration partially failed
|
|
222
|
-
|
|
223
|
-
The migration is designed to be idempotent - you can re-run it. Only new files are copied; existing files are not overwritten.
|
|
224
|
-
|
|
225
|
-
## Manual Migration
|
|
226
|
-
|
|
227
|
-
If the automated migration doesn't work for your setup:
|
|
228
|
-
|
|
229
|
-
1. **Skills**: Copy skill `.md` files from source `skills/` directory to `~/.neoagent/agent-data/skills/[source]-imports/`
|
|
230
|
-
2. **Memory**: Copy `SOUL.md`, `MEMORY.md`, `USER.md` to `~/.neoagent/agent-data/memory/[source]/`
|
|
231
|
-
3. **API Keys**: Edit `~/.neoagent/.env` and add keys from source `.env` file
|
|
126
|
+
**"No OpenClaw or Hermes installation detected"** — Installation must be at the default path. If it's elsewhere, migrate manually:
|
|
127
|
+
- Copy `.md` skill files to `~/.neoagent/agent-data/skills/`
|
|
128
|
+
- Copy memory files to `~/.neoagent/agent-data/memory/`
|
|
129
|
+
- Merge API keys into `~/.neoagent/.env`
|
|
232
130
|
|
|
233
|
-
|
|
131
|
+
**"Permission denied" errors** — Check read permissions on source directories and write permissions on `~/.neoagent/`.
|
|
234
132
|
|
|
235
|
-
|
|
236
|
-
- Run `neoagent status` to check NeoAgent health
|
|
237
|
-
- Run `neoagent logs` to view logs
|
|
238
|
-
- Run `neoagent doctor` to diagnose issues
|
|
133
|
+
**Migration partially completed** — Safe to re-run. Only new files are copied; existing files are not overwritten.
|
package/docs/operations.md
CHANGED
|
@@ -1,36 +1,28 @@
|
|
|
1
1
|
# Operations
|
|
2
2
|
|
|
3
|
-
NeoAgent is a self-hosted service, so operations are part of the product. The CLI exposes the common service, release, and recovery tasks.
|
|
4
|
-
|
|
5
3
|
## Service State
|
|
6
4
|
|
|
7
5
|
```bash
|
|
8
|
-
neoagent status
|
|
9
|
-
neoagent logs
|
|
6
|
+
neoagent status # install root, config path, runtime paths, release channel, service state
|
|
7
|
+
neoagent logs # first stop for unexpected behavior in UI, messaging, OAuth, or tasks
|
|
10
8
|
neoagent restart
|
|
11
9
|
```
|
|
12
10
|
|
|
13
|
-
`neoagent status` reports the install root, config path, runtime data paths, release channel, and service state. `neoagent logs` is the first place to look when the service starts but the UI, messaging, OAuth, or tasks behave unexpectedly.
|
|
14
|
-
|
|
15
11
|
## Release Channels
|
|
16
12
|
|
|
17
13
|
```bash
|
|
18
|
-
neoagent channel
|
|
19
|
-
neoagent channel stable
|
|
20
|
-
neoagent channel beta
|
|
14
|
+
neoagent channel # show current channel
|
|
15
|
+
neoagent channel stable # switch to stable releases (recommended for most installs)
|
|
16
|
+
neoagent channel beta # switch to prerelease builds
|
|
21
17
|
```
|
|
22
18
|
|
|
23
|
-
The release channel controls what `neoagent update` follows. Use `stable` for normal self-hosted installs and `beta` when you intentionally want prerelease builds.
|
|
24
|
-
|
|
25
19
|
## Updates
|
|
26
20
|
|
|
27
21
|
```bash
|
|
28
22
|
neoagent update
|
|
29
23
|
```
|
|
30
24
|
|
|
31
|
-
On git installs,
|
|
32
|
-
|
|
33
|
-
After updating, NeoAgent verifies that the bundled web client exists and restarts the service.
|
|
25
|
+
Follows the configured release channel. On git installs, pulls the latest source and reinstalls dependencies when they change. On npm installs, reinstalls the global package from the matching npm tag. Verifies the bundled web client and restarts the service.
|
|
34
26
|
|
|
35
27
|
## Recovery
|
|
36
28
|
|
|
@@ -38,21 +30,32 @@ After updating, NeoAgent verifies that the bundled web client exists and restart
|
|
|
38
30
|
neoagent fix
|
|
39
31
|
```
|
|
40
32
|
|
|
41
|
-
Use
|
|
33
|
+
Use when NeoAgent is in a broken state after a self-edit or corrupted install. On git installs: backs up runtime data, saves local tracked changes, resets source files, reinstalls dependencies, and restarts.
|
|
42
34
|
|
|
43
|
-
|
|
35
|
+
For configuration-only issues:
|
|
44
36
|
|
|
45
37
|
```bash
|
|
46
38
|
neoagent setup
|
|
47
39
|
neoagent restart
|
|
48
40
|
```
|
|
49
41
|
|
|
42
|
+
## Troubleshooting
|
|
43
|
+
|
|
44
|
+
| Symptom | First step |
|
|
45
|
+
|---|---|
|
|
46
|
+
| Service won't start | `neoagent logs` — look for startup errors |
|
|
47
|
+
| UI loads but agent doesn't respond | Confirm an AI provider key is set in **Settings → AI Providers** |
|
|
48
|
+
| OAuth integration fails | Confirm `PUBLIC_URL` is reachable and the redirect URI matches |
|
|
49
|
+
| Messaging not delivering | Check credentials in the messaging tab; confirm `PUBLIC_URL` for webhook-based platforms |
|
|
50
|
+
| Tasks not running | Confirm the task is enabled; check **Runs** and **Logs** for error output |
|
|
51
|
+
| Broken after update | `neoagent fix` — resets source, reinstalls, restarts |
|
|
52
|
+
|
|
50
53
|
## Runtime Data
|
|
51
54
|
|
|
52
|
-
| Path |
|
|
55
|
+
| Path | Contents |
|
|
53
56
|
|---|---|
|
|
54
57
|
| `~/.neoagent/.env` | Server config and secrets |
|
|
55
|
-
| `~/.neoagent/data/` | Database, session data, logs,
|
|
56
|
-
| `~/.neoagent/agent-data/` | Skills, memory,
|
|
58
|
+
| `~/.neoagent/data/` | Database, session data, logs, update status |
|
|
59
|
+
| `~/.neoagent/agent-data/` | Skills, memory, daily data |
|
|
57
60
|
|
|
58
|
-
Back up these paths before moving a server or doing manual
|
|
61
|
+
Back up these paths before moving a server or doing manual repairs.
|
package/docs/skills.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Skills
|
|
2
2
|
|
|
3
|
-
Skills are Markdown files that
|
|
3
|
+
Skills are Markdown files that instruct the agent on how to use a local capability or follow a multi-step workflow. They load at runtime from `~/.neoagent/agent-data/skills/`, so edits take effect without restarting the service.
|
|
4
4
|
|
|
5
5
|
## Built-in Skills
|
|
6
6
|
|
|
7
7
|
| Skill | Description |
|
|
8
8
|
|---|---|
|
|
9
|
-
| `browser.md` |
|
|
10
|
-
| `cli.md` |
|
|
11
|
-
| `files.md` | Read, write, and search files
|
|
12
|
-
| `memory.md` | Store and recall long-term
|
|
13
|
-
| `messaging.md` | Send
|
|
9
|
+
| `browser.md` | Web browsing and scraping with Puppeteer |
|
|
10
|
+
| `cli.md` | Shell commands in a persistent PTY terminal |
|
|
11
|
+
| `files.md` | Read, write, and search host files |
|
|
12
|
+
| `memory.md` | Store and recall long-term facts |
|
|
13
|
+
| `messaging.md` | Send via Telegram, WhatsApp, Discord, Slack, Matrix, Teams, Google Chat, or webhooks |
|
|
14
14
|
| `system-stats.md` | CPU, memory, and disk usage |
|
|
15
15
|
| `weather.md` | Current weather via wttr.in |
|
|
16
16
|
| `ip-info.md` | Public IP and geolocation |
|
|
@@ -21,16 +21,16 @@ Skills are Markdown files that teach the agent how to use local capabilities or
|
|
|
21
21
|
| `find-large-files.md` | Locate large files |
|
|
22
22
|
| `docker-status.md` | Docker container status |
|
|
23
23
|
| `tail-log.md` | Tail any log file |
|
|
24
|
-
| `news-hackernews.md` | Fetch Hacker News
|
|
24
|
+
| `news-hackernews.md` | Fetch top Hacker News stories |
|
|
25
25
|
| `qr-code.md` | Generate QR codes |
|
|
26
|
-
| `pdf-toolkit.md` | Inspect, extract, merge, split,
|
|
26
|
+
| `pdf-toolkit.md` | Inspect, extract, merge, split, compress PDFs |
|
|
27
27
|
| `git-summary.md` | Summarize git status, branches, commits, and diffs |
|
|
28
|
-
| `csv-toolkit.md` | Inspect and transform CSV or TSV
|
|
29
|
-
| `markdown-workbench.md` | Clean up, outline, and convert Markdown
|
|
28
|
+
| `csv-toolkit.md` | Inspect and transform CSV or TSV files |
|
|
29
|
+
| `markdown-workbench.md` | Clean up, outline, and convert Markdown documents |
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Creating a Custom Skill
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Add a Markdown file to `~/.neoagent/agent-data/skills/`:
|
|
34
34
|
|
|
35
35
|
```markdown
|
|
36
36
|
# My Skill Name
|
|
@@ -39,21 +39,21 @@ Brief description of what this skill does and when to use it.
|
|
|
39
39
|
|
|
40
40
|
## Usage
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
Step-by-step instructions or exact commands the agent should follow.
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
The agent reads all `.md` files in the skills directory on each
|
|
45
|
+
The agent reads all `.md` files in the skills directory on each turn. Keep skills focused. Include exact tool names or shell commands when precision matters. Don't store secrets in skill files.
|
|
46
|
+
|
|
47
|
+
**When to use a custom skill** — repeated workflows involving specific local paths, commands, or multi-step procedures. For connecting to third-party services, prefer official integrations or MCP tools instead.
|
|
46
48
|
|
|
47
49
|
## Skill Store
|
|
48
50
|
|
|
49
|
-
The **Skills** section
|
|
51
|
+
The **Skills** section in the UI includes a built-in catalog from `/api/store`. Skills install as Markdown files into the runtime skills directory — editable and removable after installation.
|
|
50
52
|
|
|
51
|
-
|
|
53
|
+
Catalog categories: system, network, info, document, data, and git helpers.
|
|
52
54
|
|
|
53
55
|
## MCP Tools
|
|
54
56
|
|
|
55
|
-
External tools
|
|
56
|
-
|
|
57
|
-
Use official integrations or structured MCP tools when they exist. They are usually safer and more reliable than browser automation or shell scraping.
|
|
57
|
+
External tools connect via the [Model Context Protocol](https://modelcontextprotocol.io). Configure MCP servers in **Settings → MCP**. Connected tools appear alongside built-in skills automatically.
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
Use official integrations or MCP tools when they exist — they are more reliable than browser automation or shell scraping and easier to audit.
|
package/docs/why-neoagent.md
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
# Why NeoAgent
|
|
2
2
|
|
|
3
|
-
NeoAgent is
|
|
3
|
+
NeoAgent is the right choice if you want a focused self-hosted agent with real Android device control, recordings, health data, and a practical operator UI. OpenClaw covers more platforms but is a different kind of product.
|
|
4
4
|
|
|
5
|
-
This comparison is based on the public [OpenClaw README](https://raw.githubusercontent.com/openclaw/openclaw/main/README.md)
|
|
5
|
+
This comparison is based on the public [OpenClaw README](https://raw.githubusercontent.com/openclaw/openclaw/main/README.md) as of April 7, 2026 and the current NeoAgent repository.
|
|
6
6
|
|
|
7
|
-
|
|
|
7
|
+
| | NeoAgent | OpenClaw |
|
|
8
8
|
|---|---|---|
|
|
9
|
-
| Best
|
|
10
|
-
| Setup
|
|
11
|
-
| Architecture | Self-hosted Node server, SQLite
|
|
12
|
-
| Android control | AI control
|
|
13
|
-
| Messaging
|
|
14
|
-
| Operator
|
|
15
|
-
| Credentials |
|
|
16
|
-
| Automation |
|
|
17
|
-
| Recovery |
|
|
9
|
+
| **Best for** | Personal automation server with Android control, recordings, and health data | Broad AI gateway with many channels, nodes, and companion surfaces |
|
|
10
|
+
| **Setup** | `npm install -g neoagent && neoagent install` | `openclaw onboard` guided setup |
|
|
11
|
+
| **Architecture** | Self-hosted Node server, SQLite, bundled web UI, server-side credentials | Gateway control plane with channels, optional nodes, wider platform surface |
|
|
12
|
+
| **Android control** | Full AI control: screenshots, UI dumps, tap, swipe, type, intent launch, APK install, `adb shell` | Android node capabilities via the node ecosystem |
|
|
13
|
+
| **Messaging** | 15+ platforms built-in — Telegram, WhatsApp, Discord, Slack, Signal, Matrix, iMessage, Teams, IRC, LINE, Mattermost, Telnyx Voice, webhook bridges | Larger channel/node ecosystem |
|
|
14
|
+
| **Operator UI** | Chat, runs, logs, tasks, skills, integrations, MCP, memory, devices, recordings, health, settings | Gateway, canvas, platform, node, and channel surfaces |
|
|
15
|
+
| **Credentials** | All secrets server-side; channel settings stored through the app | Broader config surface across gateway, channels, and nodes |
|
|
16
|
+
| **Automation** | Cron tasks, integration triggers, browser/CLI skills, MCP, subagents, recording search, health summaries, messaging delivery | Cron, webhooks, nodes, channel-specific actions |
|
|
17
|
+
| **Recovery** | `neoagent status`, `neoagent logs`, `neoagent update`, `neoagent fix` | Doctor-style diagnostics plus channel/node tooling |
|
|
18
18
|
|
|
19
|
-
Choose NeoAgent when you want the shortest path to a self-hosted proactive agent with a practical operator UI.
|
|
19
|
+
**Choose NeoAgent** when you want the shortest path to a self-hosted proactive agent with Android control and a practical operator UI.
|
|
20
|
+
|
|
21
|
+
**Choose OpenClaw** when you need maximum channel coverage, a gateway/node architecture, or the larger companion-app ecosystem.
|
|
@@ -40,6 +40,9 @@ async function resolveServerUrl(preferred) {
|
|
|
40
40
|
function websocketUrl(serverUrl, token) {
|
|
41
41
|
const url = new URL('/api/browser-extension/ws', serverUrl);
|
|
42
42
|
url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
43
|
+
// Token in the URL is required for the HTTP upgrade handshake; the browser
|
|
44
|
+
// WebSocket API does not support custom headers. Ensure the server's access
|
|
45
|
+
// log scrubs query strings on this path to avoid persisting the token.
|
|
43
46
|
url.searchParams.set('token', token);
|
|
44
47
|
return url.toString();
|
|
45
48
|
}
|
|
@@ -192,14 +195,19 @@ async function startPairing(serverUrl) {
|
|
|
192
195
|
});
|
|
193
196
|
const payload = await response.json().catch(() => ({}));
|
|
194
197
|
if (!response.ok) throw new Error(payload.error || `Pairing failed: ${response.status}`);
|
|
198
|
+
const approvalUrl = String(payload.approvalUrl || '');
|
|
199
|
+
const approvalParsed = (() => { try { return new URL(approvalUrl); } catch { return null; } })();
|
|
200
|
+
if (!approvalParsed || !['http:', 'https:'].includes(approvalParsed.protocol)) {
|
|
201
|
+
throw new Error('Invalid approval URL returned by server.');
|
|
202
|
+
}
|
|
195
203
|
await setStorage({
|
|
196
204
|
serverUrl: normalized,
|
|
197
205
|
pairingId: payload.pairingId,
|
|
198
206
|
pairingSecret: payload.pairingSecret,
|
|
199
|
-
approvalUrl
|
|
207
|
+
approvalUrl,
|
|
200
208
|
status: 'approval_pending',
|
|
201
209
|
});
|
|
202
|
-
await chrome.tabs.create({ url:
|
|
210
|
+
await chrome.tabs.create({ url: approvalUrl, active: true });
|
|
203
211
|
return payload;
|
|
204
212
|
}
|
|
205
213
|
|
|
@@ -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'
|