Commit Graph

11 Commits

Author SHA1 Message Date
JordanTheJet
483caeeba5 Target Gmail explicitly in EmailSendTool and add instrumented tests
Set intent package to com.google.android.gm to bypass app chooser,
update tool description to guide agent to tap Send via screen.read +
app.automate, and add 4 mock validation tests plus a real end-to-end
Gmail send test with Samsung chooser fallback handling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 13:59:16 -05:00
JordanTheJet
276dbcf78f Upgrade app automation for dating app control (swipe, read screen, etc.)
- Add AccessibilityBridge for bidirectional tool<->service communication
- Upgrade CellClawAccessibility: swipe gestures (left/right/up/down),
  screen reading with element bounds, find_element, wait_and_read
- AppAutomateTool now awaits results instead of fire-and-forget
- Add ScreenReadTool (screen.read) - read-only AUTO policy for
  reading foreground app UI elements and text
- Swipe gestures calibrated for card-swiping apps (60% screen width)
- All 3 E2E agent loop tests pass on Samsung Galaxy Z Flip

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 01:22:15 -05:00
JordanTheJet
b472e003f7 Add end-to-end agent loop tests that execute real tools on device
- browserSearchE2E: Gemini -> browser.search -> opens Chrome with Google search
- emailSendE2E: Gemini -> email.send -> opens email client with composed message
- clipboardWriteE2E: Gemini -> clipboard.write -> copies text to clipboard
- Full agent loop: user message -> AI thinking -> tool call -> tool execution -> response
- All 3 tests pass on Samsung Galaxy Z Flip (real device)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:26:47 -05:00
JordanTheJet
a5c3b37de6 Add browser search integration test for Gemini tool calling
- Test verifies Gemini calls browser.search with correct query params
- Query correctly contains boston and date keywords
- All 4 Gemini integration tests pass on phone + emulator

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:19:42 -05:00
JordanTheJet
5176c66934 Add email tool, Gemini integration tests, secure API key handling
- Add EmailSendTool (email.send) using Android ACTION_SENDTO intent
- Add Gemini integration tests (completion, tool use, streaming)
- Move API key from hardcoded test to BuildConfig via local.properties
- Update default Gemini model from 2.0-flash to 2.5-flash
- Add email.send to AutonomyPolicy defaults (ASK)
- Register EmailSendTool in AppModule DI
- Update unit tests for new model name

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 15:18:05 -05:00
JordanTheJet
8099a5635a Add multi-provider support (Anthropic, OpenAI, Gemini)
- Add GeminiProvider with Gemini API function calling support
- Add ProviderManager to handle provider selection and API key management
- Update AgentLoop to use ProviderManager instead of hardcoded Anthropic
- Redesign SetupScreen with provider selection cards (radio buttons)
- Update SettingsScreen with per-provider API key management
- Update DI module to provide all three providers
- Add unit tests for GeminiProvider and ProviderManager
- Tested on emulator and physical device (Samsung Galaxy Z Flip)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 12:51:26 -05:00
JordanTheJet
b8f2191cbf Update .gitignore to exclude images and env files
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 12:43:26 -05:00
JordanTheJet
c40bb58734 Add instrumented tests and expand unit test coverage (113 total)
Instrumented tests (38) run on Android emulator verifying:
- File tools: write, read, append, list, nested dirs, error handling
- Script execution: echo, pwd, date, pipes, id, timeouts
- Settings tool: battery, wifi, brightness queries
- Room database: message and fact DAOs, ConversationStore, SemanticMemory

Unit tests expanded with memory entity tests (75 total JVM tests).
All 113 tests pass with 0 failures.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 02:55:51 -05:00
JordanTheJet
04682e3498 Add unit test suite (68 tests across 12 test classes)
Tests cover ToolRegistry, SkillParser, AutonomyPolicy, TaskQueue,
ApprovalQueue, ToolResult, ToolParameters, ToolSchema, Messages,
StreamEvents, AgentState, and ApprovalPolicy models.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 14:24:16 -05:00
JordanTheJet
d191d60668 Fix compilation errors and add Gradle wrapper
- Fix SSE streaming: replace inline processSSE with readLine loop
  to allow suspend emit() calls inside the flow
- Remove @Serializable from CompletionRequest (ToolApiDefinition
  is not serializable)
- Fix LocationTool type inference for suspendCancellableCoroutine
- Add gradlew/gradlew.bat and gradle-wrapper.jar

Build: assembleDebug passes, APK generated (20.7MB)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-18 14:01:38 -05:00
JordanTheJet
e57292c25d Initial implementation of CellClaw autonomous AI phone assistant
Kotlin/Android app with full project scaffold:
- Agent loop with configurable autonomy (auto/ask/deny per tool)
- Anthropic + OpenAI provider with streaming SSE and tool use
- 24 native phone tools (SMS, calls, contacts, calendar, camera,
  location, files, scripts, sensors, app automation, etc.)
- Approval queue with biometric gate and notification actions
- Room/SQLite memory (conversation history + semantic facts)
- Foreground service with persistent notification
- AccessibilityService for app automation
- Broadcast receivers (SMS, phone state, boot, battery)
- Skills system with SKILL.md parser and 2 bundled skills
- Jetpack Compose Material 3 UI (chat, setup, settings, approvals, skills)
- Hilt DI, Android Keystore for API key encryption
- Min SDK 26, target SDK 35

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-18 13:05:06 -05:00