feat(planner): add execution context to prompts
Tests / Test passed: 977

This commit is contained in:
2026-07-16 10:25:20 +08:00
parent 240b7be7b8
commit 358f4623ba
9 changed files with 159 additions and 3 deletions
+19 -1
View File
@@ -46,9 +46,11 @@ class NarrowSignaturePlanner(Planner):
class ScreenshotRecordingPlanner(Planner):
def __init__(self) -> None:
self.screenshots: list[bytes | None] = []
self.device_platforms: list[str | None] = []
def plan(self, *, goal, scene, context, screenshot=None):
self.screenshots.append(screenshot)
self.device_platforms.append(context.device_platform)
if context.step_results:
return []
return [PlannedStep(action="tap", description="tap")]
@@ -69,7 +71,9 @@ def _scene() -> Scene:
)
def _runner(*, planner=None, planner_config=None, observer=None) -> TaskRunner:
def _runner(
*, planner=None, planner_config=None, observer=None, device_platform_provider=None
) -> TaskRunner:
return TaskRunner(
planner=planner,
planner_config=planner_config,
@@ -80,6 +84,7 @@ def _runner(*, planner=None, planner_config=None, observer=None) -> TaskRunner:
config=TaskRunnerConfig(max_steps=5),
observer=observer or (lambda device_id: _scene()),
screenshot_provider=lambda device_id: PNG_10X20,
device_platform_provider=device_platform_provider,
)
@@ -126,6 +131,19 @@ def test_task_runner_passes_screenshot_to_planner_that_declares_it() -> None:
assert planner.screenshots == [PNG_10X20, PNG_10X20]
def test_task_runner_passes_configured_device_platform_to_planner_context() -> None:
planner = ScreenshotRecordingPlanner()
runner = _runner(
planner=planner,
device_platform_provider=lambda device_id: "ios",
)
result = runner.run(Task(goal="inspect", device_id="phone"))
assert result.status == "completed"
assert planner.device_platforms == ["ios", "ios"]
def test_task_runner_default_planner_is_stub_when_ai_planner_disabled() -> None:
runner = _runner(planner=None, planner_config=PlannerConfig(enabled=False))