483 Commits

Author SHA1 Message Date
Michał Pierzchała af73a101f3 0.14.3 v0.14.3 2026-04-29 19:24:14 -04:00
Michał Pierzchała fea7a5b73f feat: expose daemon embedding and Android ADB APIs (#480) 2026-04-29 19:18:17 -04:00
Michał Pierzchała 72ba612e83 fix: centralize Android adb execution (#478) 2026-04-29 18:25:21 -04:00
Michał Pierzchała 0c7e48d7d5 feat: add Android frame health perf metrics (#474) 2026-04-29 16:56:37 -04: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 dab81673ee 0.14.2 v0.14.2 2026-04-29 10:48:55 -04:00
Michał Pierzchała 6a2bf9f626 feat: export batch orchestration helpers (#472) 2026-04-29 10:48:17 -04:00
Michał Pierzchała a9e8d902dd 0.14.1 v0.14.1 2026-04-28 21:20:23 -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 3fee9d6d86 fix: cache Android snapshot helper installs (#470) 2026-04-28 18:29:10 -04:00
Michał Pierzchała 6c368bf792 docs: update agent-device guidance (#467) 2026-04-28 17:07:33 -04:00
Michał Pierzchała 2c73e39b01 perf: cache app resolution (#466) 2026-04-28 17:06:46 -04:00
Michał Pierzchała 999b475126 fix: resolve security alerts (#464) 2026-04-28 16:56:18 -04:00
Michał Pierzchała 8301f824f6 perf: cache safe device hot paths (#463) 2026-04-28 16:55:19 -04:00
Michał Pierzchała 4f4bf7b021 perf: cache successful device readiness checks (#465) 2026-04-28 16:50:58 -04:00
Michał Pierzchała 994ee78165 fix: avoid killing stopped ios runner (#460) 2026-04-28 15:49:46 -04:00
Michał Pierzchała d1a764105f chore: update version guidance to >=0.14.0 2026-04-28 14:40:28 -04:00
Michał Pierzchała 60bbc5a6f9 0.14.0 v0.14.0 2026-04-28 14:37:14 -04:00
Michał Pierzchała 140fe338c2 docs: replace bulky skills with versioned CLI help (#352)
* docs: move agent guidance into help workflows

* test: address skill help review feedback

* docs: surface agent workflow in top-level help

* docs: strengthen dogfood help workflow

* docs: improve react devtools performance routing

* test: thin skillgym prompt

* docs: gate skills on help topic version

* test: stabilize thin help skillgym

* docs: restore dogfood QA guidance

* test: cover truncated text scoped snapshots

* docs: clarify remote help wording

* test: cover rn overlays and expo launch guidance

* test: cover expo launch after app lookup miss

* test: refine rn warning overlay workflow

* docs: restore react devtools advanced guidance

* test: cover restored agent guidance gaps

* test: cover device workflow edge cases

* docs: clarify agent-device install guidance

* docs: route known limitations through help

* docs: clarify bootstrap help for small models

* docs: tighten debug workflow guidance

* docs: remove local test note from workflow help
2026-04-28 14:14:55 -04:00
Michał Pierzchała fcabdc9218 docs: make agentic workflows a README heading (#459)
* docs: make agentic workflows a heading

* docs: rename agentic workflows heading
2026-04-28 12:35:36 -04:00
Michał Pierzchała 2b23d69a70 docs: refresh README positioning (#458)
* docs: refresh README positioning

* docs: simplify README scan path

* docs: restore react devtools version marker

* docs: link EAS workflow template

* docs: add practical README quickstart

* test: decouple README from react devtools pin

* docs: show screenshot evidence in README flows

* docs: clarify agent-first README value

* docs: refocus README top section

* docs: clarify agentic workflows wording

* docs: refine snapshot action wording

* docs: sharpen README workflow examples

* docs: remove workflow recipes from README

* docs: clarify README run locations

* docs: polish README review feedback

* docs: move capabilities before internals

* docs: tighten final README copy
2026-04-27 21:18:24 -04:00
Michał Pierzchała 5260ac8edd fix: harden Node runtime cleanup (#457)
* fix: harden node runtime cleanup

* fix: propagate command cancellation

* fix: address runtime cleanup review

* fix: close partial artifact writes before cleanup
2026-04-27 17:19:08 -04:00
Michał Pierzchała d77a9211ab feat: add Android snapshot helper (#454)
* feat: add android snapshot helper

* fix: harden android snapshot helper packaging

* fix: harden android xml attribute parsing

* fix: capture android helper window roots

* fix: validate android helper install args

* fix: harden android helper manifest and traversal

* refactor: drop unused helper timeout parameter

* feat: bundle android snapshot helper in npm package

* feat: enable bundled android snapshot helper by default

* refactor: simplify android snapshot helper resolution

* fix: harden android snapshot helper artifacts

* refactor: split android snapshot helper modules

* fix: use type-only snapshot helper imports
2026-04-27 16:01:37 -04:00
Michał Pierzchała 83042cc495 fix: preserve scoped Android snapshot refs (#456) 2026-04-27 14:41:30 -04:00
Michał Pierzchała 7c5b7670c8 feat: add skillgym tests (#453) 2026-04-26 20:49:59 -04:00
Michał Pierzchała 40fe5e23cc fix: improve cloud remote auth UX (#452) 2026-04-26 18:42:45 -04:00
Michał Pierzchała 5a3cf94343 refactor: reduce fallow baseline noise (#451)
* refactor: reduce fallow baseline noise

* fix: guard snapshot role lookup
2026-04-26 16:48:51 -04:00
Michał Pierzchała 8be5fa21a2 test: deduplicate CLI capture helpers (#450) 2026-04-26 15:13:20 -04:00
Michał Pierzchała f07e82e308 chore: add fallow quality gate (#449)
* chore: add fallow quality gate

* fix: refresh pnpm lockfile
2026-04-26 13:53:35 -04:00
Michał Pierzchała d1f5d919a8 0.13.3 v0.13.3 2026-04-26 12:11:47 -04:00
Michał Pierzchała 2e2b9af8c3 chore: drop hosted runtime entrypoints (#448) 2026-04-26 12:02:13 -04:00
Michał Pierzchała 53750084a7 refactor: finish companion tunnel naming (#446) 2026-04-26 11:42:30 -04:00
Michał Pierzchała d8c058eaf5 0.13.2 v0.13.2 2026-04-25 20:31:45 -04:00
Michał Pierzchała 48264caafa refactor: extract companion tunnel core (#442) 2026-04-25 20:31:21 -04:00
Michał Pierzchała adf1d06afc refactor: avoid duplicate packet metadata (#445) 2026-04-25 20:31:12 -04:00
Michał Pierzchała f926d2c9e1 feat: add cloud remote auth flow (#443) 2026-04-25 20:25:55 -04:00
Michał Pierzchała 3645479454 feat: export observability helpers (#444) 2026-04-25 20:24:01 -04:00
Michał Pierzchała 21d648f94a 0.13.1 v0.13.1 2026-04-25 19:31:14 -04:00
Michał Pierzchała 5cea4dd0b1 feat: pass through GitHub Actions artifact install sources (#437) 2026-04-25 19:30:51 -04:00
Michał Pierzchała 4ddd29cb5c feat: add Metro reload command (#440) 2026-04-25 19:30:24 -04:00
Michał Pierzchała 6c7e8323e1 fix: support remote Android React DevTools tunnel (#438)
* 0.13.0

* fix: support remote android react devtools tunnel
2026-04-25 19:30:12 -04:00
Aziz Becha 18cbc6ced0 fix: use sh fences for .ad scripts in replay-e2e docs (#436)
Shiki's default bundle has no `ad` grammar, so rspress build failed on
three code fences in replay-e2e.md. Aligns them with the rest of the
file, which already uses ```sh for .ad script content.
2026-04-25 16:37:08 -04:00
Michał Pierzchała b0813cad84 feat: add react devtools passthrough (#435)
* feat: add react devtools passthrough

* docs: clarify react devtools passthrough

* fix: preserve react devtools global flags

* docs: add react devtools validation guidance

* docs: simplify react devtools validation notes
2026-04-24 18:54:14 -04:00
Kacper Mikołajczak 2062bffc64 feat: parametrise .ad replay scripts (#433)
* feat: parametrise .ad replay scripts

Support ${VAR} substitution with env header directives and CLI -e
overrides so flows can be reused across app variants, environments,
and devices without duplicating the script.

Precedence (high->low): CLI -e > AD_* shell env > file-local env >
built-ins (AD_PLATFORM, AD_SESSION, AD_FILENAME, AD_DEVICE,
AD_ARTIFACTS). Supports ${VAR:-default} fallback, \${ escape, and
fails with file:line on unresolved vars.

* refactor: harden .ad replay parametrisation

Tighten the parametrisation surface introduced in the feat commit after
an internal review pass:

- Reserve the AD_* namespace for built-ins. User env (file env, CLI -e,
  shell AD_VAR_*) can no longer define AD_* keys, which closes a built-in
  shadowing vector (e.g. AD_VAR_AD_SESSION).
- Change the shell-env prefix from AD_* to AD_VAR_* so unrelated CI
  secrets that happen to start with AD_ (AD_TOKEN, AD_SECRET_KEY) are
  not auto-imported into replay scripts.
- Extend the replay -u guard to also reject scripts with \${VAR}
  substitutions in any action, not just those with env directives, so
  the writer never silently drops substitutions on heal-rewrite.
- Reword DX-unfriendly regex errors ("must match /^[A-Z_]...$/" ->
  "must be uppercase letters, digits, and underscores, e.g. APP_ID").
- Docs rewrite with precedence table, three recipes, fallback/escape
  examples, and a Notes block covering replay -u limitation, remote
  daemon caveat, no nested fallback, and loud typo behaviour.
- Additional unit tests: namespace reservation on every path, shell
  prefix migration, \${VAR} round-trip preservation through
  writeReplayScript, green-path integration test with a fake invoke.

* fix: collect .ad replay shell env on the CLI, not the daemon

Review feedback (https://github.com/callstackincubator/agent-device/pull/433#discussion_r3130695225):
the daemon was reading AD_VAR_* from its own process.env, which meant
"AD_VAR_K=V agent-device replay" only worked if V was set when the
daemon started, and never worked for remote daemons.

The client now filters process.env for AD_VAR_* at request time and
ships the result as replayShellEnv on the DaemonRequest flags. The
daemon prefers the request value when present and falls back to its
own process.env for direct-daemon callers (internal tests).

Adds two integration tests pinning both paths and updates the docs
Notes block to reflect the new behaviour.

* fix: thread per-attempt artifacts dir into AD_ARTIFACTS under test

Review feedback (https://github.com/callstackincubator/agent-device/pull/433#discussion_r3130695235):
AD_ARTIFACTS is documented as available under "agent-device test", but
buildReplayBuiltinVars was only reading the raw flags.artifactsDir.
Under the default artifacts layout the flag is unset and \${AD_ARTIFACTS}
failed; when set with --artifacts-dir it pointed at the suite root, not
the resolved per-attempt directory the test runner actually writes to.

Plumb the attempt-level artifacts dir from session-test.ts through the
runReplay callback (via runReplayTestAttempt) down into the nested
replay request's flags.artifactsDir. The daemon side is unchanged -
buildReplayBuiltinVars just now sees the right value.

Extracts the nested-request flag merge into a testable helper
(buildNestedReplayFlags) to close the coverage gap between the test
harness and the replay runtime.

* refactor: DRY .ad replay parametrisation internals

- Share VAR_KEY_RE between session-replay-vars and session-replay-script
  instead of re-declaring the same /^[A-Z_][A-Z0-9_]*$/ in each.
- Fold resolveReplayFlags + resolveReplayRuntime into a single generic
  resolveStringProps<T>; the two were near-identical object-walkers.
- Un-export parseReplayEnvLine (was only used inside its own module).
- Table-drive the four "reject AD_* namespace" tests with test.each
  instead of four near-duplicate test blocks.
- Extract runReplayFixture helper for runReplayScriptFile integration
  tests; each test is now ~10 lines instead of ~30.

No behaviour change. 812 tests still green.

* docs: clarify replay built-in variables

* test: cover replay env serialization

---------

Co-authored-by: Michał Pierzchała <thymikee@gmail.com>
2026-04-24 18:54:03 -04:00
Michał Pierzchała 22936fd628 fix: use artifacts route for daemon downloads (#434) 2026-04-24 17:52:42 -04:00
Michał Pierzchała d6b8b12acf docs: improve agent discoverability for observability (#431)
* 0.12.9

* docs: improve agent discoverability for observability

* docs: add debugging and profiling guide
2026-04-21 09:48:45 -04:00
Michał Pierzchała bb24567582 fix: improve android snapshot freshness (#430)
* fix: improve android snapshot freshness

* fix: tune android snapshot freshness mitigation

* fix: keep android ref refresh best-effort
2026-04-20 11:03:25 +02:00
Michał Pierzchała 57ba479e51 fix: add screenshot max-size flag (#428) 2026-04-18 19:30:39 +02:00
Michał Pierzchała 77365ab708 refactor: simplify Android hidden-content hints (#427) 2026-04-18 19:13:22 +02:00
Michał Pierzchała ee6cc7cc5b fix: use bridge metro runtime descriptors (#425) 2026-04-17 20:01:20 +02:00