Files
Michał Pierzchała 52420d77e0 perf(ios): learn generation-scoped native depth hints in the host AX source (#2427)
The host source remembers the native levels a finished recovery accepted,
keyed by resolved target id, app generation, and producer, and sends them as
nativeLevelsHint so the guest's first request skips the known rejection. The
hint changes request strategy only: delivered depth, node bounds, and
completeness rules are unchanged. It is learned only after the delivered tree
validated, expires after eight hinted captures, is never renewed by a hinted
success, and never crosses apps, generations, or producers; explicit raw-depth
requests neither use nor teach it. The route's generation circuit stays the
only lifecycle owner.

The guest reports its request accounting (requests, rejected, continuations,
accepted levels) as recovery, which the host emits as the
ios_snapshot_source_recovery diagnostic; the source version moves to v1.5.5.
The shared recovery fixture gains the host column of every hint case and the
hinted recovery cases, replayed through the source adapter itself. The test
app gains a deep-tree screen that reproduces the native depth rejection for
paired benchmarks.
2026-09-09 18:24:17 +02:00
..

Examples

Runnable, typechecked Node.js examples for the agent-device SDK surface exposed to Node consumers. Source of truth for the API itself is Node.js API. Two guards keep these files in sync with that doc: src/__tests__/client-api-examples-drift.test.ts checks the doc's subpath API manifest against what these examples import, and test/integration/client-api-doc-snippets.test.ts compiles every fenced TypeScript code block in the doc itself against the real agent-device/* sources.

sdk/

Standalone scripts under sdk/ exercise the published agent-device export map — agent-device, agent-device/metro, agent-device/contracts, agent-device/batch, and agent-device/ai-sdk — the same way a Node consumer or the agent-device-cloud bridge would. Each file:

  • has a top comment stating what it demonstrates and its prerequisites (daemon running, device/simulator available);
  • typechecks without live hardware — pnpm typecheck resolves the agent-device/... imports against src/sdk/ via examples/sdk/tsconfig.json's paths, so CI checks them without a build or publish step;
  • imports the package by name (agent-device/...), not a relative src/ path, so it exercises the same surface a real consumer sees;
  • is runnable on its own with node --experimental-strip-types (repo Node is >=22.12) once the package is built (pnpm build) — running for real resolves agent-device as a self-referencing package, the same way an installed consumer would.
Example Subpath Demonstrates
client-session.ts agent-device createAgentDeviceClient → open → snapshot/tap → close, with typed error handling
metro-runtime.ts agent-device/metro normalizeBaseUrl, resolveRuntimeTransport
contracts-result.ts agent-device/contracts typed result consumption via centerOfRect
batch-orchestration.ts agent-device/batch runBatch for a custom transport
ai-sdk-tools.ts agent-device/ai-sdk createAgentDeviceTools driven by a ToolLoopAgent

test-app/

test-app/ is the Expo dogfood fixture used for agent-device experiments (see its own README) — it is a test fixture, not an SDK usage example.