{"_id":"appclaw","_rev":"32-1e22277745935534d6b0b66ebfef58cd","name":"appclaw","dist-tags":{"latest":"1.9.3"},"versions":{"0.1.0":{"name":"appclaw","version":"0.1.0","_id":"appclaw@0.1.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"ddd85bb355b9252ef871cbd8e99a735df6f17057","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.0.tgz","fileCount":144,"integrity":"sha512-PLrr7o+WlGMAHJYM8KdYOrzVKWB7LlGIgoeFcE1lNmNRwqfdowyqCqSNZi55Y9+x9zfpXhR8LTedsrFMgR37Ww==","signatures":[{"sig":"MEQCIGJu7rSHXnNAVjH1CpwnmvU93A+CM+W3Y84Aslh0XZHPAiAf08Pt9e5POVuk8/fXIGMMlb/whDofUtHzQDZreOONYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":541357},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"004541d73aee798c17c278f44af19dc19b0c06ec","scripts":{"dev":"npx tsx --watch src/index.ts","build":"tsc","start":"npx tsx src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","df-vision":"1.1.71","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","@ai-sdk/anthropic":"^1.0.0","ollama-ai-provider":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/bun":"^1.1.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.0_1774339441816_0.830047178304228","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"appclaw","version":"0.1.1","_id":"appclaw@0.1.1","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"1b9c095ad6176597943139d239709c4a664d08be","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.1.tgz","fileCount":145,"integrity":"sha512-4uj7J/UEVF8BbxwLeFGJoKEKkZZqXT9E8vD7T3cLbXb6fIUe8fdf2waqMtqkh0zyIf0CcxMAYxBrEqjtQCdqqg==","signatures":[{"sig":"MEYCIQCP0PZpuCWfY8eJmL4sPMCe5wnNmArD/s2Xjl+brJQzpwIhAPaUVoNndZQ7NEBZqAvg0Zw2MhYBrVDjRQC+JIonAlTC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":570089},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"14099b5d301901975e214e04648c49706d2f5886","scripts":{"dev":"npx tsx --watch src/index.ts","build":"tsc","start":"npx tsx src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","df-vision":"1.1.71","cli-spinners":"^3.4.0","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","@ai-sdk/anthropic":"^1.0.0","ollama-ai-provider":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/bun":"^1.1.0","typescript":"^5.6.0"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.1_1774426025617_0.10011378662481096","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"appclaw","version":"0.1.2","_id":"appclaw@0.1.2","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"eae768dfac447c868269149906515a5568d96fef","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.2.tgz","fileCount":184,"integrity":"sha512-rY9UvIL/r0moljQofLPvtCsFoXAN/9NiZxPZktlm96KaOO1W1iQZH7Y43LY92fczA+IJ3hhz3oQ01dJMsFMN7g==","signatures":[{"sig":"MEQCIDuU05V0CG3X9igslFc5OQvYLM2lMpUWUfWm45DryHxnAiBCzLhakzElpII+/DMyPKHP3EHZc32vOUMaG2fcl1tPBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":877059},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"684e2de749e5c33ad85ba92506f4194548659471","scripts":{"dev":"npx tsx --watch src/index.ts","build":"tsc","start":"npx tsx src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.12.0","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.73","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","ollama-ai-provider":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/gradient-string":"^1.1.6"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.2_1774691946816_0.6937318010165778","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"appclaw","version":"0.1.3","_id":"appclaw@0.1.3","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"b4795f464fcfa495c474755dc164361f25f68117","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.3.tgz","fileCount":229,"integrity":"sha512-RHiKab3b4jkJ40VQ/VvN1WJq3ODaLRcjayimqzgBky2vvkwo+C/ihA6yuwFNMQ0A42Et7Red9bLGdB22Hny89w==","signatures":[{"sig":"MEQCIHzFb5oHCph7rIXC99jNtQmvWM2qe8HOjJ6B25GaYU9VAiBZWHIn6tmw/dYNm/nabeTZXs23jnHtsu2Duvv4QwVzqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1295790},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"a20345daa80c0e04fae0e16d5d5103d05a4a36e1","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"11.11.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.73","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","ollama-ai-provider":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/gradient-string":"^1.1.6"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.3_1775631225639_0.6459611912385239","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"appclaw","version":"0.1.4","_id":"appclaw@0.1.4","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"058feaa312f06de2c6e59980db043fc0ee6cbfce","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.4.tgz","fileCount":229,"integrity":"sha512-sZft79qpOWxSNHpW6f2/EfwMk/J3eADKD7XcvDkMkbSIIoeAQs5tdOLuUc7jiqONMcw7uLaw5iqBHK59egkLcg==","signatures":[{"sig":"MEQCIGpe5c55q09CDGrornbyBNWk4svtByDWpKZgG5du/0LJAiAggTur6NrfSuZKS/BiuS6s/0MSqHqg3GkxdNBdsV99hQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1317378},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"59b8c299bf20c9232d89bbbb4d93a9ef600cca2b","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"11.11.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.74","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","ollama-ai-provider":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/gradient-string":"^1.1.6"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.4_1775758398964_0.561078593369718","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"appclaw","version":"0.1.5","_id":"appclaw@0.1.5","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"05949ccd3343bcecac910d0e62248af580159db2","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.5.tgz","fileCount":229,"integrity":"sha512-Wgzy9ijHmmqj6LMM2D9kOFH73gRYhPLtxyFuOiHcGQbF9RMPSR/+xX0UUWYU05iufSYFpqGZ5eruWCzyYkS36g==","signatures":[{"sig":"MEQCIAV/l2oTNpKrpTEGqFnm4UK3YoDC/qhHfCkmv2eZYgXMAiAIqI1Kftxhf3xOEXfBZLcLuat7QT/6oCU+OxDzPBJe/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1344958},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"4633eccca9955069f3d4e7774a3cacef403d948e","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"11.11.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.75","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/gradient-string":"^1.1.6"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.5_1776046765378_0.7457289520532633","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"appclaw","version":"0.1.6","_id":"appclaw@0.1.6","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"2ba7c2c1e201402af7d2433dd4dbf82d2c3283c9","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.6.tgz","fileCount":232,"integrity":"sha512-4jsm3NQFE/U+TPS7g6lXacA7m9S2uUbLv93lwmaF8DDzjH+Y3MHNF1s62BSZ3ggFSlpW45fHYmM4lGBm3wbYLQ==","signatures":[{"sig":"MEUCIBwiWD4Lxjph/2b31TKXb0jvqqcYQYFRPMpcKllkP7OcAiEAq5l5HP3aNGlsl/813J431+qCPCY8EG535U4+Q51jy9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1358774},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"5f60464227e65693a96a5723a07d2e60cf1b2a98","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"11.11.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.76","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/gradient-string":"^1.1.6"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.6_1776098687146_0.5164682405466798","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"appclaw","version":"0.1.7","_id":"appclaw@0.1.7","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"bd62b595d8d1f91b853ade0bcb3490baa1312689","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-0.1.7.tgz","fileCount":256,"integrity":"sha512-Re+sp5Dmxkk15jI5bWUE6qTW+FZer/ec4PFIQHQ4v3sCDAvzTiJ5vWYypRWBHc0u4v+AXgb4GnAPjZetPBXN/A==","signatures":[{"sig":"MEQCIG1srP1slJ5k9M60FyuUTKSdLk5pK2bOaIVMDPRcNWHXAiAFybX5YoGPtjS5BiaY83vGvXTCr+pAMhU/w8YwGRB3UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1390426},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"f39d4d55f2b65d4d5a9a1b27e5364ca505516cd7","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","prepublishOnly":"npm run build"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"11.11.0","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.76","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/gradient-string":"^1.1.6"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_0.1.7_1776160312041_0.24918822701265775","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"appclaw","version":"1.0.0","_id":"appclaw@1.0.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"3034ecedc0e4ac258f54f09ccb4fe9f20bcd0e98","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.0.0.tgz","fileCount":259,"integrity":"sha512-g18mf4g0wddc66DvEtPMlKI5tLd8A5rmmJx+M1xITYaQCikGHI/xDhRvfx+VvJBjvkFKcxZmOknKzpyx1+4X2w==","signatures":[{"sig":"MEYCIQDkLwuJZ7bNNMOmLcZJ/8TTGC7Pn1ismxfcWitQprTg7gIhALY9vSfAFO6GTm8Zsdbnkj92c22P32HCPlksDfh05ChM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1434970},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"ccc87270af9bc51a1f20a6aa3cd2334bd1dd19f0","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.0.0_1776361399678_0.9782755268815735","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"appclaw","version":"1.1.0","_id":"appclaw@1.1.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"f72f7c088935fc2624899159e940d806af512823","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.1.0.tgz","fileCount":259,"integrity":"sha512-WSudnJ6dslv5w5NuxM7Gw8H9nQuC/NREZUt+B3B7DFP7di0NK7FRTk+zrc7MOUnAujg2Ey77SG3P/GgBfmM0gw==","signatures":[{"sig":"MEYCIQCJjKnq0J3WFBBkbVKtv0YQMY9g/Ko0ISJBp3h4K/QFYAIhAP8K1sMBXiZ8jDRbawnmOU2ZnRCRHqQDCcBcuW0YROad","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1434970},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"4f8b577fe0949e9df51f70a625e2f7b001ca71c4","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.1.0_1776468985200_0.008600916312039297","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"appclaw","version":"1.2.0","_id":"appclaw@1.2.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"693a40ef25a19d448e9541278fe35f034cc2c49c","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.2.0.tgz","fileCount":262,"integrity":"sha512-psPvoJ0rMvAOQFrc3qJ4hXN2eDIxSz/K2gGDr8quHOueqWwwGt+VQFi/Z8GV95+PkbgZ596Bm79aNxpdV9J9MA==","signatures":[{"sig":"MEUCIGdhQ9G1JiHQma0rXHhKikpbX/VsSEsX4p3z79egEBDwAiEAz3RpGIeuxlzBbsGYYu+C4WUzJdi+tSMWhKTmEYIfy5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1497813},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"5ded0b2157a097bcf8f5803766aa6ff6df7d7d1d","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"^1.67.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.2.0_1777041303302_0.7321037649724309","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"appclaw","version":"1.2.1","_id":"appclaw@1.2.1","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"9bb0e1d47797410257c16a5d985ba724dc280bd1","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.2.1.tgz","fileCount":262,"integrity":"sha512-DFDGQsaecI4d3Mfq1gzfDqbaN90N1dfHGiQ7EYl+ZqbQ6Y14mmXfLyRjEtlrhJ3R2iotcRWZGOBmh3NS0fgejg==","signatures":[{"sig":"MEQCIAcaN1Ae/ecKyBPM4MHw9JHlFqEIG+RQ/0wqq++O7E5+AiAU0vdLShUu279QHoGQsCYeTuxtHLOv5atcTEN3A3Eq2g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1497813},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"5821f7e696a8ecdbd748b138e885c9d15e9a6aaf","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"^1.67.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.2.1_1777043343224_0.9259101113459764","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"appclaw","version":"1.3.0","_id":"appclaw@1.3.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"5389c39097ac03ddb14095c2c2c98e05f3e8b099","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.3.0.tgz","fileCount":262,"integrity":"sha512-2QTfdPl+tts9piqPVP7WxH3RENEikctkhxQ+2EnuVW10J6WmhVAd1ACCembfIBSgjxR9ErtX/q7Z+v3IOaUBNA==","signatures":[{"sig":"MEYCIQCiV5CeU6YZcnHKL+ZsjX+daezy1N/sB/8vOp4k/LCQegIhAOqtNPszZhecQZc4i1sdj8s2IJ+Jg/opghzwOaLSK4fT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1529769},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"4f9fc3d7b4d4a9c3d752cca7a9b563511affd18a","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"^1.67.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.3.0_1777210143955_0.7333539528276154","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"appclaw","version":"1.3.1","_id":"appclaw@1.3.1","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"986ab7baf2c16f4a832307f244b78330ed1e170a","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.3.1.tgz","fileCount":265,"integrity":"sha512-98iNQkjVfs/zuIsIcUmy96Cpa+4ImjEvdf7M1lAfYwpTAWK7g7equwFIyQyhROJH3tXjK+fPcqrjwtMsy+s9Dg==","signatures":[{"sig":"MEQCIHi8X46oi1gQgAboGF7qM55gY/+kbxpju6omQPxrQkbgAiBVUleRh6gyQlgIbR7tD79s2AiV6WSmt4AaliiPY57jRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1545141},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"7babaf6c51bf50bfa8833f60c5bbf35d5ea5ac91","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"^1.67.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.3.1_1777803450742_0.25057580150401093","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"appclaw","version":"1.3.2","_id":"appclaw@1.3.2","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"3088ee38c0004885699f2ebd7438b4d7bd86b6b3","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.3.2.tgz","fileCount":268,"integrity":"sha512-ReN6uqhj1TMbpxFtn+cHEYR2RMqey8bbW3L5BY8VV0cUxTRYIXmAyc1IA4ykshwoT5gnwDs5bgLeiDgk6cHfoA==","signatures":[{"sig":"MEUCIQCyWNPp+2sgMxCnJGhrq0lZExeMTzwYXpoKldM3sxeXHAIgJWEh6DhvQ9JR9yqWhivy6BdCCgPf5AF+p0FhcEEXeUk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1584733},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"30a819d2bd83bf6ff57e8b35c45d0581330ac8d9","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"^1.67.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.3.2_1778070810679_0.27809337743880347","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"appclaw","version":"1.3.3","_id":"appclaw@1.3.3","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"687259c1802b878cc14cc22ed4e6a3a47304df45","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.3.3.tgz","fileCount":268,"integrity":"sha512-6LhtMOvo7fWD03E7vY2ao4t4YGPJpRLzUuM9f/j28mdE6xcDqIuuU+vjAwHEncfy3DCQOqT16aEOD0y88tZ2LQ==","signatures":[{"sig":"MEUCIB6aI3q1dA/RBjqOPTF1yAJ8C4DzHFmuJS1OFABu1OmNAiEAocga8xpeBQ5W1EFH5E9YkoM/E9mkIbpgUIx4p2sYDuU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1584833},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"d2bfcda7ebb04e92d3391cabfbde525f8372864e","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"^1.67.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.3.3_1778078401375_0.7113990130962744","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"appclaw","version":"1.3.4","_id":"appclaw@1.3.4","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"b81f7e98dc68d9d59d38d39000c594773e6c05b8","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.3.4.tgz","fileCount":268,"integrity":"sha512-1o8wLLGK6NeyQEPlEz67QwPY4SMrxNxOD/CxDv34kVNn5ZwGaW6r0D+SYA3DhD4kKj+wyMoWtYk5l4cB8yVpEA==","signatures":[{"sig":"MEYCIQDwvtmxIsOqZ/d+WL8tYb+CYydrvqpOTgt8wbXW88XJ9gIhAMzp2mAiLIA3SgCtCxUEtel30+pXwR8z3x37lxnSQ8Ii","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1589393},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"}},"gitHead":"6fafa606a6fc8af5bfa8b0957ac5a6dab63304d9","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.2","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"^1.67.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"^3.8.1","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.3.4_1778868894627_0.3064209950382253","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"appclaw","version":"1.4.0","_id":"appclaw@1.4.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"f427e7cb6f8cbf69f5480ab57ebe733434b21e81","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.4.0.tgz","fileCount":271,"integrity":"sha512-mWlSKOTYJIi8R54d8L/+Mwi+UdwawjgIVCnWIl/Bk95n+lbgjjdVuwArprBWg1TKxJXB70DfSZSLNIthrMby8g==","signatures":[{"sig":"MEYCIQDTmUcAWukmDumyyveKirENAvBI0S01E/rX90eDdOBONAIhAPmgCTRUVehLpEPBVLL5gk7nFmxrEYI6LEHJ+fH04mXh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1619705},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"3270147fdabcdc32d786f26a28116345b43cbffc","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/e2e/android.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.77","appium-mcp":"1.77.0","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.4.0_1781088399375_0.7709366703684915","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"appclaw","version":"1.5.0","_id":"appclaw@1.5.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"e9078ea7f470d9f14ba3350f87b24177c0dcdebd","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.5.0.tgz","fileCount":289,"integrity":"sha512-krV8sQ122VZaRdXPInSfVwgLsJQyovQg+qTAM1vyGaD8LW37NqIfwagAdSMCoUaGOnyTIM7EG4IfOJERtyaG1A==","signatures":[{"sig":"MEUCIQChP1kDg8CB7R0uXPWCBDEVJrBMndcDnJPVCtc+fiLbPQIgWwhklD2qTFEWzhpfyp+b4FO7IST43y0Y8nAIn7URHm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1785052},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"08492efcab37fe9b3946a405803c9e033456d7d5","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.5.0_1781798378607_0.49544197066128803","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"appclaw","version":"1.5.1","_id":"appclaw@1.5.1","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"6d16d72de6ecb68595d17af3be440cadf85d983c","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.5.1.tgz","fileCount":289,"integrity":"sha512-m0ohUrEqVBdB3h6BexMGFVvgA0zAX8awzuBHwnZrydaGPvQPh0DJ5331UAyo3cu3uYZQZ9hGg0KK/VTUpgGQrw==","signatures":[{"sig":"MEUCIQCuyi8CVd8PHh6qyICpZ+q2aEsh+4YHU1mMzdTAkIaaHQIgMdK368plB8NT62GNTf+2wNdPidzvpYcmyP5FuyvTEJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1785052},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"f10bfa1c4a299e33a04a7fef8659b48dd5876c38","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.5.1_1781799881036_0.7403004648128249","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"appclaw","version":"1.5.2","_id":"appclaw@1.5.2","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"b7b540bf4866e162113240ae9b6df7a95324c06c","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.5.2.tgz","fileCount":289,"integrity":"sha512-PmWVubVB9TQ/XaJx9s8WKuMeT3EsfW8BH2R6H+t/4iw3jZLLqphOg+xOstNufxRaF1ESKjRgrYN29LhlPf5zGQ==","signatures":[{"sig":"MEYCIQDGgeqKxzzJ5o8Kv4QJHG2BRsVjXiVin6BjCYw2P5linQIhAJTBBHAvG4ZaGfKz3DtLezS4QY41vphurwvjZb2WxT+X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1802858},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"3cc44c4bd971ebee88ab0f859cbd5f7098a4dbe8","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","semantic-release":"^24.2.9","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.5.2_1781882586877_0.3079185364830246","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"appclaw","version":"1.5.3","_id":"appclaw@1.5.3","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"b41d732abffa412bd7999520057df146a4fe264b","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.5.3.tgz","fileCount":346,"integrity":"sha512-STneoQlrd+HHpChqH2D5u/019HVvSWaLosXsd1FgkQxauua6hPo2lZSBJLEIEMszKus2jdw7MlrNuo2V+451+Q==","signatures":[{"sig":"MEUCIDh4bNAXdkVSrKbIDeaob3y9CVpBfA+yCMT0iub/IvrhAiEAqEu/QeK3yRL0rrGyHLyRl7zb/ghmF3+2rxt0DjYRjSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1973344},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"53b7f397dcec57b4199b136e228897585f9b4abe","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.5.3_1781942894221_0.07123307726062422","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"appclaw","version":"1.5.4","_id":"appclaw@1.5.4","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"3c1bff01730a82f548f5d9f98bd4dc33fa0d90b5","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.5.4.tgz","fileCount":346,"integrity":"sha512-Cj8CJHI6iGZoeZPZsbSqZhU3jLdisCahakc/Hxv68ygBpHCILeLmcv8aclTFFJkEVkLc8LEY/uHynONlUNL/CA==","signatures":[{"sig":"MEQCIAp1v/qVfZW5Hp3rKmiQYwrOcTntQFLVRkrqWSKRmasIAiAgvpLgtZF0fPUiobzY4cxjcyeZzDBbDn21Yts9hw5zDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1978376},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"3d500ad3c9da22919c79514a36f7c8dc1d5d9786","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.5.4_1781951398538_0.1934202735340953","host":"s3://npm-registry-packages-npm-production"}},"1.5.5":{"name":"appclaw","version":"1.5.5","_id":"appclaw@1.5.5","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"70c3d43350f2af751196c14f22fac7e8cf6fb9f2","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.5.5.tgz","fileCount":346,"integrity":"sha512-ASLyL4TTFeN/i6mGiGPof3txjGw1uaNjz86v1HJ0MXAY0hUABzpP0fELdGOi30hCTTkwpSsU+addOVs/U3+lQA==","signatures":[{"sig":"MEUCIQCbUSp6vwc4X5kNx+qaldEfhwBIMnGvlEA6O83HEqWjSwIgUyF9/TsCgAMikbnReEhuaL6rpWPyZevEABIEvl0rkEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1980062},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"73bddf4c691918bccfd18655cf2ef5f01efc26a7","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.5.5_1781952455213_0.25047798591467796","host":"s3://npm-registry-packages-npm-production"}},"1.5.6":{"name":"appclaw","version":"1.5.6","_id":"appclaw@1.5.6","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"f50ab1820e2e141563f7288c6fc40209ea395757","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.5.6.tgz","fileCount":346,"integrity":"sha512-Xnj9sw+pBM7TcZ0iIRZ+0Ki8kwri6FTKGmAvb2N1e6H/c6vsMgc0VMna47qMMCNAcJnFe76rMwZOs33dBh52jA==","signatures":[{"sig":"MEUCIAEir59M+KDM1AM2HldoRDe5HJQzQ9lgMjsUe9Lsg6d/AiEA6f3SH9UPCJUhTBnileJMpSeF+grs5HaLaw8iHikuiGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1981522},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"3a7246182365d8b03e1b9c4e5dbff799064f5f9e","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.5.6_1781955374158_0.39428114610932874","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"appclaw","version":"1.6.0","_id":"appclaw@1.6.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"68016e0a1761131a6e9d323f1cc740aa4b4aef6f","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.6.0.tgz","fileCount":346,"integrity":"sha512-QEDVLcPuUtKSmrkdp6MWgeqzpnoQkJsnFDJSi7EdY4rknCax7xEFKKsd/ZTfn6lHvztiZ++J/qL+4YcfK+R6eQ==","signatures":[{"sig":"MEQCIGKwwZRyITXCMhl3/ofsmVHIkjU9zd976tbqlY/OMKCxAiA8YuES243MwO9itrwxG9vVtYO/LJurpPuIuZipuZjTnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1987249},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"a08236b09fbd3aa5b2a97aeb0f75265d23be8b9c","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.6.0_1781956369043_0.5986266655236467","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"appclaw","version":"1.7.0","_id":"appclaw@1.7.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"16837ae625a07bc5204e863c46fd1dd830f75c8b","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.7.0.tgz","fileCount":349,"integrity":"sha512-WjGdAOqd/DDNEZ6cqd5RATBvL2LtRDQhelreUos3DhRt+blecrMuqSJEj7+uXsLA2TOMlXKEYMN6BShBuP5heQ==","signatures":[{"sig":"MEUCIQCl1pS4opVyzMvnN7Rr20SPzOiWvuEtT6BRhws6YItBPAIgfGEHYY/xpHapnpiEtFbWc7zW3Uo+03d98FYAxlsM8ro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2036258},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"a7bbca4ec4d2d68c0dfe8c38ecf02a1319e329a7","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^1.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^1.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.7.0_1782126576070_0.4979019413064276","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"appclaw","version":"1.8.0","_id":"appclaw@1.8.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"eb5be13fa0bd9760195839a87e9cf8265db67b76","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.8.0.tgz","fileCount":349,"integrity":"sha512-46RfLdFKE/0SwmyLSUzQesozSmOmKFh4Q+ij5Kn++AdVhEMomRcg27trV/sf3yUJlgt1Prk5ASrxc6Sd/HOhpw==","signatures":[{"sig":"MEUCIQCn8wf1xAig84XY1+F0cwgbTotEbdYByAmAEUGWKj9IcAIgdqg6RGCKhZr/NS9Qoah5E6RVormtfULEyWKvO6vpf3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2076120},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"e38056d7ccc3f023fe081ec835d853abaa471335","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.22.3","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^3.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^3.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.8.0_1782262726956_0.7037354114292411","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"appclaw","version":"1.9.0","_id":"appclaw@1.9.0","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"b84d569b041f8c4c0da74dd6d66228fac51a7fd1","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.9.0.tgz","fileCount":403,"integrity":"sha512-AoJKPthz927UPDJSPnB5HJ4HTLVr7B5WzQW7T9PSumAPVY1PiNaXiIRu4km/NER0kA3ne1YirNj1n0Caleyk4g==","signatures":[{"sig":"MEYCIQDs91amS2v5OhoWkHoqJnQI+58c3DVaYJmlBEoqx4I0iAIhALkoRw6SwmlGq9pYJWU8FQmYiIb0FESF4iG4jSW6ndfi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2386661},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./runner":{"types":"./dist/runner/index.d.ts","import":"./dist/runner/index.js"},"./runner/cli":{"types":"./dist/runner/cli.d.ts","import":"./dist/runner/cli.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"ec917246ded62510de01a233f104f1a4d22f6837","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"overrides":{"jose":"^6.1.3"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.23.0","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^3.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^3.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.9.0_1782734128756_0.35100190263798514","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"appclaw","version":"1.9.1","_id":"appclaw@1.9.1","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"c5158612a388418b71ab9525edf95da6f465e643","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.9.1.tgz","fileCount":403,"integrity":"sha512-cq1d6jqlOAEGJCmpc+cTqcblURAKWg+oG7v9eFBsd4OW1DCBckhUfT+1ZDO2KPTLECJFRz+dc6hU205rfp6qnA==","signatures":[{"sig":"MEUCIQC8+hd4Ay8PMyw8ihaJ6sdMjRqzysmXjzYH3zmBOtnzPwIgA1eKlwePf5a4gpBVceTdg6ZBLiosmzhSwvoXwVC80XI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2389061},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./runner":{"types":"./dist/runner/index.d.ts","import":"./dist/runner/index.js"},"./runner/cli":{"types":"./dist/runner/cli.d.ts","import":"./dist/runner/cli.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"41db6e0d542310c2b5dc890f7d8d36eca6b9c4ba","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"overrides":{"jose":"^6.1.3"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"1.85.8","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^3.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^3.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.9.1_1782871565848_0.062486111215514395","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"appclaw","version":"1.9.2","_id":"appclaw@1.9.2","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"bin":{"appclaw":"bin/appclaw.js"},"dist":{"shasum":"cb242c67c793ac2edce8d062581ba4ada918c21d","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.9.2.tgz","fileCount":409,"integrity":"sha512-1eJ+ZJUwrd2XuNUtouInjw5At4RPbOswIToquLVhFKJ3mbYxhIKXEgP1m486lpRaOCGoMh+atc8to6rwd2t/jg==","signatures":[{"sig":"MEUCIAq0gDUBqbuu3JAM8FKvNsCqCX9refSUpfcTAmXP9+k0AiEAvyhhmAbVD2BdT4amflG8fNPAqdZIa8jrTXYns11172s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2432017},"main":"dist/sdk/index.js","type":"module","types":"dist/sdk/index.d.ts","exports":{".":{"types":"./dist/sdk/index.d.ts","import":"./dist/sdk/index.js"},"./cli":{"import":"./dist/index.js"},"./runner":{"types":"./dist/runner/index.d.ts","import":"./dist/runner/index.js"},"./runner/cli":{"types":"./dist/runner/cli.d.ts","import":"./dist/runner/cli.js"},"./agent-runtime":{"types":"./dist/agent-runtime/index.d.ts","import":"./dist/agent-runtime/index.js"}},"gitHead":"77b323d48db17e259623c7361d6eaa0168f1bb20","scripts":{"dev":"npx tsx --watch src/index.ts","lint":"npm run typecheck","test":"vitest run tests/flow tests/sdk tests/ui","build":"tsc","start":"npx tsx src/index.ts","format":"prettier --write .","test:e2e":"vitest run tests/e2e/","typecheck":"tsc --noEmit","build:vsix":"cd vscode-extension && npm run build && npx vsce package","test:watch":"vitest tests/flow tests/sdk tests/ui","format:check":"prettier --check .","deploy:landing":"npm run deploy --prefix landing","test:e2e:android":"MCP_DEBUG=1 vitest run tests/vodqa.test.ts"},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"overrides":{"jose":"^6.1.3"},"_npmVersion":"10.9.8","description":"Agentic AI layer for mobile automation via appium-mcp","directories":{},"_nodeVersion":"22.23.1","dependencies":{"ai":"^6.0.72","ink":"^5.2.1","zod":"^3.23.0","yaml":"^2.8.3","boxen":"^8.0.1","chalk":"^5.6.2","react":"^18.3.1","sharp":"^0.33.5","dotenv":"^17.3.1","marked":"^15.0.12","df-vision":"1.1.79","appium-mcp":"^1.87.0","cli-table3":"^0.6.5","ink-spinner":"^5.0.0","cli-spinners":"^3.4.0","ai-sdk-ollama":"3.8.3","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^3.0.0","ink-text-input":"^6.0.0","mjpeg-consumer":"2.0.0","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","marked-terminal":"^7.3.0","@ai-sdk/anthropic":"^3.0.0","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","vitest":"^4.1.2","prettier":"3.8.3","@types/bun":"^1.1.0","typescript":"^5.6.0","@types/react":"^18.3.31","semantic-release":"^24.2.9","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^12.0.2","@semantic-release/exec":"^7.1.0","@types/gradient-string":"^1.1.6","@semantic-release/github":"^11.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0","conventional-changelog-conventionalcommits":"^9.3.1"},"_npmOperationalInternal":{"tmp":"tmp/appclaw_1.9.2_1783231802946_0.44343320777405726","host":"s3://npm-registry-packages-npm-production"}},"1.9.3":{"name":"appclaw","version":"1.9.3","description":"Agentic AI layer for mobile automation via appium-mcp","type":"module","main":"dist/sdk/index.js","types":"dist/sdk/index.d.ts","exports":{".":{"import":"./dist/sdk/index.js","types":"./dist/sdk/index.d.ts"},"./cli":{"import":"./dist/index.js"},"./runner":{"import":"./dist/runner/index.js","types":"./dist/runner/index.d.ts"},"./runner/cli":{"import":"./dist/runner/cli.js","types":"./dist/runner/cli.d.ts"},"./agent-runtime":{"import":"./dist/agent-runtime/index.js","types":"./dist/agent-runtime/index.d.ts"}},"bin":{"appclaw":"bin/appclaw.js"},"scripts":{"start":"npx tsx src/index.ts","dev":"npx tsx --watch src/index.ts","build":"tsc","typecheck":"tsc --noEmit","lint":"npm run typecheck","format":"prettier --write .","format:check":"prettier --check .","preview":"npx tsx scripts/generate-preview.ts preview","test":"vitest run tests/flow tests/sdk tests/ui","test:e2e":"vitest run tests/e2e/","test:e2e:android":"MCP_DEBUG=1 vitest run tests/vodqa.test.ts","test:watch":"vitest tests/flow tests/sdk tests/ui","build:vsix":"cd vscode-extension && npm run build && npx vsce package","deploy:landing":"npm run deploy --prefix landing"},"dependencies":{"@ai-sdk/anthropic":"^3.0.0","@ai-sdk/google":"^3.0.43","@ai-sdk/openai":"^3.0.0","@modelcontextprotocol/sdk":"^1.22.0","ai":"^6.0.72","ai-sdk-ollama":"3.8.3","appium-mcp":"^1.87.0","boxen":"^8.0.1","chalk":"^5.6.2","cli-spinners":"^3.4.0","cli-table3":"^0.6.5","df-vision":"1.1.79","dotenv":"^17.3.1","fast-xml-parser":"^4.5.0","gradient-string":"^3.0.0","ink":"^5.2.1","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","marked":"^15.0.12","marked-terminal":"^7.3.0","mjpeg-consumer":"2.0.0","react":"^18.3.1","sharp":"^0.33.5","yaml":"^2.8.3","zod":"^3.23.0"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/exec":"^7.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.6","@semantic-release/npm":"^12.0.2","@semantic-release/release-notes-generator":"^14.1.0","@types/bun":"^1.1.0","@types/gradient-string":"^1.1.6","@types/react":"^18.3.31","conventional-changelog-conventionalcommits":"^9.3.1","ink-testing-library":"^4.0.0","prettier":"3.8.3","semantic-release":"^24.2.9","tsx":"^4.21.0","typescript":"^5.6.0","vitest":"^4.1.2"},"overrides":{"jose":"^6.1.3"},"_id":"appclaw@1.9.3","gitHead":"b3629dad9899c09d7c24191a64113194d067ea48","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-3rNmQrORBHgeFfvJP+BUqLSb6LhLOozVPF8SQ0T4DFQbC8UpDQ7/3iTrF7NDnb7nOH7/Ivr+LtuxXdUlACS/hA==","shasum":"175136ab8b267e71c307a1493745bf732e8aea37","tarball":"https://registry.npmjs.org/appclaw/-/appclaw-1.9.3.tgz","fileCount":412,"unpackedSize":2462436,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBKOOIuoc5tVtNoF3WZ3AFpLaKZZ2hpxgnxKXOGl9t+IAiBdbYxe07OvLS9Q9J4lADUFtv7sw8OVxUj6eWkDR5G1rg=="}]},"_npmUser":{"name":"atddevs","email":"atddevs@gmail.com"},"directories":{},"maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/appclaw_1.9.3_1783348471987_0.3916549353481851"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-24T08:04:01.815Z","modified":"2026-07-06T14:34:32.280Z","0.1.0":"2026-03-24T08:04:01.978Z","0.1.1":"2026-03-25T08:07:05.773Z","0.1.2":"2026-03-28T09:59:07.047Z","0.1.3":"2026-04-08T06:53:45.850Z","0.1.4":"2026-04-09T18:13:19.154Z","0.1.5":"2026-04-13T02:19:25.591Z","0.1.6":"2026-04-13T16:44:47.414Z","0.1.7":"2026-04-14T09:51:52.232Z","1.0.0":"2026-04-16T17:43:19.922Z","1.1.0":"2026-04-17T23:36:25.480Z","1.2.0":"2026-04-24T14:35:03.497Z","1.2.1":"2026-04-24T15:09:03.389Z","1.3.0":"2026-04-26T13:29:04.130Z","1.3.1":"2026-05-03T10:17:30.955Z","1.3.2":"2026-05-06T12:33:30.835Z","1.3.3":"2026-05-06T14:40:01.604Z","1.3.4":"2026-05-15T18:14:54.802Z","1.4.0":"2026-06-10T10:46:39.655Z","1.5.0":"2026-06-18T15:59:38.832Z","1.5.1":"2026-06-18T16:24:41.300Z","1.5.2":"2026-06-19T15:23:07.062Z","1.5.3":"2026-06-20T08:08:14.397Z","1.5.4":"2026-06-20T10:29:58.681Z","1.5.5":"2026-06-20T10:47:35.348Z","1.5.6":"2026-06-20T11:36:14.362Z","1.6.0":"2026-06-20T11:52:49.271Z","1.7.0":"2026-06-22T11:09:36.263Z","1.8.0":"2026-06-24T00:58:47.194Z","1.9.0":"2026-06-29T11:55:28.889Z","1.9.1":"2026-07-01T02:06:06.053Z","1.9.2":"2026-07-05T06:10:03.111Z","1.9.3":"2026-07-06T14:34:32.159Z"},"description":"Agentic AI layer for mobile automation via appium-mcp","maintainers":[{"name":"atddevs","email":"atddevs@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"landing/logo.svg\" alt=\"AppClaw logo\" width=\"120\" height=\"120\">\n</p>\n\n<h1 align=\"center\">AppClaw</h1>\n\n<p align=\"center\">AI-powered mobile automation agent for Android and iOS. Tell it what to do in plain English — it figures out what to tap, type, and swipe.</p>\n\n<table align=\"center\">\n<tr>\n<td valign=\"middle\" align=\"center\">\n\n<img src=\"landing/demo.gif\" alt=\"AppClaw demo\" width=\"280\">\n\n</td>\n<td valign=\"middle\">\n\n```\nYou: \"Send a WhatsApp message to Mom\n      saying good morning\"\n\nAppClaw:\n  Step 1: Open WhatsApp\n  Step 2: Search for Mom\n  Step 3: Open chat with Mom\n  Step 4: Type \"good morning\"\n  Step 5: Tap Send\n  Step 6: Done\n\n  ✅ Goal completed in 6 steps.\n```\n\n</td>\n</tr>\n</table>\n\n## Prerequisites\n\n1. **Node.js** 18+\n2. **Device connected** — USB, emulator, or simulator\n3. **LLM API key** from any supported provider (Anthropic, OpenAI, Google, Groq, or local Ollama)\n\n## Installation\n\n### From npm\n\n```bash\nnpm install -g appclaw\n```\n\nCreate a `.env` file in your working directory:\n\n```bash\ncp .env.example .env\n```\n\n### Local development\n\n```bash\ngit clone https://github.com/AppiumTestDistribution/appclaw.git\ncd appclaw\nnpm install\ncp .env.example .env\n```\n\nEdit `.env` based on your preferred mode:\n\n<details>\n<summary><strong>Vision mode (recommended)</strong></summary>\n\nScreenshot-first mode using Stark (df-vision + Gemini) for element location. Requires a Gemini API key.\n\n```env\nLLM_PROVIDER=gemini\nLLM_API_KEY=your-gemini-api-key\nLLM_MODEL=gemini-3.1-flash-lite\nAGENT_MODE=vision\n```\n\n</details>\n\n<details>\n<summary><strong>DOM mode</strong></summary>\n\nUses XML page source to find elements by accessibility ID, xpath, etc. No vision needed — works with any LLM provider.\n\n```env\nLLM_PROVIDER=gemini            # or anthropic, openai, groq, ollama\nLLM_API_KEY=your-api-key\nAGENT_MODE=dom\n```\n\n</details>\n\n## Usage\n\n### Platform & device selection\n\nAppClaw supports both Android and iOS (simulators + real devices). On macOS, you'll get an interactive prompt to choose. For CI or to skip prompts, use flags:\n\n```bash\n# Android (default — no flags needed)\nappclaw \"Open Settings\"\n\n# iOS Simulator (auto-selects the booted simulator)\nappclaw --platform ios --device-type simulator \"Open Settings\"\n\n# iOS Simulator — pick by name\nappclaw --platform ios --device-type simulator --device \"iPhone 17 Pro\" \"Open Settings\"\n\n# iOS Real Device — pick by UDID\nappclaw --platform ios --device-type real --udid 00008120-XXXX \"Open Settings\"\n\n# Env vars work too (great for .env or CI)\nPLATFORM=ios DEVICE_TYPE=simulator appclaw \"Open Settings\"\n```\n\n> **Tip:** If only one simulator is booted, it's auto-selected — no `--udid` needed.\n\n### Cloud devices\n\nRun against a remote Appium grid — BrowserStack, Sauce Labs, LambdaTest, or any\nself-hosted grid — instead of a local device. Set `CLOUD_PROVIDER` and the\n`CLOUD_*` creds; AppClaw builds the hub URL, skips local device discovery, and\nroutes the session to the grid. `appclaw init` can prompt for these and write\nthem to `.env.example`.\n\n```bash\n# .env — BrowserStack\nCLOUD_PROVIDER=browserstack\nCLOUD_USERNAME=your-user\nCLOUD_ACCESS_KEY=your-key\nCLOUD_DEVICE_NAME=Google Pixel 8\nCLOUD_OS_VERSION=14\nCLOUD_APP=bs://<hashed-app-id>        # optional; app to install\n\n# Sauce Labs (region defaults to us-west-1; override with CLOUD_REGION)\nCLOUD_PROVIDER=saucelabs\nCLOUD_USERNAME=your-user\nCLOUD_ACCESS_KEY=your-key\nCLOUD_DEVICE_NAME=iPhone 14\nCLOUD_OS_VERSION=16\n\n# Self-hosted grid — bring your own hub URL (auth may be embedded)\nCLOUD_PROVIDER=custom\nCLOUD_SERVER_URL=https://user:key@grid.internal:4444/wd/hub\nCLOUD_DEVICE_NAME=Pixel_7\nCLOUD_OS_VERSION=14\n```\n\nAppClaw sets only the essentials (`platformName`, `appium:automationName`,\ndevice, OS, app). **Provider-specific options** — `bstack:options`,\n`sauce:options`, `lt:options`, real-vs-emulator flags, video, network logs — go\nin a capabilities file passed via `--caps` (or `CAPABILITIES_FILE` / the SDK\n`capabilitiesFile` option), which is merged on top and wins:\n\n```json\n// caps.json  →  appclaw --flow login.yaml --caps caps.json\n{\n  \"bstack:options\": { \"projectName\": \"AppClaw\", \"buildName\": \"smoke\", \"networkLogs\": true }\n}\n```\n\n`CLOUD_BUILD_NAME` / `CLOUD_PROJECT_NAME` are convenience shortcuts mapped into\nthe active provider's namespace, so common dashboard labels don't need a caps file.\n\n### Agent mode (LLM-driven)\n\n```bash\n# Interactive mode (prompts for platform + goal)\nappclaw\n\n# Pass goal directly\nappclaw \"Open Settings\"\nappclaw \"Search for cats on YouTube\"\nappclaw \"Turn on WiFi\"\nappclaw \"Send hello on WhatsApp to Mom\"\n\n# Or with npx (no global install)\nnpx appclaw \"Open Settings\"\n```\n\nWhen running from a local clone, use `npm start` instead:\n\n```bash\nnpm start\nnpm start \"Open Settings\"\n```\n\n**Export a replayable test** — pass `--export` and the agent's trajectory is written as a runnable vitest spec when the goal completes:\n\n```bash\n# Default path: $EXPORT_DIR/<goal-slug>.test.ts (defaults to .appclaw/exports/)\nappclaw --export \"Open YouTube and search for Appium 3.0\"\n\n# Bare filename → EXPORT_DIR/<name>\nappclaw --export youtube.test.ts \"Open YouTube and search for Appium 3.0\"\n\n# Path with directory hint → used verbatim\nappclaw --export tests/e2e/youtube.test.ts \"Open YouTube\"\n\n# Override the directory for one run\nappclaw --export-dir tests/recorded --export youtube.test.ts \"Open YouTube\"\n\n# Or set it persistently in .env\necho 'EXPORT_DIR=tests/recorded' >> .env\n```\n\nThe export drops the wrong-direction branch when verification rejected a `done`, preserves the auto-launched app as the first step, and translates internal agent tools back to natural language so the generated test reads like English. See the [SDK section](#sdk-typescript--javascript) below for what the test file looks like.\n\n### YAML flows (no LLM needed)\n\nRun declarative automation steps from a YAML file — fast, repeatable, zero LLM cost:\n\n```bash\nappclaw --flow examples/flows/google-search.yaml\n```\n\nFlows support both structured and natural language syntax:\n\n**Structured:**\n\n```yaml\nappId: com.android.settings\nname: Turn on WiFi\n---\n- launchApp\n- wait: 2\n- tap: 'Connections'\n- tap: 'Wi-Fi'\n- done: 'Wi-Fi turned on'\n```\n\n**Natural language:**\n\n```yaml\nname: YouTube search\n---\n- open YouTube app\n- click on search icon\n- type \"Appium 3.0\" in the search bar\n- perform search\n- scroll down until \"TestMu AI\" is visible\n- verify video from TestMu AI is visible\n- done\n```\n\nSupported natural language patterns include: `open <app>`, `click/tap <element>`, `type \"text\"`, `scroll up/down`, `swipe left/right`, `scroll down until \"X\" is visible`, `wait N seconds`, `go back`, `press home`, `verify/assert <element> is visible`, `press enter`, and `done`. Questions like `\"whats on the screen?\"` or `\"how many items are there?\"` are answered via vision without executing any action.\n\n### Parallel & suite runs\n\nRun the same flow on N devices simultaneously, or distribute a suite of flows across N workers:\n\n**Same flow, N devices** — add `parallel: N` to the flow's metadata:\n\n```yaml\nname: youtube_parallel\nplatform: android\nparallel: 2\n---\n- open YouTube app\n- search for \"Appium 3.0\"\n- assert \"TestMu AI\" is visible\n- done\n```\n\n```bash\nappclaw --flow youtube.yaml   # spins up 2 devices, runs flow on both concurrently\n```\n\n**Suite: different flows, N workers** — a suite YAML lists flows and a worker count:\n\n```yaml\nname: youtube_suite\nplatform: android\nparallel: 2\nflows:\n  - flows/login.yaml\n  - flows/search.yaml\n  - flows/playback.yaml\n```\n\n```bash\nappclaw --flow youtube-suite.yaml   # 2 devices pull from queue until all 3 flows finish\n```\n\nThe VS Code extension shows a **live multi-device grid** — each device card updates in real time with a per-device step log, progress bar, and pass/fail result. Failed flows can be re-run with **Re-run Failed** from the summary notification.\n\n### Playground (interactive REPL)\n\nBuild YAML flows interactively on a real device — type commands and watch them execute live:\n\n```bash\nappclaw --playground\n\n# iOS simulator\nappclaw --playground --platform ios --device-type simulator\n\n# Specific device\nappclaw --playground --platform ios --device-type simulator --device \"iPhone 17 Pro\"\n```\n\nFeatures:\n\n- Type natural-language commands that execute immediately on the device\n- Steps accumulate as you go\n- Export to a YAML flow file or a runnable SDK test (vitest spec) — format picked from the file extension\n- Slash commands: `/help`, `/steps`, `/export`, `/clear`, `/device`, `/disconnect`\n\n**Export formats** — `/export` dispatches by extension:\n\n```\n> /export my-flow.yaml              # YAML flow (default behaviour)\n> /export tests/youtube.test.ts     # SDK vitest spec\n> /export youtube.test.ts           # bare filename → EXPORT_DIR/youtube.test.ts\n```\n\nBare filenames for SDK tests land in `EXPORT_DIR` (default `.appclaw/exports`); paths with a directory hint are used verbatim. YAML files stay in the current directory regardless.\n\n### SDK (TypeScript / JavaScript)\n\nDrive a device programmatically from a vitest / jest / mocha test. The SDK exposes the same natural-language layer as the playground, so steps you build interactively can be lifted into a test file as-is.\n\n```ts\nimport { AppClaw, AppClawAssertionError } from 'appclaw';\nimport { describe, it } from 'vitest';\nimport 'dotenv/config';\n\ndescribe('YouTube smoke', () => {\n  it('searches and verifies a result', async () => {\n    const app = new AppClaw({\n      provider: 'gemini',\n      apiKey: process.env.LLM_API_KEY,\n      platform: 'android',\n      agentMode: 'vision',\n      video: true, // record screen, embed in report\n      mcpDebug: false, // silence appium-mcp stderr noise\n    });\n\n    await app.run('open YouTube app');\n    await app.run('tap search icon');\n    await app.run('type \"Appium 3.0\"');\n    await app.run('tap first result');\n\n    // Throws AppClawAssertionError on failure — vitest marks the test red.\n    // The error message includes the original claim, the LLM's reason (in\n    // vision mode), and a snapshot of visible texts (in DOM mode).\n    await app.verify('the video by TestMu AI is visible');\n\n    await app.teardown(); // closes the appium session, writes the report\n  }, 120_000);\n});\n```\n\n**Three execution surfaces:**\n\n| Method                           | Use when                                                                                                                                                  |\n| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `app.run(instruction, options?)` | One natural-language step. Returns `{ success, action, message }` — does NOT throw on failure. `options` overrides wait/scroll config for this call only. |\n| `app.verify(claim)`              | Assertion. Throws `AppClawAssertionError` so the test framework records a failure.                                                                        |\n| `app.runFlow(path)`              | Execute a YAML flow file end-to-end.                                                                                                                      |\n| `app.runGoal(goal, opts?)`       | Hand the goal to the LLM agent (same as CLI agent mode). Supports `exportPath` (see below).                                                               |\n\n**Recording goal runs as replayable tests** — pass `exportPath` to `runGoal()` and the agent's trajectory is written as a runnable vitest spec when it finishes:\n\n```ts\nawait app.runGoal('open YouTube, search for Appium 3.0, play first result', {\n  exportPath: 'tests/e2e/youtube.test.ts',\n});\n```\n\nThe exported file replays via `app.run(...)` calls — no LLM cost, no agent loop. The exporter:\n\n- Prepends the synthetic `launch_app` step the preprocessor handled (so the launch isn't missing from the replay)\n- Drops the entire branch before a rejected `done` decision — the recovery path the agent took after a verification failure is the only one preserved\n- Translates internal agent tools (`find_and_click`, `find_and_type`, etc.) back into natural language so the test reads like English\n\nRead the four caveats embedded in the generated file header before running it in CI — replays don't inherit the agent's safety net.\n\n**Per-command overrides** — `app.run()` takes an optional second argument that wins over the instance defaults for that one step. Useful for a slow screen that needs a longer wait, or a tight list that needs a shorter scroll:\n\n```ts\n// Wait up to 20s for this specific (slow-loading) screen\nawait app.run('click on Dashboard', { waitTimeout: 20000 });\n\n// Scroll a short distance, up to 5 times, to find an item\nawait app.run('scroll down until Karma is visible', { scrollMode: 'short', scrollTimes: 5 });\n\n// A single full-screen swipe\nawait app.run('swipe up', { scrollMode: 'full' });\n```\n\n| `RunOptions` field | Purpose                                                                                 |\n| ------------------ | --------------------------------------------------------------------------------------- |\n| `waitTimeout`      | Implicit-wait timeout (ms) for this command's target element. Overrides instance value. |\n| `waitInterval`     | Poll cadence (ms) for this command's implicit wait.                                     |\n| `scrollMode`       | Scroll/swipe distance: `short` (~30%) / `medium` (~60%) / `full` (~90%) of the screen.  |\n| `scrollTimes`      | Repeat count (plain swipe) or max scroll attempts (`scroll … until …`).                 |\n\n`scrollMode` / `scrollTimes` can also be set on the constructor as instance-wide defaults.\n\n**Constructor options** (all optional — env vars fall through):\n\n| Option         | Default       | Purpose                                                                                                                                             |\n| -------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `provider`     | `gemini`      | LLM provider (`anthropic` / `openai` / `gemini` / `groq` / `ollama`)                                                                                |\n| `apiKey`       | env           | API key for the chosen provider                                                                                                                     |\n| `model`        | (auto)        | Model ID override                                                                                                                                   |\n| `platform`     | `android`     | Target platform                                                                                                                                     |\n| `deviceUdid`   | (auto)        | Pin to a specific device — required when running tests in parallel                                                                                  |\n| `agentMode`    | `dom`         | `dom` or `vision` — vision-mode `verify()` failures include the LLM's reason                                                                        |\n| `waitTimeout`  | `10000`       | Implicit wait (ms) — each action polls until its target is on screen before acting, so you don't need `wait …` steps between calls. `0` = fail-fast |\n| `waitInterval` | `300`         | Poll cadence (ms) for `waitTimeout`                                                                                                                 |\n| `scrollMode`   | (engine ~60%) | Default scroll/swipe distance: `short` / `medium` / `full`. Override per call via `run()`                                                           |\n| `scrollTimes`  | (parsed)      | Default scroll/swipe repeat / max-scroll count. Override per call via `run()`                                                                       |\n| `video`        | `false`       | Record screen and embed in the auto-generated report                                                                                                |\n| `report`       | `true`        | Write an HTML report to `.appclaw/runs/` on teardown                                                                                                |\n| `mcpDebug`     | env / `false` | Stream `[appium-mcp]` subprocess logs. Overrides `MCP_DEBUG=1`                                                                                      |\n| `silent`       | `false`       | Suppress the per-step `✓ #N tap \"label\"` log lines. Default off — SDK consumers see device activity to match the playground UX.                     |\n\n**TypeScript types** — the package ships full type declarations (`package.json` → `types: dist/sdk/index.d.ts`), so editors give autocomplete on every option and `tsc` rejects typos before a test runs. The public types are importable by name:\n\n```ts\nimport { AppClaw, AppClawStepError, AppClawAssertionError } from 'appclaw';\nimport type { AppClawOptions, RunOptions, ScrollDistance, RunResult, FlowResult } from 'appclaw';\n```\n\nDefinitions:\n\n```ts\n/** How far each scroll/swipe travels, as a fraction of the screen. */\ntype ScrollDistance = 'short' | 'medium' | 'full'; // ~30% / ~60% / ~90%\n\n/** Constructor config — every field optional; unset falls back to env / defaults. */\ninterface AppClawOptions {\n  provider?: 'anthropic' | 'openai' | 'gemini' | 'groq' | 'ollama';\n  apiKey?: string;\n  model?: string;\n  platform?: 'android' | 'ios';\n  deviceUdid?: string;\n  agentMode?: 'dom' | 'vision';\n  maxSteps?: number;\n  stepDelay?: number;\n  waitTimeout?: number; // implicit-wait timeout (ms), default 10000\n  waitInterval?: number; // poll cadence (ms), default 300\n  scrollMode?: ScrollDistance;\n  scrollTimes?: number;\n  silent?: boolean;\n  failOnError?: boolean;\n  report?: boolean;\n  reportName?: string;\n  video?: boolean;\n  mcpTransport?: 'stdio' | 'sse';\n  mcpHost?: string;\n  mcpPort?: number;\n  mcpDebug?: boolean;\n}\n\n/** Per-command overrides — the optional 2nd arg to `app.run()`. */\ninterface RunOptions {\n  waitTimeout?: number;\n  waitInterval?: number;\n  scrollMode?: ScrollDistance;\n  scrollTimes?: number;\n}\n\n/** Returned by `app.run()`. */\ninterface RunResult {\n  success: boolean;\n  action: string; // resolved step kind: tap | type | openApp | swipe | …\n  message: string;\n}\n```\n\nBecause `RunOptions` is an `interface`, TypeScript's excess-property check flags a misspelled key (`waitTimout`) and the `ScrollDistance` union rejects an invalid value (`'shrt'`) with a \"Did you mean …?\" hint — so the options object is fully type-checked, not just `any`:\n\n```ts\nawait app.run('swipe up', { scrollMode: 'shrt' }); // ✗ TS error: not assignable to ScrollDistance\nawait app.run('swipe up', { waitTimout: 1000 }); // ✗ TS error: unknown property (did you mean waitTimeout?)\n```\n\n> Inside this repo, import from the relative source path (`../src/sdk`) instead of `'appclaw'`.\n\n### Explorer (PRD-driven test generation)\n\nGenerate YAML test flows from a PRD or app description — the explorer analyzes the document, optionally crawls the app on-device, and outputs ready-to-run flows:\n\n```bash\n# From a text description\nappclaw --explore \"YouTube app with search and playback\" --num-flows 5\n\n# From a PRD file, skip device crawling\nappclaw --explore prd.txt --num-flows 3 --no-crawl\n\n# Full options\nappclaw --explore \"Settings app\" --num-flows 10 --output-dir my-flows --max-screens 15 --max-depth 4\n```\n\n### Record & replay\n\n```bash\n# Record a goal execution\nappclaw --record \"Open Settings\"\n\n# Replay a recording (adaptive — reads screen, not coordinates)\nappclaw --replay logs/recording-xyz.json\n```\n\n### Goal decomposition\n\n```bash\n# Break complex multi-app goals into sub-goals\nappclaw --plan \"Copy the weather and send it on Slack\"\n```\n\n## Configuration\n\nAll configuration is via `.env`:\n\n| Variable              | Default            | Description                                                                                                                                                              |\n| --------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| **Platform**          |                    |                                                                                                                                                                          |\n| `PLATFORM`            | (prompt)           | Target platform: `android` or `ios`                                                                                                                                      |\n| `DEVICE_TYPE`         | (prompt)           | iOS device type: `simulator` or `real`                                                                                                                                   |\n| `DEVICE_UDID`         | (auto)             | Device UDID — skips device picker                                                                                                                                        |\n| `DEVICE_NAME`         | (auto)             | Device name — partial match (e.g. `iPhone 17 Pro`)                                                                                                                       |\n| **LLM**               |                    |                                                                                                                                                                          |\n| `LLM_PROVIDER`        | `gemini`           | LLM provider (`anthropic`, `openai`, `gemini`, `groq`, `ollama`)                                                                                                         |\n| `LLM_API_KEY`         | —                  | API key for your provider (not used for local Ollama; see `OLLAMA_*` for cloud URL / auth)                                                                               |\n| `LLM_MODEL`           | (auto)             | Model override (e.g. `gemini-3.1-flash-lite`, `claude-sonnet-4-20250514`)                                                                                                |\n| `OLLAMA_BASE_URL`     | (default)          | Ollama API base URL (e.g. remote or Docker). Empty = `http://127.0.0.1:11434` (`LLM_PROVIDER=ollama`)                                                                    |\n| `OLLAMA_API_KEY`      | —                  | Optional Bearer token for Ollama Cloud or authenticated endpoints (`LLM_PROVIDER=ollama`)                                                                                |\n| `AGENT_MODE`          | `vision`           | `dom` (XML locators) or `vision` (screenshot-first)                                                                                                                      |\n| **Agent**             |                    |                                                                                                                                                                          |\n| `MAX_STEPS`           | `30`               | Max steps per goal                                                                                                                                                       |\n| `STEP_DELAY`          | `500`              | Milliseconds between steps                                                                                                                                               |\n| `WAIT_TIMEOUT`        | `10000`            | Implicit wait (ms) for an element to be ready before each SDK action; `0` disables (fail-fast)                                                                           |\n| `WAIT_INTERVAL`       | `300`              | Poll cadence (ms) for `WAIT_TIMEOUT`                                                                                                                                     |\n| `LLM_THINKING`        | `off`              | Extended thinking/reasoning (`on` or `off`)                                                                                                                              |\n| `LLM_THINKING_BUDGET` | `1024`             | Token budget for extended thinking                                                                                                                                       |\n| `SHOW_TOKEN_USAGE`    | `false`            | Print token usage and cost per step                                                                                                                                      |\n| **Output**            |                    |                                                                                                                                                                          |\n| `EXPORT_DIR`          | `.appclaw/exports` | Default directory for `--export` and `/export *.test.ts`. Bare filenames land here; paths with a directory hint are used verbatim. Override per-run with `--export-dir`. |\n| `MCP_DEBUG`           | `0`                | Stream verbose `[appium-mcp]` subprocess logs and per-tool timing. SDK can override via `mcpDebug` option.                                                               |\n| **Cloud devices**     |                    | See [Cloud devices](#cloud-devices) below                                                                                                                                |\n| `CLOUD_PROVIDER`      | (local)            | `browserstack`, `saucelabs`, `lambdatest`, or `custom`. Empty = local device.                                                                                            |\n| `CLOUD_USERNAME`      | —                  | Cloud account username (not required for `custom` when auth is in `CLOUD_SERVER_URL`)                                                                                    |\n| `CLOUD_ACCESS_KEY`    | —                  | Cloud access key / token                                                                                                                                                 |\n| `CLOUD_DEVICE_NAME`   | —                  | Remote device name, e.g. `Samsung Galaxy S24`, `iPhone 14`                                                                                                               |\n| `CLOUD_OS_VERSION`    | —                  | Remote OS version, e.g. `14`, `16`                                                                                                                                       |\n| `CLOUD_APP`           | —                  | App to install (provider-specific: `bs://…`, `lt://…`, `storage:…`, or an HTTP URL). Passed as `appium:app`.                                                             |\n| `CLOUD_BUILD_NAME`    | —                  | Dashboard build label — mapped into the provider's options namespace                                                                                                     |\n| `CLOUD_PROJECT_NAME`  | —                  | Dashboard project label                                                                                                                                                  |\n| `CLOUD_REGION`        | `us-west-1`        | Data-center region for Sauce Labs (ignored by other providers)                                                                                                           |\n| `CLOUD_SERVER_URL`    | (built-in)         | Full hub URL. **Required** for `CLOUD_PROVIDER=custom`; optional override for known providers. May embed `user:key@` auth.                                               |\n\n## How It Works\n\nEach step, AppClaw:\n\n1. **Perceives** — reads the device screen (UI elements or screenshot)\n2. **Reasons** — sends the goal + screen state to an LLM, which decides the next action\n3. **Acts** — executes the action (tap, type, swipe, launch app, etc.)\n4. **Repeats** until the goal is complete or max steps reached\n\n### Agent Actions\n\n| Action                      | Description                         |\n| --------------------------- | ----------------------------------- |\n| `tap`                       | Tap an element                      |\n| `type`                      | Type text into an input             |\n| `scroll` / `swipe`          | Scroll or swipe gesture             |\n| `launch`                    | Open an app                         |\n| `back` / `home`             | Navigation buttons                  |\n| `long_press` / `double_tap` | Touch gestures                      |\n| `find_and_tap`              | Scroll to find, then tap            |\n| `ask_user`                  | Pause for user input (OTP, CAPTCHA) |\n| `done`                      | Goal complete                       |\n\n### Failure Recovery\n\n| Mechanism             | What it does                                             |\n| --------------------- | -------------------------------------------------------- |\n| **Stuck detection**   | Detects repeated screens/actions, injects recovery hints |\n| **Checkpointing**     | Saves known-good states for rollback                     |\n| **Human-in-the-loop** | Pauses for OTP, CAPTCHA, or ambiguous choices            |\n| **Action retry**      | Feeds failures back to the LLM for re-planning           |\n\n## CLI Reference\n\n```\nUsage: appclaw [options] [goal]\n\nPlatform & Device:\n  --platform <android|ios>        Target platform (default: prompt on macOS, android elsewhere)\n  --device-type <simulator|real>  iOS device type (default: prompt when --platform ios)\n  --device <name>                 Device by name, partial match (e.g. \"iPhone 17 Pro\")\n  --udid <udid>                   Device by UDID (skips device picker)\n\nModes:\n  --flow <file.yaml>              Run declarative YAML steps (no LLM needed)\n  --playground                    Interactive REPL to build YAML flows\n  --explore <prd>                 Generate test flows from a PRD or description\n  --record                        Record goal execution for replay\n  --replay <file>                 Replay a recorded session\n\nExport:\n  --export [path]                 Write a replayable vitest spec after a goal run\n                                  Empty: $EXPORT_DIR/<goal-slug>.test.ts\n                                  Bare filename: $EXPORT_DIR/<name>\n                                  Path with slash: used verbatim\n  --export-dir <dir>              Override EXPORT_DIR for this run\n\nExplorer:\n  --num-flows <N>                 Number of flows to generate (default: 5)\n  --no-crawl                      Skip device crawling (PRD-only generation)\n  --output-dir <dir>              Output directory for generated flows\n  --max-screens <N>               Max screens to crawl (default: 10)\n  --max-depth <N>                 Max navigation depth (default: 3)\n\nEnvironment variables (CI-friendly):\n  PLATFORM          android | ios\n  DEVICE_TYPE       simulator | real\n  DEVICE_UDID       Device UDID\n  DEVICE_NAME       Device name\n  EXPORT_DIR        Default dir for --export bare filenames (.appclaw/exports)\n```\n\n## AI Agent Skills\n\nIf you're using **Claude Code**, **Codex**, or another tool that supports [skills](https://github.com/vercel-labs/skills), add the AppClaw skills to get expert help writing YAML flows and using the CLI:\n\n```sh\nnpx skills add AppiumTestDistribution/appclaw\n```\n\nThis installs two skills:\n\n| Skill                   | What it does                                                                                                                   |\n| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------ |\n| `generate-appclaw-flow` | Generates YAML flow files — knows the exact step syntax, natural language patterns, phased formats, and variable interpolation |\n| `use-appclaw-cli`       | Helps run flows, configure `.env`, set up devices, choose vision providers, and troubleshoot                                   |\n\nSkills are auto-discovered if you're working inside a clone of this repo.\n\n## Agent-Driven Device CLI\n\nFor Claude Code, Gemini CLI, Codex CLI, and other agents that can run terminal\ncommands, install the separate agent-native CLI:\n\n```sh\nnpm install -g appclaw-agent\nappclaw-agent help workflow\n```\n\n`appclaw-agent` maintains named device sessions across commands and returns\ncompact UI references for deterministic interaction:\n\n```sh\nappclaw-agent --session login open com.example.app --platform android\nappclaw-agent --session login snapshot -i --json\nappclaw-agent --session login press @e1 --json\nappclaw-agent --session login close\n```\n\nInstall the `use-appclaw-agent-cli` skill to teach a supported agent this\nworkflow. Vision operations are available explicitly through `--vision` when\nAppClaw vision is configured.\n\n## License\n\nLicensed under the Apache License, Version 2.0. See `LICENSE` for the full text.\n","readmeFilename":"README.md"}