Files
agentic-mobile-control/pyproject.toml
T
q792602257 41006b098a
Tests / Test apps.device-host-agent.tests.test_e2e.test_public_sdk_reports_fake_device_success_and_runtime_failure failed
feat(perception): sample OCR text foreground/background colors
PaddleOCR itself returns no color info, only text/bounds/confidence.
Add pixel-level post-processing in perception/ocr.py: crop the
screenshot to each OCR box, split pixels into two luminance clusters
via Otsu threshold, and treat the minority cluster as the text stroke
(foreground) and the majority as the background. New
SceneElement.foreground_color/background_color fields ("#rrggbb",
None when not OCR-sourced or sampling fails) round-trip through
to_dict/from_dict alongside the existing accessibility-state fields.
Planner system prompt documents the new fields as a secondary signal.

pillow is promoted from an implicit paddleocr transitive dependency to
an explicit direct dependency since perception/ocr.py now imports PIL
directly; uv.lock re-resolved with no version change (already locked
at 12.3.0).
2026-07-15 20:58:47 +08:00

61 lines
1.3 KiB
TOML

[project]
name = "device-agent-runtime"
version = "0.1.0"
description = "Device-agnostic runtime for LLM-driven automation, with iPhone/WDA as the first driver."
requires-python = ">=3.13,<3.14"
dependencies = [
"anthropic>=0.69.0",
"Appium-Python-Client>=5.1.1",
"httpx>=0.27.0",
"mcp>=1.27,<2",
"openai>=1.0.0",
"paddlepaddle>=3.0.0,<3.3.0",
"paddleocr>=3.0.0",
"pillow>=12.0.0",
]
[build-system]
requires = ["setuptools>=69"]
build-backend = "setuptools.build_meta"
[dependency-groups]
dev = [
"pytest>=8.3.0",
]
[tool.uv]
# Aliyun PyPI mirror for CN networks. Override locally with UV_INDEX_URL
# (e.g. `UV_INDEX_URL=https://pypi.org/simple uv sync`).
index-url = "https://mirrors.aliyun.com/pypi/simple"
[tool.uv.workspace]
members = [
"apps/cloud-api",
"apps/device-host-agent",
"packages/cloud-platform",
]
[tool.setuptools.packages.find]
include = [
"agents*",
"api*",
"core*",
"device*",
"driver*",
"perception*",
"runtime*",
"semantic*",
"skills_learning*",
"storage*",
"tools*",
"world*",
"workflow*",
]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-ra --import-mode=importlib"
markers = [
"integration: tests requiring external hardware or services",
]