mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
5a362ec752
Follow-ups from the bundler/CI speed work, re-validated against latest main. The typescript package is gone from the toolchain: - pnpm typecheck stays on tsgo; the typecheck:tsc escape hatch is removed along with the typescript devDependency. - args.test.ts extracted cli.ts dispatch literals through the TypeScript compiler API - the only remaining consumer. It now walks the same AST via oxc-parser (matching the OXC lint/format/build stack); both implementations extract an identical 14-literal set from cli.ts, verified side by side before the swap. The substitution-free template case ts.isStringLiteralLike covered is preserved. - dts bundling is unaffected: the tsdown build uses the tsgo backend and builds green with no typescript package installed. Test fixes for containerized agent environments: - The missing-binary doctor-guidance web provider test pins Node 24 via the file's existing withNodeRuntimeVersion helper, so it asserts the setup hint instead of inheriting the host Node and failing on Node 22 (the supported engines floor). - The clean-xcuitest cleanup-failure smoke test skips as root: chmod 0o500 cannot force a removal failure when the process bypasses directory permissions. AGENTS.md toolchain notes updated to match. Claude-Session: https://claude.ai/code/session_01FqeW8sA2ZnvnftdvpCqFMS Co-authored-by: Claude <noreply@anthropic.com>
234 lines
11 KiB
JSON
234 lines
11 KiB
JSON
{
|
|
"name": "agent-device",
|
|
"version": "0.18.3",
|
|
"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.1.2",
|
|
"main": "dist/src/index.js",
|
|
"types": "dist/src/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"import": "./dist/src/index.js",
|
|
"types": "./dist/src/index.d.ts"
|
|
},
|
|
"./io": {
|
|
"import": "./dist/src/io.js",
|
|
"types": "./dist/src/io.d.ts"
|
|
},
|
|
"./artifacts": {
|
|
"import": "./dist/src/artifacts.js",
|
|
"types": "./dist/src/artifacts.d.ts"
|
|
},
|
|
"./metro": {
|
|
"import": "./dist/src/metro.js",
|
|
"types": "./dist/src/metro.d.ts"
|
|
},
|
|
"./batch": {
|
|
"import": "./dist/src/batch.js",
|
|
"types": "./dist/src/batch.d.ts"
|
|
},
|
|
"./remote-config": {
|
|
"import": "./dist/src/remote-config.js",
|
|
"types": "./dist/src/remote-config.d.ts"
|
|
},
|
|
"./install-source": {
|
|
"import": "./dist/src/install-source.js",
|
|
"types": "./dist/src/install-source.d.ts"
|
|
},
|
|
"./android-adb": {
|
|
"import": "./dist/src/android-adb.js",
|
|
"types": "./dist/src/android-adb.d.ts"
|
|
},
|
|
"./contracts": {
|
|
"import": "./dist/src/contracts.js",
|
|
"types": "./dist/src/contracts.d.ts"
|
|
},
|
|
"./selectors": {
|
|
"import": "./dist/src/selectors.js",
|
|
"types": "./dist/src/selectors.d.ts"
|
|
},
|
|
"./finders": {
|
|
"import": "./dist/src/finders.js",
|
|
"types": "./dist/src/finders.d.ts"
|
|
}
|
|
},
|
|
"engines": {
|
|
"node": ">=22.19"
|
|
},
|
|
"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",
|
|
"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",
|
|
"build:node": "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: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": "sh ./scripts/build-android-snapshot-helper.sh $(node -p \"require('./package.json').version\") .tmp/android-snapshot-helper",
|
|
"package:android-snapshot-helper": "sh ./scripts/package-android-snapshot-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 && sh ./scripts/package-android-snapshot-helper.sh $(node -p \"require('./package.json').version\") v$(node -p \"require('./package.json').version\") android-snapshot-helper/dist",
|
|
"build:android-multitouch-helper": "sh ./scripts/build-android-multitouch-helper.sh $(node -p \"require('./package.json').version\") .tmp/android-multitouch-helper",
|
|
"package:android-multitouch-helper": "sh ./scripts/package-android-multitouch-helper.sh $(node -p \"require('./package.json').version\") .tmp/android-multitouch-helper",
|
|
"package:android-multitouch-helper:npm": "rm -rf android-multitouch-helper/dist && sh ./scripts/package-android-multitouch-helper.sh $(node -p \"require('./package.json').version\") android-multitouch-helper/dist",
|
|
"build:macos-helper": "swift build -c release --package-path macos-helper",
|
|
"build:all": "pnpm build:node && pnpm build:xcuitest",
|
|
"ad": "node bin/agent-device.mjs",
|
|
"size": "node scripts/size-report.mjs",
|
|
"size:markdown": "node scripts/size-report.mjs --json .tmp/size-report.json --markdown .tmp/size-report.md",
|
|
"perf": "node --experimental-strip-types scripts/perf/run.ts",
|
|
"perf:ios": "node --experimental-strip-types scripts/perf/run.ts --platform ios",
|
|
"perf:android": "node --experimental-strip-types scripts/perf/run.ts --platform android",
|
|
"lint": "oxlint . --deny-warnings",
|
|
"format": "node ./node_modules/oxfmt/bin/oxfmt --write src test skills package.json tsconfig.json tsconfig.lib.json tsdown.config.ts vitest.config.ts .github/actions/setup-node-pnpm/action.yml .oxlintrc.json .oxfmtrc.json '!test/skillgym/.skillgym-results/**'",
|
|
"format:check": "node ./node_modules/oxfmt/bin/oxfmt --check src test skills package.json tsconfig.json tsconfig.lib.json tsdown.config.ts vitest.config.ts .github/actions/setup-node-pnpm/action.yml .oxlintrc.json .oxfmtrc.json '!test/skillgym/.skillgym-results/**'",
|
|
"fallow": "fallow audit --base origin/main",
|
|
"fallow:all": "fallow --summary",
|
|
"fallow:baseline": "(fallow dead-code --save-baseline fallow-baselines/dead-code.json --summary || true) && (fallow health --save-baseline fallow-baselines/health.json --summary || true)",
|
|
"check:fallow": "fallow audit",
|
|
"check:layering": "node --experimental-strip-types scripts/layering/check.ts",
|
|
"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": "node scripts/sync-mcp-metadata.mjs && git add server.json",
|
|
"check:tooling": "pnpm lint && pnpm typecheck && pnpm check:layering && pnpm check:mcp-metadata && pnpm build",
|
|
"check:unit": "pnpm test:unit && pnpm test:smoke",
|
|
"check": "pnpm check:tooling && pnpm check:fallow && pnpm check:unit",
|
|
"prepack": "pnpm check:mcp-metadata && pnpm build:all && pnpm package:android-snapshot-helper:npm && pnpm package:android-multitouch-helper:npm",
|
|
"typecheck": "tsgo -p tsconfig.json",
|
|
"test-app:install": "pnpm install --dir examples/test-app --ignore-workspace",
|
|
"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": "node scripts/run-test-app-maestro-suite.mjs --platform ios",
|
|
"test-app:maestro:android": "node scripts/run-test-app-maestro-suite.mjs --platform android",
|
|
"test": "vitest run --project unit",
|
|
"test:unit": "vitest run --project unit",
|
|
"test:coverage": "vitest run --coverage",
|
|
"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:smoke:web": "pnpm build && node --test test/integration/smoke-web-platform.test.ts",
|
|
"test:skillgym": "node test/skillgym/runner-environment.ts && pnpm build && skillgym run ./test/skillgym/suites/agent-device-smoke-suite.ts --config ./test/skillgym/skillgym.config.ts",
|
|
"test:skillgym:case": "node test/skillgym/runner-environment.ts && pnpm build && skillgym run ./test/skillgym/suites/agent-device-smoke-suite.ts --config ./test/skillgym/skillgym.config.ts --case",
|
|
"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: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-runner",
|
|
"!apple-runner/**/.build",
|
|
"!apple-runner/**/.swiftpm",
|
|
"!apple-runner/**/xcuserdata",
|
|
"!apple-runner/**/*.xcuserstate",
|
|
"!apple-runner/README.md",
|
|
"!apple-runner/RUNNER_PROTOCOL.md",
|
|
"macos-helper",
|
|
"!macos-helper/**/.build",
|
|
"android-snapshot-helper/dist",
|
|
"!android-snapshot-helper/dist/*.idsig",
|
|
"!android-snapshot-helper/README.md",
|
|
"android-multitouch-helper/dist",
|
|
"!android-multitouch-helper/dist/*.idsig",
|
|
"!android-multitouch-helper/README.md",
|
|
"src/platforms/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": {
|
|
"yaml": "^2.9.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^22.19.21",
|
|
"@typescript/native-preview": "7.0.0-dev.20260613.1",
|
|
"@vitest/coverage-v8": "4.1.8",
|
|
"fallow": "^2.95.0",
|
|
"oxc-parser": "^0.138.0",
|
|
"oxfmt": "^0.42.0",
|
|
"oxlint": "^1.69.0",
|
|
"skillgym": "^0.9.1",
|
|
"tsdown": "^0.22.3",
|
|
"vite": "^8.0.16",
|
|
"vitest": "^4.1.8"
|
|
}
|
|
}
|