Commit Graph

52 Commits

Author SHA1 Message Date
Michał Pierzchała fa1b0b7c8a docs: configure agent skill conventions (#871) 2026-06-25 11:02:37 +02:00
Michał Pierzchała 4142daa0c3 docs: update internal agent guidance (#789) 2026-06-12 14:58:18 +02:00
Michał Pierzchała c3d50f7a84 docs: add agent PR readiness checklist (#769) 2026-06-11 13:29:19 +02:00
Michał Pierzchała 5462d516d9 chore(daemon): takeover notice, dev state-dir pruning, session state-dir command surface (#754)
* chore(daemon): takeover notice, dev state-dir pruning, session state-dir command surface

Implements the three follow-ups from #737:

1. Print a one-line stderr notice when the client replaces a running
   daemon, stating identity and reason (version mismatch, code-signature
   mismatch, or unreachable). Best effort; never fails the command.

2. Add 'pnpm clean:daemon --prune-dev' to remove worktree-scoped state
   dirs under ~/.agent-device/dev/ that no live daemon owns (same
   pid/start-time liveness check as server-lifecycle) and that have been
   idle for 14+ days. Scoped dirs only; one line printed per removal.

3. Fold 'session state-dir' into the regular command surface: the
   session contract resolves it locally via the new
   client.sessions.stateDir(), the cli.ts pre-dispatch special case is
   removed, and the MCP session tool now exposes the state-dir action.

Closes #737

https://claude.ai/code/session_013WBrUjQ4WRxRkfVruALKX3

* docs: surface clean:daemon --prune-dev in AGENTS.md

Local agents discover daemon state-dir hygiene through AGENTS.md, not
the website docs, so document the prune flag next to the existing
worktree-scoped state-dir guidance.

https://claude.ai/code/session_013WBrUjQ4WRxRkfVruALKX3

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-11 07:41:34 +02:00
Michał Pierzchała 582710e01a docs: add agent tightening pass guidance (#746) 2026-06-10 13:38:19 +02:00
Michał Pierzchała a0522c7bcc docs: document issue label workflow (#742) 2026-06-10 13:00:34 +02:00
Michał Pierzchała 0f7187f543 fix: scope source daemon state by worktree (#719)
* fix: scope source daemon state by worktree

* docs: clarify worktree daemon state tradeoffs

* ci: harden Apple runner cache

* chore: keep daemon state helper internal

* ci: validate Apple runner cache restores

* ci: simplify Apple runner cache setup
2026-06-10 10:32:58 +02:00
Michał Pierzchała 39e4682592 refactor: deepen runner disposal (#714)
* refactor: deepen runner disposal

* docs: clarify PR descriptions
2026-06-09 15:07:16 +02:00
Michał Pierzchała 35f54a863c fix: resolve Maestro taps from regular snapshots (#709)
* fix: resolve Maestro taps from regular snapshots

* fix: tighten Maestro snapshot compatibility

* test: align Maestro snapshot freshness fixtures
2026-06-08 18:12:09 +02:00
Michał Pierzchała 86971990cb fix: scope runner diagnostics to sessions (#704) 2026-06-07 11:35:38 +02:00
Michał Pierzchała 76cee982ba fix: stabilize iOS runner navigation taps (#702)
* 0.16.14

* fix: stabilize iOS runner navigation taps

* fix: recover iOS runner after AX failures

* docs: clarify AX-unavailable snapshot recovery

* test: cover synthesized ios provider taps

* test: cover iOS runner AX failure paths

* fix: clarify sparse iOS AX recovery hint
2026-06-07 11:17:27 +02:00
Michał Pierzchała f2424f9d3a refactor: centralize daemon command registry (#693) 2026-06-05 18:34:01 +02:00
Michał Pierzchała 8e1f8a9f8f perf: lazy load daemon handlers and report bundle size (#608)
* perf: lazy load daemon handlers

* perf: thin command metadata paths

* refactor: isolate platform inventory loading

* refactor: trim lazy loading cleanup

* test: guard daemon routing metadata drift

* ci: report startup timing with size
2026-05-30 16:49:21 +02:00
Michał Pierzchała 819d7dc8aa feat: expose structured MCP command tools (#593)
* feat: expose semantic MCP tools

* docs: remove semantic mcp prd

* refactor: deepen semantic command surface

* refactor: add mcp execution seam

* refactor: deepen command grammar

* refactor: remove legacy command definitions

* refactor: collapse semantic cli wrappers

* refactor: remove local mcp placeholders

* refactor: derive semantic cli routing

* refactor: trim mcp status metadata

* refactor: derive semantic input contracts

* refactor: split semantic grammar modules

* refactor: derive batch input schema

* refactor: centralize cli command schema catalog

* refactor: share semantic cli output projections

* refactor: remove legacy cli output paths

* refactor: consolidate command interface surface

* docs: align command contract wording

* refactor: split command projection from cli grammar

* refactor: trim projection exports

* fix: satisfy fallow command contract audit

* refactor: structure public batch steps

* chore: clean batch architecture references

* fix: keep legacy cli batch steps working

* fix: serialize mcp batches

* chore: tighten command surface cleanup

* fix: serialize mcp stdin requests

* chore: keep mcp config out of command contracts

* fix: project structured batch targets

* chore: harden command input typing

* fix: project maestro backend for replay tests

* fix: preserve session mcp request options
2026-05-28 09:20:55 +02:00
Michał Pierzchała bbe7c06fb6 feat: auto-reverse Android localhost opens (#590)
* feat: auto-reverse Android localhost opens

* test: cover Android localhost reverse edge cases

* fix: reduce Android reverse error complexity

* docs: simplify Android Metro reverse guidance

* docs: prefer scripted SkillGym checks

* test: clarify Android Metro SkillGym plan
2026-05-26 10:44:51 +02:00
Michał Pierzchała b0e19c9d1e perf: improve recording and interaction flows (#563)
* perf: improve recording and interaction flows

* feat: add React Native overlay dismiss command

* test: cover RedBox overlay dismissal

* fix: simplify React Native overlay snapshot hint

* fix: address daemon and scroll review feedback

* fix: unblock ci after recording polish

* chore: refresh fallow health baseline

* test: stabilize android provider suites

* test: cover rn overlay provider command
2026-05-20 20:32:08 +02:00
Michał Pierzchała 59d28e8446 refactor: add provider-first device lab tests (#542)
* refactor: add provider-first device lab tests

* refactor: tighten device lab provider seams

* test: cover provider lab contracts

* docs: record device lab harness direction

* ci: run device lab integration tests

* test: move device lab under integration

* test: extract device lab helpers

* refactor: centralize apps filter defaults

* test: drop lab-covered unit tests

* test: fold platform happy paths into device lab

* test: reuse device lab helpers

* test: move device lab to in-process harness

* test: replace session handler cases with device lab

* test: harden device lab scenario contracts

* docs: define unit test retention policy

* test: expand provider device lab coverage

* test: harden provider device lab coverage

* test: cover manifest install and runner session contracts

* chore: remove unused provider cleanup code

* test: split android find device lab scenario

* test: track provider lab architecture progress

* test: clarify provider lab roadmap progress

* test: advance provider lab session coverage

* test: move menubar click routing to device lab

* test: move menubar snapshots to device lab

* refactor: centralize screenshot flag plumbing

* refactor: colocate screenshot flag metadata

* test: cover all public commands in device lab

* test: move macos wait success to device lab

* test: drop redundant perf and diff units

* test: move push payload paths to device lab

* test: move network parsing to device lab

* test: move log cleanup to device lab

* test: move log restart and boot to device lab

* test: move ios physical boot to device lab

* test: cover perf startup in device lab

* test: extract android and ios device lab worlds

* test: trim device lab world surface

* test: split snapshot capture unit coverage

* test: deepen device lab coverage and trim handler units

* test: clean up device lab migration scaffolding

* test: report device lab public command coverage

* refactor: make Apple provider seams semantic

* refactor: tighten device inventory and Linux provider seams

* refactor: tighten request provider scoping

* refactor: add semantic macos host provider

* test: broaden device lab find coverage

* test: cover workflow flags in device lab

* refactor: promote linux input provider seam

* test: clarify device lab flag coverage

* test: classify snapshot force-full progress

* test: enforce device lab progress in ci

* test: stabilize device lab ci

* test: move packaged metro smoke to integration

* test: drop stale provider seam coverage

* test: harden provider scope regression coverage

* refactor: remove stale platform barrels

* refactor: keep linux clipboard and screenshots semantic

* refactor: move macos host tools behind provider

* fix: honor remote artifact output paths

* test: deepen runtime coverage for daemon and runner paths

* test: share loopback test helpers

* refactor: make daemon runtime importable

* fix: honor replay target metadata

* chore: tighten final device lab quality gates

* test: share device lab setup helpers

* test: remove generic apple lab fallback

* test: deduplicate device lab helpers

* chore: tighten fallow duplication signal

* refactor: share apple diagnostic helpers

* fix: detect active android ime during fill verification

* test: consolidate provider-backed integration suite

* ci: fix fallow and iOS smoke setup

* chore: consolidate cleanup after ci fixes

* test: split vitest unit and integration projects

* docs: mention MCP discovery metadata

* docs: add agent skills context pointers

* fix: close provider recording coverage gaps

* fix: restore mcp compatibility smoke

* test: cover provider edge regressions

* test: consolidate loopback helpers

* docs: remove stale provider routing reference

* fix: harden final provider review issues

* chore: defer mcp cleanup from provider refactor
2026-05-18 14:50:52 +02:00
Michał Pierzchała 5c6c89e765 docs: update PR guidance (#550) 2026-05-15 19:01:32 +02:00
Michał Pierzchała c1550721ce fix: collapse Android snapshot row noise (#545)
* fix: collapse Android snapshot row noise

* docs: clarify agent-facing snapshot text

* fix: preserve semantics when collapsing Android snapshots

* fix: trim redundant Android collapse hints

* fix: collapse passive Android duplicate children

* refactor: drop unused Android snapshot hint code

* docs: clarify Android Metro verification guidance

* test: cover Android Metro reverse planning

* test: fix codex skillgym runner

* fix: satisfy fallow snapshot checks

* docs: clarify PR validation guidance
2026-05-15 18:52:11 +02:00
Michał Pierzchała fceaab9525 refactor: clarify command architecture (#512) 2026-05-13 19:53:36 +02:00
Michał Pierzchała 274eeb5de8 refactor: route process spawning through exec helpers (#504) 2026-05-13 13:05:25 +02:00
Michał Pierzchała 8a1e195599 docs: trim stale internal docs (#498) 2026-05-12 10:31:27 +02:00
Michał Pierzchała 25d72895c5 feat: add MCP discovery router (#494) 2026-05-11 17:28:04 +02:00
Michał Pierzchała f7c8f451ed build: upgrade skillgym to 0.6.0 (#473)
* build: upgrade skillgym to 0.6.0

* test: raise skillgym parallel cap

* test: use skillgym command assertions

* test: use structured skillgym command matchers

* test: rely on skillgym default parallel cap

* test: accept bare planned commands

* test: run skillgym cases in parallel
2026-04-29 14:38:01 -04:00
Michał Pierzchała bbb1d363c2 fix: handle iOS keyboard Done dismiss controls (#469) 2026-04-28 21:20:09 -04:00
Michał Pierzchała 6c368bf792 docs: update agent-device guidance (#467) 2026-04-28 17:07:33 -04:00
Michał Pierzchała ffd472a5bf feat: expose typed client command methods (#380) 2026-04-11 16:24:16 +02:00
Michał Pierzchała 98dc1c7def refactor: extract shared test utilities and remove redundant assertions (#382)
* Remove test assertions redundant with TypeScript static analysis

Drop assertions that merely verify unset optional properties are
undefined (a JavaScript language guarantee) and a second test block
whose only runtime value was re-checking literals just assigned to
typed variables. TypeScript's compiler already validates that these
object literals conform to the declared union types.

* fix: remove unused descriptor variable to fix noUnusedLocals

* refactor: extract shared test utilities from duplicated patterns

Introduce src/__tests__/test-utils/ with reusable device fixtures,
session factories, store factory, snapshot builders, and mocked
binary helpers. Migrate 27 test files to use these shared utilities,
eliminating duplicated DeviceInfo constants, makeSession/makeStore
helpers, snapshot node builders, and withMockedAdb/withMockedXcrun
across core, daemon, and handler tests.

Add AGENTS.md guidance to check test-utils before writing new tests.

* fix: restore public Metro type contract coverage with satisfies fixtures
2026-04-11 14:21:15 +02:00
Michał Pierzchała a48eb96336 docs: clarify agent runtime and preflight guidance (#381) 2026-04-11 13:02:55 +02:00
Michał Pierzchała cf34583f47 fix: make Android snapshot freshness recovery internal (#335)
* feat: add --wait-stable for Android AX tree and --first/--last for find

Address the #1 token efficiency issue on Android: stale accessibility
trees after navigation. `snapshot --wait-stable <ms>` polls until two
consecutive uiautomator dumps match (tree stabilized) or the timeout
expires, eliminating retry loops caused by AX lag after screen transitions.

Also adds `find --first` / `find --last` flags to disambiguate when
multiple elements match, avoiding the fallback to raw snapshot +
coordinate taps that burned 4-6 extra tool calls.

https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC

* cleanup: simplify find disambiguation and tighten flag descriptions

- Use consistent array reassignment for --first/--last instead of
  .length mutation
- Inline FIND_DISAMBIGUATE_FLAGS (only 2 entries, no reuse)
- Shorten --wait-stable usage description

https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC

* docs: add flag plumbing checklist and --wait-stable/--first/--last guidance

Add a 7-step checklist to AGENTS.md for adding new CLI flags — this was
the main non-obvious cost in the implementation (7 files for one flag).

Update exploration skill to recommend --wait-stable for Android AX
staleness recovery and --first/--last for ambiguous find matches.

https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC

* docs: improve skill clarity for weaker models

- Split "Most common mistake" into three labeled subsections (stale
  refs, Android AX lag, React Native overlays) so each is scannable
  independently
- Convert Android AX recovery from prose into a numbered list
- Add --wait-stable to debugging.md for consistency with exploration.md
- Replace vague "meaningful UI changes" with concrete triggers
- Tighten QA recovery sentence that was getting unwieldy

https://claude.ai/code/session_01FzX5t9qATyT9iWnYjssShC

* fix: make Android snapshot freshness recovery internal

* fix: tighten Android freshness baselines

* docs: clarify Android freshness tradeoffs

* docs: clarify empty interactive freshness warning

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-01 14:22:39 +02:00
Michał Pierzchała 7a5e1dca75 refactor: P3 polish — Interactor type safety, error response builder, OXC (#316)
* refactor: polish improvements from codebase review (P3)

- Export Interactor type and add `satisfies Interactor` to both return
  objects in getInteractor() for compile-time completeness checking
- Create errorResponse/successResponse builder in handlers/response.ts
  and adopt it in 5 representative handler files (find, record-trace,
  interaction-press, session-deploy, snapshot-wait)
- Add ESLint with typescript-eslint, fix unused imports and trivial
  lint issues, configure rules to warn for stylistic patterns

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: complete P3 items — consolidate runner files, document macOS exports, standardize dispatch

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address P3 review feedback — remove invalid ESLint rules, dead code, unused export

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: replace eslint and prettier with oxc

* chore: tighten oxc config and upgrade typescript

* refactor: extract ios runner contract helpers

* docs: tighten agent guidance and add check scripts

* fix: resolve post-rebase validation issues

* fix: remove shell interpolation from metro launcher

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:43:24 +02:00
Michał Pierzchała 86674d2109 docs: clarify commit and PR title prefixes for agents (#309)
* docs: clarify commit and PR title prefixes for agents

* docs: default agents to ready-for-review PRs
2026-03-27 18:05:12 +01:00
Michał Pierzchała 90b8544c75 feat: improve cli batch output and acknowledgments (#280)
* feat: improve cli batch output and acknowledgments

* docs: clarify skill guidance for cheaper models

* fix: move success messages into command responses

* refactor: add shared success message helpers

* refactor: address PR review follow-ups

* refactor: reuse daemon success payloads
2026-03-27 10:34:31 +01:00
Michał Pierzchała bb8d9ddeb8 docs: restructure agent-device skill docs (#260)
* docs: restructure agent-device skill docs

* docs: keep agent-device references grouped

* docs: clarify batch use in verification

* docs: restore skill operational detail

* docs: add qa loop for acceptance criteria

* docs: clarify qa modes in skill router

* docs: improve skill mental model wording

* docs: simplify skill router labels

* docs: add accessibility audit guidance

* docs: update iOS simulator example device

* docs: clarify follow-up routing after session open

* docs: tighten session follow-up rule
2026-03-25 16:01:03 +01:00
Michał Pierzchała 9e1991daf6 feat: add apple-family macOS desktop support (#246)
* feat: add apple-family macos desktop support

* feat: extend macos desktop command support

* fix: stabilize CI for macos runner build

* fix: harden macos app resolution

* fix: tighten apple-family session routing

* fix: align macos log capabilities

* fix: support macos wait text

* fix: make iOS session refresh test host-agnostic
2026-03-23 10:22:55 +01:00
Michał Pierzchała 2be4de0a75 chore: prettier 2026-03-17 18:18:53 +01:00
Michał Pierzchała b6b7c6228a refactor: split session replay helpers into focused modules (#153) 2026-03-03 14:41:35 +01:00
Michał Pierzchała 1854271086 chore: streamline AGENTS onboarding and testing matrix (#107) 2026-02-22 10:45:44 +01:00
Michał Pierzchała e638e0ac60 feat: add full session log coverage and diagnostics workflows (#106)
* feat: add full session log coverage with doctor and marker tooling

* chore: split logs skill guidance into reference doc
2026-02-22 10:35:41 +01:00
Michał Pierzchała 44c966b4b4 feat: switch CLI long-press command to longpress (#80)
* fix: use longpress as sole CLI command and sync docs

* fix: keep long-press as hidden longpress alias
2026-02-20 12:51:01 +01:00
Michał Pierzchała feeee5e414 feat: add unified node diagnostics and error normalization (#73)
* feat: add unified node diagnostics and error normalization

* chore: clarify diagnostics session scope and retry logging docs

* chore: simplify and de-stale AGENTS guidance

* chore: add diagnostics context for settings actions
2026-02-18 19:40:45 +01:00
Michał Pierzchała 2f64e845b0 feat: iOS device deep link support and web links (#66)
* feat: add iOS device URL session fallback behavior

* chore: trim PR branch naming note

* docs: remove simulator/device support phrasing

* feat: unify iOS deep link behavior across simulator and device

* feat: support iOS open <app> <url> flow

* fix: validate iOS open app+url argument shape

* docs: remove redundant iOS deep-link note
2026-02-16 20:35:00 +01:00
Michał Pierzchała bb23711d10 docs: simplify and reconcile AGENTS guide (#35) 2026-02-09 21:20:59 +01:00
Michał Pierzchała 1ecbec9012 feat: replay --save-script for self-updating e2e tests; add it assertions; add DSL with selectors (#24)
* feat:  for self-healing e2e tests;  assertions

* rework ad scripts
2026-02-09 11:01:19 +01:00
Michał Pierzchała 9a3570fa1c feat: Daemon modularization + capability-gated command routing + CI/test pipeline (#20)
* feat: Daemon modularization + capability-gated command routing + CI/test pipeline updates

* update android test

* fix arch

* no serial

* fixup tests locally; update runner on CI

* increase timeout

* drop unnecessary node build
2026-02-08 15:20:59 +01:00
Michał Pierzchała d8440a6645 fix: make fill clear input and progressively fill the input (#17)
* fix: make fill clear input and progressively fill the input

* fixup ios

* improve text fill reliability
2026-02-06 12:16:20 +01:00
Michał Pierzchała 460886f714 document missing device iOS support; fix missing swift 2026-02-03 20:03:15 +01:00
Michał Pierzchała 2b8b936186 feat: appstate and apps --metadata 2026-02-03 16:10:21 +01:00
Michał Pierzchała ca88d60bbf feat: add hybrid backend for speed and correctness 2026-02-03 08:55:37 +01:00
Michał Pierzchała 0f90c61e7c remove rect; adjust error messages 2026-02-02 14:06:11 +01:00