{ "name": "agent-device", "version": "0.20.5", "description": "Agent-native CLI for AI app automation across iOS, Android, tvOS, Android TV, macOS, Linux, and web.", "mcpName": "io.github.callstackincubator/agent-device", "license": "MIT", "author": "Callstack", "homepage": "https://agent-device.dev/", "repository": { "type": "git", "url": "git+https://github.com/callstack/agent-device.git" }, "bugs": { "url": "https://github.com/callstack/agent-device/issues" }, "type": "module", "packageManager": "pnpm@11.17.0", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", "exports": { ".": { "types": "./dist/src/index.d.ts", "import": "./dist/src/index.js" }, "./io": { "types": "./dist/src/io.d.ts", "import": "./dist/src/io.js" }, "./artifacts": { "types": "./dist/src/artifacts.d.ts", "import": "./dist/src/artifacts.js" }, "./metro": { "types": "./dist/src/metro.d.ts", "import": "./dist/src/metro.js" }, "./batch": { "types": "./dist/src/batch.d.ts", "import": "./dist/src/batch.js" }, "./remote-config": { "types": "./dist/src/remote-config.d.ts", "import": "./dist/src/remote-config.js" }, "./install-source": { "types": "./dist/src/install-source.d.ts", "import": "./dist/src/install-source.js" }, "./android-adb": { "types": "./dist/src/android-adb.d.ts", "import": "./dist/src/android-adb.js" }, "./limrun": { "types": "./dist/src/limrun.d.ts", "import": "./dist/src/limrun.js" }, "./contracts": { "types": "./dist/src/contracts.d.ts", "import": "./dist/src/contracts.js" }, "./selectors": { "types": "./dist/src/selectors.d.ts", "import": "./dist/src/selectors.js" }, "./finders": { "types": "./dist/src/finders.d.ts", "import": "./dist/src/finders.js" } }, "engines": { "node": ">=22.12" }, "bin": { "agent-device": "bin/agent-device.mjs" }, "scripts": { "build": "tsdown", "clean:daemon": "node --experimental-strip-types scripts/clean-daemon.ts", "daemon:state-dir": "node --experimental-strip-types scripts/print-daemon-state-dir.ts", "explain:command": "node --experimental-strip-types scripts/explain-command.ts", "clean:xcuitest": "node scripts/clean-xcuitest-derived.mjs", "clean:xcuitest:ios": "node scripts/clean-xcuitest-derived.mjs ios", "clean:xcuitest:macos": "node scripts/clean-xcuitest-derived.mjs macos", "clean:xcuitest:tvos": "node scripts/clean-xcuitest-derived.mjs tvos", "clean:xcuitest:visionos": "node scripts/clean-xcuitest-derived.mjs visionos", "rebuild:cli": "pnpm build && pnpm clean:daemon", "build:xcuitest": "pnpm build:xcuitest:ios && pnpm build:xcuitest:macos", "build:xcuitest:ios": "AGENT_DEVICE_XCUITEST_PLATFORM=ios sh ./scripts/build-xcuitest-apple.sh", "build:xcuitest:ios:clean": "pnpm clean:xcuitest:ios && pnpm build:xcuitest:ios", "build:xcuitest:macos": "AGENT_DEVICE_XCUITEST_PLATFORM=macos sh ./scripts/build-xcuitest-apple.sh", "build:xcuitest:macos:clean": "pnpm clean:xcuitest:macos && pnpm build:xcuitest:macos", "build:xcuitest:tvos": "AGENT_DEVICE_XCUITEST_PLATFORM=tvos sh ./scripts/build-xcuitest-apple.sh", "build:xcuitest:tvos:clean": "pnpm clean:xcuitest:tvos && pnpm build:xcuitest:tvos", "build:xcuitest:visionos": "AGENT_DEVICE_XCUITEST_PLATFORM=visionos sh ./scripts/build-xcuitest-apple.sh", "build:xcuitest:visionos:clean": "pnpm clean:xcuitest:visionos && pnpm build:xcuitest:visionos", "build:android-snapshot-helper": "AGENT_DEVICE_ANDROID_HELPER=snapshot sh ./scripts/build-android-helper.sh $(node -p \"require('./package.json').version\") .tmp/android-snapshot-helper", "package:android-snapshot-helper": "AGENT_DEVICE_ANDROID_HELPER=snapshot sh ./scripts/package-android-helper.sh $(node -p \"require('./package.json').version\") v$(node -p \"require('./package.json').version\") .tmp/android-snapshot-helper", "package:android-snapshot-helper:npm": "rm -rf android/snapshot-helper/dist && AGENT_DEVICE_ANDROID_HELPER=snapshot sh ./scripts/package-android-helper.sh $(node -p \"require('./package.json').version\") v$(node -p \"require('./package.json').version\") android/snapshot-helper/dist", "package:apple-runner:npm": "node scripts/package-apple-runner-source.mjs", "build:android": "pnpm package:android-snapshot-helper:npm && pnpm package:android-ime-helper:npm", "build:android-ime-helper": "AGENT_DEVICE_ANDROID_HELPER=ime sh ./scripts/build-android-helper.sh $(node -p \"require('./package.json').version\") .tmp/android-ime-helper", "package:android-ime-helper": "AGENT_DEVICE_ANDROID_HELPER=ime sh ./scripts/package-android-helper.sh $(node -p \"require('./package.json').version\") .tmp/android-ime-helper", "package:android-ime-helper:npm": "rm -rf android/ime-helper/dist && AGENT_DEVICE_ANDROID_HELPER=ime sh ./scripts/package-android-helper.sh $(node -p \"require('./package.json').version\") android/ime-helper/dist", "build:macos-helper": "swift build -c release --package-path apple/macos-helper", "build:macos-helper:clean": "swift package --package-path apple/macos-helper clean && pnpm build:macos-helper", "package:npm": "pnpm build && pnpm build:xcuitest:ios && pnpm build:xcuitest:macos && pnpm build:xcuitest:tvos && pnpm build:xcuitest:visionos && pnpm build:macos-helper:clean && pnpm package:apple-runner:npm && pnpm build:android && pnpm check:package", "ad": "node bin/agent-device.mjs", "bench:help-conformance": "node scripts/help-conformance-bench.mjs", "maestro:conformance": "node --experimental-strip-types --test packages/maestro/test/conformance/verify.test.ts packages/maestro/test/conformance/differential/run.test.ts packages/maestro/test/conformance/differential/invariants.test.ts", "maestro:conformance:regenerate": "node --experimental-strip-types scripts/maestro-conformance/regenerate.mjs", "maestro:conformance:differential": "node --experimental-strip-types packages/maestro/test/conformance/differential/run.ts", "size": "node scripts/size-report.mjs", "perf": "node --experimental-strip-types scripts/perf/run.ts", "mutation:run": "node --experimental-strip-types scripts/mutation/run.ts", "mutation:baseline": "node --experimental-strip-types scripts/mutation/run.ts --update", "mutation:check": "node --experimental-strip-types scripts/mutation/run.ts --no-run", "mutation:affected": "node --experimental-strip-types scripts/mutation/run.ts --affected", "mutation:test": "node --experimental-strip-types --test scripts/mutation/*.test.ts", "lint": "oxlint . --deny-warnings", "format": "node ./node_modules/oxfmt/bin/oxfmt --write", "format:check": "node ./node_modules/oxfmt/bin/oxfmt --check", "fuzz:parsers": "node --experimental-strip-types scripts/fuzz/run.ts", "fallow:all": "fallow --summary", "fallow:baseline": "fallow dead-code --save-baseline fallow-baselines/dead-code.json --summary && fallow health --report-only --save-baseline fallow-baselines/health.json --summary", "check:fallow": "fallow audit", "check:affected": "node --experimental-strip-types scripts/check-affected/run.ts", "check:affected:test": "node --experimental-strip-types --test scripts/check-affected/model.test.ts scripts/check-affected/run.test.ts", "check:coverage-changed": "node --experimental-strip-types scripts/coverage-changed/run.ts", "check:coverage-changed:test": "node --experimental-strip-types --test scripts/coverage-changed/model.test.ts scripts/coverage-changed/run.test.ts", "check:layering": "node --experimental-strip-types --test scripts/layering/model.test.ts scripts/layering/zone-policy.test.ts scripts/layering/daemon-modularity.test.ts scripts/layering/package-boundaries.test.ts scripts/layering/facade-exports.test.ts && node --experimental-strip-types scripts/layering/check.ts", "depgraph": "node --experimental-strip-types scripts/depgraph/build.ts", "depgraph:test": "node --experimental-strip-types --test scripts/depgraph/model.test.ts scripts/depgraph/affected.test.ts", "check:production-exports": "fallow dead-code --config fallow-production-exports.json --production --unused-exports --fail-on-issues", "check:bundle-owner-files": "node --experimental-strip-types scripts/check-bundle-owner-files.ts", "check:package": "node --experimental-strip-types scripts/check-package.ts", "check:command-docs": "vitest run --project unit-core src/__tests__/command-doc-coverage.test.ts", "check:replay-compat": "node --experimental-strip-types scripts/check-replay-compat-provenance.ts", "check:freerange": "fr", "check:quick": "pnpm lint && pnpm typecheck", "sync:mcp-metadata": "node scripts/sync-mcp-metadata.mjs", "check:mcp-metadata": "node scripts/sync-mcp-metadata.mjs --check", "version": "pnpm sync:mcp-metadata && git add server.json", "check:tooling": "pnpm format:check && pnpm lint && pnpm typecheck && pnpm check:layering && pnpm depgraph:test && pnpm check:production-exports && pnpm check:mcp-metadata && pnpm build && pnpm check:bundle-owner-files && pnpm check:package", "check:unit": "pnpm check:contention-retry && pnpm test:unit && pnpm test:smoke", "check": "pnpm check:tooling && pnpm check:fallow && pnpm check:unit", "prepack": "pnpm check:mcp-metadata && pnpm package:npm", "typecheck": "tsc -b packages/xml packages/kernel packages/contracts packages/ad-script packages/selectors packages/ad-replay packages/maestro packages/replay-test packages/provider-webdriver packages/provider-limrun && tsc -p tsconfig.json && tsc -p examples/sdk/tsconfig.json", "test-app:install": "pnpm install --dir examples/test-app", "test-app:start": "pnpm --dir examples/test-app start", "test-app:ios": "pnpm --dir examples/test-app ios", "test-app:android": "pnpm --dir examples/test-app android", "test-app:typecheck": "pnpm --dir examples/test-app typecheck", "test-app:replay:ios": "pnpm ad test examples/test-app/replays --platform ios --artifacts-dir .tmp/test-app-replay/ios", "test-app:replay:android": "pnpm ad test examples/test-app/replays --platform android --artifacts-dir .tmp/test-app-replay/android", "test-app:maestro": "node scripts/run-test-app-maestro-suite.mjs", "test-app:maestro:ios": "pnpm test-app:maestro --platform ios", "test-app:maestro:android": "pnpm test-app:maestro --platform android", "test": "pnpm test:unit", "test:unit": "vitest run --project unit-core --project subprocess-stub", "test:maestro-compat": "vitest run --project unit-core packages/maestro src/daemon/adapters/maestro src/compat/__tests__/replay-input.test.ts", "test:coverage": "vitest run --coverage", "test:coverage:ci": "node --experimental-strip-types scripts/lib/contention-retry-run.ts --coverage", "check:contention-retry": "node --experimental-strip-types --test scripts/lib/contention-retry-policy.test.ts", "test:integration:provider": "vitest run --project provider-integration", "test:integration:progress": "node --experimental-strip-types scripts/integration-progress.ts", "test:integration:progress:check": "node --experimental-strip-types scripts/integration-progress.ts --check", "test:fixture-cache": "node --test test/ci/trusted-fixture-artifact.test.mjs", "test:output-economy": "vitest run --project output-economy", "test:smoke:web": "pnpm build && node --test test/integration/smoke-web-platform.test.ts", "test:smoke": "node --test test/integration/smoke-*.test.ts", "test:integration:node": "node --test test/integration/*.test.ts", "test:integration": "pnpm test:integration:node && pnpm test:integration:provider", "test:concurrency-torture": "node --test test/integration/nightly/concurrency-torture.test.ts", "test:replay:ios": "node --experimental-strip-types src/bin.ts test test/integration/replays/ios/simulator", "test:replay:ios-device": "node --experimental-strip-types src/bin.ts test test/integration/replays/ios/device", "test:replay:android": "node --experimental-strip-types src/bin.ts test test/integration/replays/android", "test:replay:macos": "node --experimental-strip-types src/bin.ts test test/integration/replays/macos", "test:replay:linux": "node --experimental-strip-types src/bin.ts test test/integration/replays/linux" }, "files": [ "bin", "dist", "apple/macos-helper", "!apple/macos-helper/**/.build", "android/snapshot-helper/dist", "!android/snapshot-helper/dist/*.idsig", "!android/snapshot-helper/README.md", "android/ime-helper/dist", "!android/ime-helper/dist/*.idsig", "!android/ime-helper/README.md", "linux/atspi-dump.py", "skills", "server.json", "smithery.yaml", "README.md", "LICENSE" ], "keywords": [ "agent", "device", "cli", "automation", "adb", "simctl", "devicectl", "ios", "android", "tvos", "macos", "web", "browser", "react-native", "observability", "diagnostics", "network", "profiling", "performance", "mcp", "model-context-protocol", "mcp-server", "ai-agent", "mobile-automation", "ios-simulator", "android-emulator", "xcuitest", "e2e-testing", "cursor", "claude-code", "expo", "mobile-testing", "qa-automation", "ai-testing", "ios-automation", "android-automation", "simulator", "emulator", "appium", "maestro", "detox" ], "dependencies": { "@limrun/api": "^0.24.5", "yaml": "^2.9.0" }, "devDependencies": { "@agent-device/ad-replay": "workspace:*", "@agent-device/ad-script": "workspace:*", "@agent-device/contracts": "workspace:*", "@agent-device/kernel": "workspace:*", "@agent-device/selectors": "workspace:*", "@agent-device/maestro": "workspace:*", "@agent-device/provider-limrun": "workspace:*", "@agent-device/provider-webdriver": "workspace:*", "@agent-device/replay-test": "workspace:*", "@agent-device/xml": "workspace:*", "@arethetypeswrong/cli": "^0.18.5", "@chenglou/freerange": "^0.0.1", "@stryker-mutator/core": "9.6.1", "@stryker-mutator/vitest-runner": "9.6.1", "@types/node": "^22.19.21", "@types/pngjs": "^6.0.5", "@vitest/coverage-v8": "4.1.8", "fallow": "^2.95.0", "fast-check": "^4.9.0", "oxc-parser": "^0.138.0", "oxfmt": "^0.42.0", "oxlint": "^1.69.0", "pngjs": "^7.0.0", "publint": "^0.3.22", "tsdown": "^0.22.4", "typescript": "^7.0.2", "vite": "^8.0.16", "vitest": "^4.1.8" } }