Files
Sanchit Monga c4c2bb2529 Android Use agent update (#361)
* Add Android in-app benchmarking implementation prompt (iOS-parity spec)

* Add Android-parity in-app benchmarks implementation prompt

* Add core agent LLM and vision provider abstractions

- Introduced `AgentLLMProvider` interface for LLM reasoning, including methods for action decision-making and planning.
- Implemented `OnDeviceLLMProvider` for on-device LLM operations using the RunAnywhere SDK, supporting utility tool registration and model management.
- Added `VisionProvider` interface for screen analysis, with a `TextOnlyVisionProvider` fallback.
- Registered various utility tools (e.g., time, weather, battery level) to enhance agent capabilities.

These changes lay the groundwork for improved decision-making and context understanding in the agent's operations.

* cleanup

* Refactor build configuration and enhance VLM support

- Updated build.gradle.kts to use plugin aliases for better readability.
- Modified settings.gradle.kts to include specific content filters for Google and AndroidX repositories.
- Increased compileSdk and targetSdk versions to 35.
- Replaced local AAR dependencies with library references for RunAnywhere SDK and other dependencies.
- Implemented OnDeviceVisionProvider for local VLM model analysis, including model registration and loading.
- Enhanced AgentViewModel to manage VLM model state and loading.
- Added UI components for VLM model status and provider mode display.
- Removed obsolete local AAR files for RunAnywhere SDK components.
- Introduced a new ProviderBadge component to indicate the current provider mode in the UI.

* Add on-device LLM benchmarking documentation and enhance agent functionality

- Introduced ASSESSMENT.md for benchmarking study of four on-device LLM models on Samsung Galaxy S24.
- Updated README.md to reflect new features and architecture, emphasizing fully on-device AI capabilities.
- Added permissions and service declarations in AndroidManifest.xml for foreground service to maintain agent activity.
- Implemented AgentForegroundService to prevent process termination during background operation.
- Modified AgentViewModel to start and stop the foreground service appropriately.
- Enhanced ActionExecutor to support opening notes apps and setting alarms.
- Updated ActionHistory to provide a compact format for local models.
- Improved ScreenParser to include foreground package information for better context during agent operation.
- Adjusted AgentKernel to manage app navigation and pre-launch logic more effectively, ensuring smoother user experience.

* minor updates

* update

* updating assessment

* Add X Compose Shortcut Implementation and UI Enhancements

- Introduced a three-piece solution for X (Twitter) compose flow, utilizing deep links and foreground activity management to improve navigation speed and reliability.
- Enhanced AgentViewModel to manage live LLM streaming text and clipboard functionality for log exports.
- Updated AgentAccessibilityService to filter out unlabeled container classes, improving navigation accuracy.
- Implemented a new ThinkingPanel UI component to display streaming tokens during LLM reasoning.
- Enhanced ActionExecutor to support direct clicks on elements, bypassing gesture interceptors for improved interaction.
- Added structured logging for agent steps to facilitate better performance tracking and export capabilities.

* Add Approach 3 X compose flow and document live test results

Implemented fully-assisted X posting flow (Approach 3) with LFM2.5-1.2B:
- Restored xComposeMessage field to track compose state
- Extended extractTweetText() with Pattern 3: "post saying <text>" (no quotes needed)
- Restored openXCompose() deep link in preLaunchApp() for X goals
- Restored ComposerActivity + SINGLE_TOP in bringAppToForeground() to preserve compose during inference
- Restored findPostButtonIndex() quick-tap block for zero-LLM-step POST
- Kept X-FAB keyword FAB tap as fallback

Live test results documented in ASSESSMENT.md:
- Approach 1 (pure LLM): FAIL — 1.2B always picks index 0, stuck in nav drawer
- Approach 2 (keyword FAB): FAIL — opens compose correctly but compose destroyed during inference
- Approach 3 (fully assisted): PASS — tweet posted in ~20s, 0 LLM inference steps

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add X post demo mode with X-FAB + X-TYPE + X-POST flow and report

- X-TYPE block: auto-types tweet text into compose field when blank
- X-POST block: updated to check text is present before tapping POST
- findComposeTextFieldIndex(): finds [tap,edit] EditText in accessibility tree
- preLaunchApp(): always opens X home feed (no deep link) for visible navigation
- extractTweetText() Pattern 3: matches "post/tweet saying <text>" without quotes
- X_POST.md: full implementation report with live logcat trace and proof of tweet

Tweet posted live: "Hi from RunAnywhere Android agent" — @RunAnywhereAI, Feb 19 2026
27s execution time, 0 LLM inference calls, full navigation steps visible on screen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* adding stuff

---------

Co-authored-by: runanywhere <runanywhere@runanywheres-MacBook-Pro.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Siddhesh <siddheshsonar2377@gmail.com>
2026-02-19 17:37:57 -08:00

2.2 KiB

Description

Brief description of the changes made.

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Refactoring

Testing

  • Lint passes locally
  • Added/updated tests for changes

Platform-Specific Testing (check all that apply)

Swift SDK / iOS Sample:

  • Tested on iPhone (Simulator or Device)
  • Tested on iPad / Tablet
  • Tested on Mac (macOS target)

Kotlin SDK / Android Sample:

  • Tested on Android Phone (Emulator or Device)
  • Tested on Android Tablet

Flutter SDK / Flutter Sample:

  • Tested on iOS
  • Tested on Android

React Native SDK / React Native Sample:

  • Tested on iOS
  • Tested on Android

Playground:

  • Tested on target platform
  • Verified no regressions in existing Playground projects Web SDK / Web Sample:
  • Tested in Chrome (Desktop)
  • Tested in Firefox
  • Tested in Safari
  • WASM backends load (LlamaCpp + ONNX)
  • OPFS storage persistence verified (survives page refresh)
  • Settings persistence verified (localStorage)

Labels

Please add the appropriate label(s):

SDKs:

  • Swift SDK - Changes to Swift SDK (sdk/runanywhere-swift)
  • Kotlin SDK - Changes to Kotlin SDK (sdk/runanywhere-kotlin)
  • Flutter SDK - Changes to Flutter SDK (sdk/runanywhere-flutter)
  • React Native SDK - Changes to React Native SDK (sdk/runanywhere-react-native)
  • Web SDK - Changes to Web SDK (sdk/runanywhere-web)
  • Commons - Changes to shared native code (sdk/runanywhere-commons)

Sample Apps:

  • iOS Sample - Changes to iOS example app (examples/ios)
  • Android Sample - Changes to Android example app (examples/android)
  • Flutter Sample - Changes to Flutter example app (examples/flutter)
  • React Native Sample - Changes to React Native example app (examples/react-native)
  • Web Sample - Changes to Web example app (examples/web)

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Documentation updated (if needed)

Screenshots

Attach relevant UI screenshots for changes (if applicable):

  • Mobile (Phone)
  • Tablet / iPad
  • Desktop / Mac