Commit Graph
76 Commits
Author SHA1 Message Date
somew1nd 972201bb4d refactor(explorer): split explorer into facade and phase modules 2026-09-01 21:39:17 -07:00
somew1nd 9cad5b690f fix(runtime): resolve liveness writeback and probe issues 2026-09-01 21:21:20 -07:00
somew1nd f24a6fd441 feat(checker): update verification defaults and persistence 2026-09-01 21:00:16 -07:00
somew1nd 17f734a473 merge(checker): integrate verification persistence 2026-09-01 20:57:10 -07:00
somew1nd 3145de181b feat(checker): persist verification findings across turns 2026-09-01 20:57:10 -07:00
somew1nd 4724e81741 merge(core): integrate routing and execution cleanup 2026-09-01 18:08:36 -07:00
somew1nd a4c28865f2 refactor(core): consolidate action and plan definitions 2026-09-01 18:07:45 -07:00
somew1nd 12c6d98aa5 merge(errors): integrate console and server exception handling cleanup 2026-09-01 17:58:28 -07:00
somew1nd c76c9bb7e8 refactor(errors): replace silent exception handling in console and server 2026-09-01 17:57:15 -07:00
somew1nd 98ee55f5d2 fix(memory): break transcript and flash compressor import cycle 2026-09-01 17:54:17 -07:00
somew1nd 0bcddbf1d7 merge(memory): integrate incremental transcript compaction 2026-09-01 17:47:16 -07:00
somew1nd f0a4045c49 docs(memory): add history module plans and reports 2026-09-01 17:46:56 -07:00
somew1nd 41ae386a3a feat(memory): add incremental transcript compaction 2026-09-01 17:46:44 -07:00
somew1nd 41deb48005 fix(cli): preserve invalid config when backup fails 2026-09-01 16:08:47 -07:00
somew1nd 8003cf39c2 merge(runtime): integrate trace store relocation 2026-09-01 15:59:35 -07:00
somew1nd 05459d040d refactor(runtime): relocate trace store and break dependency cycle 2026-09-01 15:58:50 -07:00
somew1nd e6c64412de merge(errors): integrate core exception handling cleanup 2026-09-01 15:55:22 -07:00
somew1nd 47e7cb6620 refactor(errors): replace silent exception handling in core packages 2026-09-01 15:54:49 -07:00
somew1nd 584bb2d09c refactor(device): retire remaining single-device state 2026-09-01 11:56:56 -07:00
somew1nd 5907a28e14 merge(runtime): reconcile task state and device cleanup 2026-09-01 11:56:17 -07:00
somew1nd 53e84a5145 merge(reliability): integrate classified retry handling 2026-09-01 11:52:29 -07:00
somew1nd 2acdeba8c5 feat(reliability): centralize retry failure classification 2026-09-01 11:51:29 -07:00
somew1nd 33c4a0d112 refactor(device): remove single-device state and test branches 2026-09-01 11:50:14 -07:00
somew1nd e9b821c0ec merge(runtime): integrate process and task state fixes 2026-09-01 11:39:56 -07:00
somew1nd 9cee112cd2 fix(runtime): unify process and task state handling 2026-09-01 11:35:23 -07:00
somew1nd 3cb3641b3b merge(core): integrate parallel architecture removal 2026-09-01 11:03:19 -07:00
somew1nd f68d4288e0 refactor(core): remove dead parallel agent architecture 2026-09-01 10:49:51 -07:00
somew1nd cbe8f4f0c6 feat: harden agent verification and runtime contracts
Introduce two-gate checker settlement, explicit graph visibility and checkpoints, structured LLM reliability, centralized action specifications, and corresponding tests and design documentation.
2026-08-31 20:42:24 -07:00
somew1nd ddfa420945 feat: enable remote SDK and resilient device orchestration 2026-08-30 00:41:07 -07:00
somew1nd 3cc711df51 Merge pull request #11 from google/feat/action-layer-concurrent-dispatch
feat: extract in-process MCP action layer, concurrent task dispatch, and spawn/reconcile hardening
2026-08-27 18:43:42 -07:00
weilinliu55 cbdca1497c feat: extract in-process MCP action layer, concurrent task dispatch, and spawn/reconcile hardening
- Extract device action execution into artemis/mcp action layer:
  typed ActionResult, capability manifest with startup validation,
  AdbActuator as the single physical implementation, in-memory
  ActionSession (replaces stdio subprocess MCP in validator), and
  McpActionExecutor preserving the legacy executor contract.
  adb_server keeps its external stdio/SSE surface unchanged and now
  reuses the actuator implementation; import-time side effects moved
  into configure_stdio_mode().
- Capability-gated prompt assembly (prompt_assembly.py): tool enums and
  teaching segments render per available backend tools; full-set output
  is byte-identical to the previous static text (locked by tests).
- Admin console task queue: serial worker replaced by a per-device
  concurrent dispatcher (ARTEMIS_CONCURRENCY_MODE=global restores
  serial semantics), per-session cancellation, strict device binding on
  enqueue, unified stdio piping with tee to trace stdout.log, and
  shutdown cleanup of all active runs. Fix _pid_exists exception order
  so PermissionError is treated as alive.
- mcp_server reliability: spawn watchdog kills runners stuck before
  interpreter startup and releases device reservations; task state
  reconcile uses psutil liveness, prefers runner-reported pids, and
  adds a 45s startup grace to stop false failure reports on Windows;
  conversation_id is now optional end-to-end; explicit device_serial is
  validated at submission.
- CLI install now writes ~/.claude/rules/artemis.md for Claude Code and
  migrates/removes the legacy CLAUDE.md injection block; ~/.claude.json
  is never rewritten when it fails to parse.
- Tests: Windows-portable stdio lifecycle and path assertions; new
  suites for action layer, prompt assembly, spawn watchdog, and task
  reconcile (895 passed, 3 skipped).
2026-08-27 18:25:27 -07:00
somew1nd 60312abbb0 fix(replay): unify step indexing, dual-index entity deduplication, and prevent step-4 start bug
- Backend: maintain _step_number_cache in DataEngine and include step_number in all step_updated SSE events (summary, thinking, execution result)
- Admin console: query unassigned trace step_ids in stepless_rows to prevent orphan traces from being lost
- Showcase UI: implement dual-indexed entity deduplication (by step_id and step_number) in extractStepReplayFrames to eliminate phantom ghost steps
- Showcase UI: filter visual screenshot steps before generating sequential 1-based frame numbers, preventing step-4 start and index shift bugs
- Showcase UI: add rawStepNumber and summary properties to StepReplayFrame
- Showcase UI: update FloatingVideoPlayerComponent session reset effect to only reset playback on sessionId change rather than on every stepFrames mutation
- Showcase UI: add stepSeekRequest signal and stepIndex parameter to AgentService.openVideoPlayer
- Unit tests: add Karma and Pytest unit tests verifying step 1 start, dual-indexing, and SSE step_number payloads
2026-08-27 11:03:47 -07:00
somew1nd 5f1ee18bc1 feat(core): consolidate config hub, unify daemon scheduling across all entrypoints, and fix step replay
- Unified configuration and paths under artemis.config as single source of truth
- Consolidated execution across CLI, SDK, MCP, and Admin Console to default to Artemis Daemon
- Fixed frontend step replay to preserve failure steps with proper sequential numbering
- Implemented task deduplication, debouncing, and multi-device lock isolation
- Added comprehensive end-to-end multi-port integration tests for live phone and emulator
2026-08-27 10:21:40 -07:00
somew1nd e984d17635 fix: isolate subprocess stdin and decouple startup to prevent MCP stdio deadlocks
- Set stdin=subprocess.DEVNULL across runtime, client, and utility subprocess calls to avoid hijacking the parent process's stdin.
- Run awake service initialization asynchronously on a daemon thread in MCP server startup.
- Redirect logger header printing to stderr to ensure stdio JSON-RPC purity.
- Add unit and lifecycle tests for MCP stdio protocol handshake and stdin isolation.
2026-08-26 23:26:10 -07:00
somew1nd 8fdecf23d7 feat: enhance daemon dispatching, device readiness fallback, and live streaming UI
- Admin Console & Task Queue: add cancellation, session startup progress endpoints, and support ingress metadata
- Diagnostics & Runtime: enhance ADB probe to prefer unlocked devices and synchronize with readiness engine
- MCP Server: dispatch tasks through Artemis Daemon scheduler with fallback to standalone runner, improve action overlays
- Showcase UI: improve session auto-selection with pinning support, render startup progress, and refine stream styling
- CLI & Makefile: expose server lifecycle commands (restart, stop, status)
- Configuration: ignore runtime server state file in .gitignore
2026-08-26 17:41:23 -07:00
somew1nd 57655266cc fix: resolve NameError by importing Any from typing in runtime, pipeline, and MCP servers 2026-08-26 16:03:56 -07:00
somew1nd c2c90a6378 feat: add multi-device concurrency, server lifecycle CLI, and unified execution stream
- Implement DevicePool and DeviceExecutionLock concurrency modes (per-device FIFO vs global serialization)
- Extend ArtemisClient SDK and CLI with explicit device targeting and concurrency strategy configuration
- Add server lifecycle management (artemis restart, stop, status) with cross-platform PID discovery
- Update MCP server tools to support multi-device dispatch, trace tagging, and per-device execution
- Enhance Showcase UI with step-by-step visual replay, playback speed controls, and device serial badges
- Add comprehensive unit test coverage and edge-case verification scripts
2026-08-26 15:53:14 -07:00
somew1nd a36a66ce6d feat: add step-by-step visual replay and harden process lifecycle
- UI: Implement dual-mode playback in FloatingVideoPlayer supporting video and step-by-step frame replay with scrub controls and auto-fallback
- Runtime: Prevent asyncio event loop hangs on Darwin and Linux by avoiding psutil.wait_procs on direct child processes
- Task Queue: Add worker exit watchdog and automatic recording recovery for completed or interrupted sessions
- Recording: Add ffmpeg ultrafast transcode fallback, shield recording finalization against cancellation, and handle on-the-fly MP4 conversion
- Docs: Polish README_CN styling and streamline flash runner agent prompt
2026-08-26 00:53:24 -07:00
somew1nd 06643e955b docs: streamline execution profiles and refocus roadmap
- Remove redundant head-to-head comparison section
- Simplify Flash vs. Pro profiles with precise latencies, benefits, and limitations
- Refocus roadmap on future milestones prioritizing Android Studio integration, followed by iOS
2026-08-25 21:21:42 -07:00
somew1nd bb16991f2c feat: harden video analysis and runtime resilience 2026-08-25 20:58:25 -07:00
somew1nd 5ada543a09 docs: standardize image embedding widths to 100% and streamline emoji usage 2026-08-25 17:09:10 -07:00
somew1nd ef5748c8f1 docs: remove live demo caption under demo gif in README 2026-08-25 17:04:08 -07:00
somew1nd c2ff9651cc docs: remove outer canvas padding from leaderboard to match architecture diagram 2026-08-25 17:02:50 -07:00
somew1nd 4f8a83ebd3 docs: use new asset path to bust GitHub camo image cache for leaderboard 2026-08-25 17:00:38 -07:00
somew1nd 4bf1160e5b docs: refresh AndroidWorld benchmark visual and streamline architecture overview in README 2026-08-25 16:58:44 -07:00
somew1nd ea3708a98f feat: implement robust multi-tier text input architecture and ADB diagnostics
- Android Text Input & IME Normalization:
  - Implement progressive 3-tier input architecture in AndroidAdbDriver and AndroidDeviceController:
    - Tier 1 (Primary): Zero-dependency clipboard injection + KEYCODE_PASTE (immune to IME Pinyin interception, full Unicode/Emoji support, preserves multiline formatting).
    - Tier 2 (Broadcast): Base64 broadcast injection when ADBKeyboard is active.
    - Tier 3 (Fallback): Native ADB physical keyevent fallback.
  - Add literal newline normalization (\r\n, \n, \r) to prevent JSON escape string corruption (e.g. '10086\n' -> '10086、n').
  - Add set_clipboard method to UIAutomatorClient without auxiliary APK requirements.

- Diagnostics & System Probes:
  - Add adb_keys diagnostics probe for ADB key auth checks.
  - Integrate diagnostics into CLI doctor command.

- Admin Console & Showcase UI:
  - Improve model service and system router in admin console.
  - Enhance workspace stream view and session state in showcase UI.
2026-08-24 16:48:45 -07:00
somew1nd 42b8988661 feat: add global device queue and readiness tracking 2026-08-24 14:34:17 -07:00
somew1nd a62ac4aef1 fix: finalize recordings before automatic replay 2026-08-23 13:06:19 -07:00
somew1nd 474e56ef8e feat: support orientation-aware recording and device wakefulness
Roll scrcpy recordings by device rotation and duration, and publish timeline manifests for playback and analysis.

Add seamless segmented playback in the showcase UI and configurable stay-awake strategies for Android automation.
2026-08-22 19:45:02 -07:00
somew1nd 160f43a74a docs: refresh banner and update tagline to 'Let AI assistants and test suites use real phones like a human' 2026-08-21 12:24:56 -07:00