{"_id":"@mobileaidev/ai-app-bridge","_rev":"40-e4c6b36cab55c4925cfa38116eaf9c7a","name":"@mobileaidev/ai-app-bridge","dist-tags":{"next":"0.4.1","latest":"0.4.1"},"versions":{"0.2.0":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.0","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.0","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"2f0a4f144e6261f0a79eb40aa258cd9ecdb6fea1","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.0.tgz","fileCount":4,"integrity":"sha512-AUhu9cV5s/pXTybKge4+pCrO05Ej6CxPuxny2sch4CXEmjrvXGqFq8UMU8jxMDFYooUXuuzU4NUT/FyuAL1cpg==","signatures":[{"sig":"MEQCIC5mJiUtxUdxyKO7ZyaFFVZcyFk8HegLxQ2LVMoco+2MAiANP/DOshZa64Ykg6Gfd9nvIjfvcPQxEyDCY73iAhIeeg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171835},"gitHead":"018789be4f846801e297f3a136de31b393c5cb97","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.0_1779265206372_0.7296811574449562","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.1","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.1","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"de06f77033d666d587cdba9a8f93895411eee62d","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.1.tgz","fileCount":4,"integrity":"sha512-Y7Ko2mQcUnOcSoDuoY6zq1jrtOWrVwmBmaqOguPEacJYr1A7k55+30SC3I3wDPDNXjj3l/GuysCzVKE3JeoUdA==","signatures":[{"sig":"MEQCICCU03ivnnGpO1g2eSALo2T+fBvJwiSgO/3rv6oZXUn3AiAK4wfGAnStCmxeWXSQZc5QL7v7KZrjtbYTrFQhMWwGrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179473},"gitHead":"018789be4f846801e297f3a136de31b393c5cb97","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.1_1779266738019_0.7959976138889442","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.2","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.2","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"6fb9afa88d41c6dc6c3bcc68c251153d0e2de0be","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.2.tgz","fileCount":4,"integrity":"sha512-sQZu8hkPKylTmYL6zKJ9CCOTAHw56x2fN5a/hHi6QSAl3jFnoJXvU+q57KGTeNp7osZXQnIjGJpgSanEWu1Q0w==","signatures":[{"sig":"MEUCIQCeqtbggkoTjShzsrjLxweFgGowWWgNrU9Fmzn+thG6PQIgB66+TelSS2FBiV+GZDtJYbxddXYfrTPrB6BKi809P78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195472},"gitHead":"1584ec70f52698b00fe44c19fe2dd358929f28c0","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.2_1779267723295_0.9276146595196728","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.3","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.3","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"13b229b7fab893537d647d4009358c2386022077","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.3.tgz","fileCount":4,"integrity":"sha512-B8Qt3GmA5Ch/84mi+UpOVtwH17MBxElIKz4rJ6Yb94Rt3lxCVgzoFy3loovEZLws6aZY6PMYbvBOD7tIx3R9QQ==","signatures":[{"sig":"MEUCIQCbicy2suXibwKeBQSRRnfaGlFDg7QvxNSyeDyrTlqMVgIgHjI4wrxyyuwGQMaZuq55FYwgLc3dlZ64cpcDIE/2wzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":196089},"gitHead":"1c4db511be5c63953b8535d7034232a5f640ef1a","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.3_1779270589144_0.11860124610206602","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.4","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.4","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"4725e2b36ea9c13619de04f50ae000059cf0e945","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.4.tgz","fileCount":4,"integrity":"sha512-HtDBzWIWgCeo7wWY1c/db75zpkCyjplqzz2iD2X9unn1YowSZ1OG6IgnnVFxRLGqsNMbiVxPK6NVPRL3mx3H/w==","signatures":[{"sig":"MEUCIQC3OS5LApB9V3CpkqbvAj5jII6jyA0bbZsCpudp3hfYEAIgWuFL/fUlmTx/7lpavwPP3IDIUofVEpERe0R9xX24DAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197032},"gitHead":"eb8abed5431969e5841745d30bb63948a9e21584","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.4_1779274816762_0.4613244305853832","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.5","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.5","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"e74d6879e42b79cad65ee7f0f45d7a1bda694c20","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.5.tgz","fileCount":4,"integrity":"sha512-su8klc7qLktwTcf7hPdUXagOWuXCyRy/+NDFzWqB5LG+nft8elxVnTXI+BZXxvsx6PjlU4Y1nl3vxFd6sadgEg==","signatures":[{"sig":"MEYCIQD8MZ5CETAtOEHuyL6OLuRCCCE5K5kOUwx7sucYW55gpAIhALTLTvpxzFT35QBJyU0lLbEU+jcM/fOPcs2hBkPF7jEA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206691},"gitHead":"928d338d970956a5ed9cfc47034dcbf6c79169a9","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.5_1779277871948_0.9949105803624425","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.6","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.6","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"76047684bed6550b76ed71021b0495d768a11087","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.6.tgz","fileCount":4,"integrity":"sha512-TlSlysHUWmfn7bz0mT2UFAzFKPl8OC4pDfQNtK9/lOTCItv2wc0eWPT0zaqRU6hc3IttSfDP0hIScNqa2gdr6A==","signatures":[{"sig":"MEQCIDqOtmC9sGc4xhlgIx2nRODSt1Ji7PPk6vYcVrlh/c18AiBXG/Qvdjd3cgMMvI588PQ0V80tyMS+rxalAfVvWD3w8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210177},"gitHead":"928d338d970956a5ed9cfc47034dcbf6c79169a9","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.6_1779358467476_0.36275712876201727","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.7","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.7","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"b7f9a42f806435f98babda4590141caa4225076b","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.7.tgz","fileCount":6,"integrity":"sha512-osE/E4KuhAr+wn/Yv6GLtzz09FQJOjoj5TOMB68rFzOEp9XrYJW9hPMt0TgpCL8OF6z4rcL9tR8K16LtKnwp5Q==","signatures":[{"sig":"MEQCICIYgvBg+34azywin/PePXp7LtUyXCLBpj6I4a/jDBBKAiA3gQc1Lt6ihRp6FJaKUBMThXKdVd1OwgV3c5zD2DdCow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224087},"gitHead":"4392add6329fe4e03135e70786b0843a20e0af95","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.7_1779522744600_0.6373399704237654","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.8","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.8","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"36834c22026133c8372024b2d2915c4ca1a256ce","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.8.tgz","fileCount":6,"integrity":"sha512-52s1fR+6WQidYtnQtFi7I2gdy8XOJGrR5OC4vv71dOkRVzq0dIZpS6sflKLmNAAmJmUSwRgNsW/Z+NPdxf8VWg==","signatures":[{"sig":"MEUCIQCUC4wzuaQCRzIKCmzxAIWfv9FItxwscdxOJoc5gk756wIgCMFYccB3xW/Jo+IMambTHsk3cTj9bN7Q0ZvDImMSDjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224086},"gitHead":"8f003b9f9d513feaf88ee8dfd1e6b4ebf3ea2a22","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"10.9.2","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"22.15.1","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.8_1779758191959_0.04975508639432791","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.9","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.9","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"ce300ae4be1a1020786c5d22f37f800e72b7acbd","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.9.tgz","fileCount":6,"integrity":"sha512-vbwh7swFllIbZQhr77lXMGOnk4ygpkPsEnudO8Ij6bAjrn4tDlnI1ix6OoMU5672SG+31ACGu9xN1O/rU5fX2A==","signatures":[{"sig":"MEUCIQCR5Xt4qZ9SbQfY1LmIwPdAUkAgPrk6/ltqelNvEbMXgwIgBaMsQ93N6SV5B5zC10K1odMrJeDwDhTw5oKPea2mhHg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226920},"gitHead":"c4a5db44eac8a40df6d5448c42fe7ca5f51ad1d0","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.9_1781396324638_0.8712767053819008","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.10","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.10","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"cb4fbd7d7ee29af0fd3d3a54edcc9bd5740a6df8","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.10.tgz","fileCount":7,"integrity":"sha512-kS2bp1vAFi1epA4dffuIkeSchC4l5OZvgpvU483Ghnjl1Q4cMtwf9g56+Fi2U/oBbvQLFShSoZlIESMXRvHtMw==","signatures":[{"sig":"MEQCIBSESEPP5p6GYFLQSzP7VJFe08rXJ1CC4VbsRD4bxR7zAiADdxC8mB3/1gcUExp5oJZk7DeLPojNWvfBrylg30m70A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":249743},"gitHead":"c4a5db44eac8a40df6d5448c42fe7ca5f51ad1d0","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.10_1781419581935_0.27243915889930936","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.11","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.11","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"364995db2d08d873e3bbdd5deea0763098d3ba21","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.11.tgz","fileCount":8,"integrity":"sha512-KMKHqPDlaHrVsum4zBxFs/CkXwqhVv6GOtOHXJtDkmBBD1Zz/19n3MhaJMfLbBCAKrmMpcG3lKMxTYDEwuRcBA==","signatures":[{"sig":"MEUCIQCOa1Z4SzURTRmq9U2ttgFGsxTaAou/gVb8NJPxKJYM4wIgAlb/cYVum43IQ/pld6Kf6JBzKovXvUPgb9C2YYIl2JQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":301759},"gitHead":"20342c102444ba189a95617b83ada0a24825287b","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"^14.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.11_1781431267366_0.42725885891155624","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.12","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.12","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"4652e35e13413ca1482a6f86584fe30548ef4898","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.12.tgz","fileCount":8,"integrity":"sha512-airLAEGOxa5aRfRWLQH6ObbL07Q48qIQlryHC2R1Fr6PHN0vkq0rqzgpn0tSlWYXNQfI/sQRyuHkID1uFerqBQ==","signatures":[{"sig":"MEQCIHddCIekjYhFz3x3WiIse3mTn42iHOCY5tPucUSjiCTRAiBQWV4c0K7u65uLmqfzeWTY2Rc9ae9o4uWTb6f1H6j4PA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":305107},"gitHead":"20342c102444ba189a95617b83ada0a24825287b","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"^14.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.12_1781436478464_0.9459866790301614","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.13","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.13","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"0715e4edd53ac3b20913e602ef7e6b75719edfc8","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.13.tgz","fileCount":8,"integrity":"sha512-l536xZAJ3OlAxuLE8HgRJaU7P09tXo5VMZ50KLkAkT+BQzclnKwclBB8twmRQqV9B7356zNp5ySfXsXD6ZW+5w==","signatures":[{"sig":"MEYCIQDLBTD1JQePMAeA1YbUGacnOkSzY9xm2aBqGBkNRpuGHAIhAOe3UNDA/NPAcNcgp+cYfC8PgwMl19Rv/ZgVA95Jlq+n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":312692},"gitHead":"35399da462fc7d8df55b0934f492f3ebacf5f6e1","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"^14.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.13_1781509159719_0.8201332550407501","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.14","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.14","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"87ada12478b62d780f6186c4fb17b5ec0ff7300d","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.14.tgz","fileCount":9,"integrity":"sha512-w8189XcVUKDmWNNNcsv06s2q+BkNtJZikSNaMqYMh9Oo8PnJSCNhgNIVu24skrN94trlL6ZnuangNB9L6SP/yw==","signatures":[{"sig":"MEUCIBQNgL5KV2ecYaI/8X/8rLMet5Ib6uXWDpYTjNc5MmBWAiEA7YPYx2tvqudKkIIhxrytQFA30iamedZahxSbnAr+CJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":315958},"gitHead":"02fce6b138527b3a6b595f0c89b11b6f5c14c4f1","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"^14.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.14_1783418532698_0.10472378789208903","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@mobileaidev/ai-app-bridge","version":"0.2.15","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.2.15","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"db3416adbf8df0ebaeddecacc354afeb9bf5961e","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.2.15.tgz","fileCount":9,"integrity":"sha512-TdmTudXmM46K1pcSUsGDu9j5HhE//BkU+wXrmhUGzziZYiKwXfSNwUy4NwLnfrYKwxHuHHi2EsCYbzZgxfgxkA==","signatures":[{"sig":"MEQCID2D8OQGKylOSm+VqiCULOcoAazOY6xmFm98Gs4nBNV1AiBHDpkAyjNbOuBxYGwjvvmtYyBTyCCSGRubCewXlXrOhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316799},"gitHead":"fc576dc738565856d8d2a971d284e74d8f0b4772","scripts":{"test":"node --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --test"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"^14.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.2.15_1783424240700_0.17493781668331665","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-rc.1":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.0-rc.1","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.0-rc.1","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"f613d5de4155e824467ca638f2808944e81b8356","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.0-rc.1.tgz","fileCount":157,"integrity":"sha512-tkQkZADSQznb/0SKxutDr3BtBvip1k508+clloDQ+HIucVMyXFdvAxP7zpYqA58t+4ZbvtkzSoIDOvzEZCd0KQ==","signatures":[{"sig":"MEYCIQDSPBC+vEGkqa6fzJQQJyVUfoZ0b1Nzv3VS7WcgMr71XwIhAOZtY6Jl1OGVLiV94Y1Z+0GYxnJ7s0GqZabeDaJGmoAR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1494518},"_from":"file:build/ai_app_bridge_artifacts/final-mcp-guidance-20260912-01/mobileaidev-ai-app-bridge-0.3.0-rc.1.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/final-mcp-guidance-20260912-01/mobileaidev-ai-app-bridge-0.3.0-rc.1.tgz","_integrity":"sha512-tkQkZADSQznb/0SKxutDr3BtBvip1k508+clloDQ+HIucVMyXFdvAxP7zpYqA58t+4ZbvtkzSoIDOvzEZCd0KQ==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.0-rc.1_1789196983415_0.1365777334418703","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-rc.2":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.0-rc.2","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.0-rc.2","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"8337fff997a6d26396409e70df11818e3b3fcb2c","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.0-rc.2.tgz","fileCount":157,"integrity":"sha512-lZk/Dq1Xotnf2xVL62t1e3MOcp0FVycnK3dC8a0NaTv1GIntlROtbQT1Dzb3baM0rSRNWl8hLr+k+NdcHuDHYg==","signatures":[{"sig":"MEUCIQCGptnhPY4I0KMM134d0yjcDF6H0/dGWz5WZfwnAwWmZAIgbFSk1Df/9+dzkdBN5FHMRh7v5PLRQcfZKAv0VvUYRtI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1494516},"_from":"file:build/ai_app_bridge_artifacts/publish-20260912-02/mobileaidev-ai-app-bridge-0.3.0-rc.2.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/publish-20260912-02/mobileaidev-ai-app-bridge-0.3.0-rc.2.tgz","_integrity":"sha512-lZk/Dq1Xotnf2xVL62t1e3MOcp0FVycnK3dC8a0NaTv1GIntlROtbQT1Dzb3baM0rSRNWl8hLr+k+NdcHuDHYg==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.0-rc.2_1789197866172_0.4889640442793295","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-rc.3":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.0-rc.3","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.0-rc.3","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"03cd448019ed18908cf19884332d56b228b4b886","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.0-rc.3.tgz","fileCount":157,"integrity":"sha512-BsJuYDop7l6ODtDiNGj1B33qx2YLecPfr6Jx85L7WIuV3JGaXWZaEdCEGs02CJb/ExFbc9eOszvxNTDIv1FrfA==","signatures":[{"sig":"MEUCIBl7PiZuTMprd/aX0zRjYvOu1AJv14+KN53Tcrs7q9W7AiEA7UrpUnVeHTNL6mDDtzmzBRe33+XU9q5oTYrHOUW4Gmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1494516},"_from":"file:build/ai_app_bridge_artifacts/publish-20260912-03/mobileaidev-ai-app-bridge-0.3.0-rc.3.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/publish-20260912-03/mobileaidev-ai-app-bridge-0.3.0-rc.3.tgz","_integrity":"sha512-BsJuYDop7l6ODtDiNGj1B33qx2YLecPfr6Jx85L7WIuV3JGaXWZaEdCEGs02CJb/ExFbc9eOszvxNTDIv1FrfA==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.0-rc.3_1789198895765_0.6718060200777545","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.0","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.0","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"5301250d7cfdabb840b8c19584c2a3caa4a07c4c","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.0.tgz","fileCount":157,"integrity":"sha512-8va6V6MXwRwltLYbj4m0DvqA9/JSLSP3nsd7fWxO2o478jT0CQ6BgUuEZ/WtLPXaA9Zaz3QMPDbuYnALht50gg==","signatures":[{"sig":"MEUCIDeFknKAaNxgJKqvPvynuQ/Ck31JsTc9PNc/urfsTkqcAiEA22Xs4c61zI9XZZ1fNARBE0A2TbSaSwkooZhXxVGcm1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1494643},"_from":"file:build/ai_app_bridge_artifacts/publish-stable-20260912-01/mobileaidev-ai-app-bridge-0.3.0.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/publish-stable-20260912-01/mobileaidev-ai-app-bridge-0.3.0.tgz","_integrity":"sha512-8va6V6MXwRwltLYbj4m0DvqA9/JSLSP3nsd7fWxO2o478jT0CQ6BgUuEZ/WtLPXaA9Zaz3QMPDbuYnALht50gg==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.0_1789200428420_0.032678647550420825","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.1","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.1","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"2938fca1af63f1327b05446edfea8b69a50c871a","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.1.tgz","fileCount":157,"integrity":"sha512-IrNLJ4LaH+hWs2z+BpdxlEwFnwt7j2H35QMc0W09UZb6JZMZTD6D15t5EZYfI3DeewiHYu57FKN2DKeMlXm8WQ==","signatures":[{"sig":"MEYCIQDbhkr/pJ8RU8NXKhCZ/HobX18dlU7GEtt5cg6NKnaOcwIhAMRe2y2/0W16nVDlOsucRILcbqJpMWMKSYv2vJeONsTt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1499139},"_from":"file:build/ai_app_bridge_artifacts/publish-031-20260912-01/mobileaidev-ai-app-bridge-0.3.1.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/publish-031-20260912-01/mobileaidev-ai-app-bridge-0.3.1.tgz","_integrity":"sha512-IrNLJ4LaH+hWs2z+BpdxlEwFnwt7j2H35QMc0W09UZb6JZMZTD6D15t5EZYfI3DeewiHYu57FKN2DKeMlXm8WQ==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.1_1789203735359_0.9903377682129357","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.2","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.2","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"28586956eea027884c62d5431e73eda4407b3646","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.2.tgz","fileCount":157,"integrity":"sha512-k7+anX0mJG+O6Q2/nOjjjoj1xGOjaoLyzC1peSGUrk2eCFmTaja2Bek5PmtqbyVv8WODgdQrqRhzBvttSdBp8A==","signatures":[{"sig":"MEUCIQD94RW48vzTKv4ptNL1cKmuBvpQ0FWeZUx5A0JNs/MaIQIgVbvgNyXhIDu2d0mwxUYU7aPtA+fcqHivc4Ns9nrk7To=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1499139},"_from":"file:build/ai_app_bridge_artifacts/publish-032-20260912-01/mobileaidev-ai-app-bridge-0.3.2.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/publish-032-20260912-01/mobileaidev-ai-app-bridge-0.3.2.tgz","_integrity":"sha512-k7+anX0mJG+O6Q2/nOjjjoj1xGOjaoLyzC1peSGUrk2eCFmTaja2Bek5PmtqbyVv8WODgdQrqRhzBvttSdBp8A==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.2_1789204882002_0.26654819498306526","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.3","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.3","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"bc83626c00ca76f480143b50b11a64f5c66a0779","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.3.tgz","fileCount":159,"integrity":"sha512-svTxWcUDI7M0Lms/ns2XiVwjKnkKcg5881IbBJVg8ywSHfvK+XUNvRcluaWFckmXGcF5Yt6z+5cKPHZx2qSmqw==","signatures":[{"sig":"MEQCIGNDBZRXlOM8JnjIYCcNZ/AMYHjbUIMKVlq5uE6kSbHQAiAfciHH8fn8F479vjAkHAIictN/sfmBK8ZPJZuq99E52w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1521459},"_from":"file:../../build/ai_app_bridge_artifacts/publish-033-20260914-01/package-frozen/mobileaidev-ai-app-bridge-0.3.3.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/publish-033-20260914-01/package-frozen/mobileaidev-ai-app-bridge-0.3.3.tgz","_integrity":"sha512-svTxWcUDI7M0Lms/ns2XiVwjKnkKcg5881IbBJVg8ywSHfvK+XUNvRcluaWFckmXGcF5Yt6z+5cKPHZx2qSmqw==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.3_1789366232364_0.16652568934399015","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.4","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.4","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"0ae0a5425d50a8b517c7a9f2c83ffa153284e30e","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.4.tgz","fileCount":160,"integrity":"sha512-HXovDRZE9oPu3iPpLESOkvii7HN08Ge8BZ8nvm7It6LJ9nG13Vg2LA3g5pzr+AH0DLwV+5WtoXEM2pLHM9A0qg==","signatures":[{"sig":"MEYCIQC/YQy8H0WdZlV0hbqcSdZAVi088opriP8JZeoD54gWFAIhAMF0H4/0EhLL7lUobOIck70umNJdqJoI71VFQUNgzb6z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1523745},"_from":"file:build/ai_app_bridge_artifacts/publish-034-20260914-01/frozen/mobileaidev-ai-app-bridge-0.3.4.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/publish-034-20260914-01/frozen/mobileaidev-ai-app-bridge-0.3.4.tgz","_integrity":"sha512-HXovDRZE9oPu3iPpLESOkvii7HN08Ge8BZ8nvm7It6LJ9nG13Vg2LA3g5pzr+AH0DLwV+5WtoXEM2pLHM9A0qg==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.4_1789368401080_0.05942519664097179","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.5","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.5","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"452d38b9bc35de19ec520f0a2742244c50a7c3c2","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.5.tgz","fileCount":161,"integrity":"sha512-hd2bQcRay0GJCAJ2deNf20rpDSp9kB4P8Gm65mTApDVTSCOK8xueumVbvO0h9T6KUCJguLMRC0X0/R42GlgzfQ==","signatures":[{"sig":"MEYCIQC2OPEUCHP/A8l69xBpizcExJKuZFwqIAimgi2/K3TFPgIhAI35UhfpCSRnPz9JaAVHMJJGN+fOMzpKCA4u1tz1MwBC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1542961},"_from":"file:/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/uia-035/package-release/mobileaidev-ai-app-bridge-0.3.5.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/ai_app_bridge_artifacts/uia-035/package-release/mobileaidev-ai-app-bridge-0.3.5.tgz","_integrity":"sha512-hd2bQcRay0GJCAJ2deNf20rpDSp9kB4P8Gm65mTApDVTSCOK8xueumVbvO0h9T6KUCJguLMRC0X0/R42GlgzfQ==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.5_1789377699441_0.5677120555267294","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.6","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.6","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"af45cb93775a7d215e2ed16c05e8cd92d45c26ec","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.6.tgz","fileCount":174,"integrity":"sha512-8XlF71P3KQmNijRJ94biHujEXwyF+jEF+7MpyFZjZAKy2k+ZoyadHKU4Z2gdLnoUNvZAhqMTpIZmwVYpgDeMyg==","signatures":[{"sig":"MEYCIQD7/q0YMx5pvLlRX6xvIRRjDBJotdRX9O4xrFNpXKixbwIhALa+osdSNvEOxb1sEjd3Em9/PdU7S781pzduxT5Epa5i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1652090},"_from":"file:/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/release-0.3.6/cli-package/mobileaidev-ai-app-bridge-0.3.6.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/release-0.3.6/cli-package/mobileaidev-ai-app-bridge-0.3.6.tgz","_integrity":"sha512-8XlF71P3KQmNijRJ94biHujEXwyF+jEF+7MpyFZjZAKy2k+ZoyadHKU4Z2gdLnoUNvZAhqMTpIZmwVYpgDeMyg==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.6_1789463193912_0.5003231333804155","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.7","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.7","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"aa93151f0fc9298e77c004144e4d48f9b7d71599","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.7.tgz","fileCount":174,"integrity":"sha512-KcQQa0qB91BHXi4OHl0NgE8AYPaRWvKfpB2wtB1Dkql5p4UBo6kFVmhBi4BPJyga83XhrvuoyCrzzhjV/A546w==","signatures":[{"sig":"MEQCIF1mkgvQ/1LsH+uiJL/tIg16OV0lCFQ2FcH4Qm0W8/nGAiArCtlHszyAznMaZMJ1CKTcETR0kj5jITGug9d9Px7zPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1653939},"_from":"file:build/release-0.3.7/cli-package/mobileaidev-ai-app-bridge-0.3.7.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge/build/release-0.3.7/cli-package/mobileaidev-ai-app-bridge-0.3.7.tgz","_integrity":"sha512-KcQQa0qB91BHXi4OHl0NgE8AYPaRWvKfpB2wtB1Dkql5p4UBo6kFVmhBi4BPJyga83XhrvuoyCrzzhjV/A546w==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.7_1789474169948_0.181198912860018","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@mobileaidev/ai-app-bridge","version":"0.3.8","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.3.8","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"0027e13482bc4dd9a3cbb020da6a9fba03054dcb","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.3.8.tgz","fileCount":176,"integrity":"sha512-82hjioyyeFI4i34yQHE3mPpnYszUmnIY+VYJIGes8fR/F/t6Nfm2fjFM7MgaaDEfY+6pMVLZ3qWv8IeqcERwvw==","signatures":[{"sig":"MEUCIFIs/5Ryu6HtffFN5cSjw7KdiqycWrkLtJ3aMmy3A9AQAiEAsVWxTFc46xmg4TlJVZRXDVqC6HsmONDP2eAfi6YVjKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1687247},"_from":"file:build/executor-prepare-038/release-package/mobileaidev-ai-app-bridge-0.3.8.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node --import ./test-support/ownership-test-sandbox.js --test","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node --import ./test-support/ownership-test-sandbox.js --test","verify:package":"node scripts/validation/verify-package.js"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge-auto-prepare/build/executor-prepare-038/release-package/mobileaidev-ai-app-bridge-0.3.8.tgz","_integrity":"sha512-82hjioyyeFI4i34yQHE3mPpnYszUmnIY+VYJIGes8fR/F/t6Nfm2fjFM7MgaaDEfY+6pMVLZ3qWv8IeqcERwvw==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.3.8_1789482084636_0.5638861583282195","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@mobileaidev/ai-app-bridge","version":"0.4.0","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.4.0","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"8f8f1a8f68a6cfbd710d9340ab2e29deefd0f689","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.4.0.tgz","fileCount":195,"integrity":"sha512-XKAWftxYpaHMC/jsVrTKl7xw9s9UnQFEtxBl/+ZsLq2AofLTaQkFUs0vFWoNxtqZudzlJ5VO9w/OoGm9DU2GaA==","signatures":[{"sig":"MEQCIC7CTzd2nMbJbP8FXCfnG7s8bw4kXMt1uOkds5fF/e/sAiAsPdBcvqLBR2YKxQ7XHYrrO3b67haCeIz6ZwqjwPTbPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCID1Ln5efY564xZNCRywKqeaPCBjpTcY51uZMv7JNTWe6AiEA2EDlAp2/SwDiivJ/GG76RRxUE0ajLRdoanJ6IvxMCPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2281369},"_from":"file:/Users/macbook/Documents/CompanyProject/ai-app-bridge-release-evidence/0.4.0-2026-09-19/aab-040-final-package/mobileaidev-ai-app-bridge-0.4.0.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node scripts/validation/test-suite.js","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node scripts/validation/test-suite.js","verify:package":"node scripts/validation/verify-package.js","test:functional":"node scripts/validation/test-suite.js functional","test:performance":"node scripts/validation/test-suite.js performance"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge-release-evidence/0.4.0-2026-09-19/aab-040-final-package/mobileaidev-ai-app-bridge-0.4.0.tgz","_integrity":"sha512-XKAWftxYpaHMC/jsVrTKl7xw9s9UnQFEtxBl/+ZsLq2AofLTaQkFUs0vFWoNxtqZudzlJ5VO9w/OoGm9DU2GaA==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.4.0_1789805727245_0.7205187634472505","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@mobileaidev/ai-app-bridge","version":"0.4.1","license":"Apache-2.0","_id":"@mobileaidev/ai-app-bridge@0.4.1","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"bin":{"ai-app-bridge":"bin/ai-app-bridge.js","ai-app-bridge-mcp":"bin/mcp-server.js"},"dist":{"shasum":"3ebb171ca451c712e5d0ad946f8413ee461ddcd3","tarball":"https://registry.npmjs.org/@mobileaidev/ai-app-bridge/-/ai-app-bridge-0.4.1.tgz","fileCount":195,"integrity":"sha512-rzJc3ZrB0yPbIVc5Zsd6zfXk0RJnCJygUiWNL3YLpz9I3v2OByUGzEHYtmRTH2I261Qp1sRjWST98Oz8bYImXA==","signatures":[{"sig":"MEUCICuGyWuhmgDJ18zWArfda+6vIeH7vPwzFudffqHsJcfXAiEAwbi+rkophzxTd4ft/P+nTEZIROjQrd8GYGMrM2Xym88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCZoJZZx/gts5cU7SCWnJJFa8XYn3cNl/zLtBh0qUDvrAIgUcrqmrm7GenNwwVNXoV0+ArToZPQzBDNHlx5SNhk+to=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2283889},"_from":"file:/Users/macbook/Documents/CompanyProject/ai-app-bridge-release-evidence/0.4.1-2026-09-19/package/mobileaidev-ai-app-bridge-0.4.1.tgz","engines":{"node":">=26.3.0 <27"},"scripts":{"test":"node scripts/validation/test-suite.js","check":"node -c bin/ai-app-bridge.js && node -c bin/mcp-server.js && node -c bin/ios-provider.js && node scripts/validation/test-suite.js","verify:package":"node scripts/validation/verify-package.js","test:functional":"node scripts/validation/test-suite.js functional","test:performance":"node scripts/validation/test-suite.js performance"},"_npmUser":{"name":"ldppzs","email":"2390339305@qq.com"},"_resolved":"/Users/macbook/Documents/CompanyProject/ai-app-bridge-release-evidence/0.4.1-2026-09-19/package/mobileaidev-ai-app-bridge-0.4.1.tgz","_integrity":"sha512-rzJc3ZrB0yPbIVc5Zsd6zfXk0RJnCJygUiWNL3YLpz9I3v2OByUGzEHYtmRTH2I261Qp1sRjWST98Oz8bYImXA==","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"_npmVersion":"11.16.0","description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"ws":"^8.18.0","appium-webdriveragent":"14.1.1","@mobileaidev/segmented-fact-store-native":"file:../../native/segmented-fact-store"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@mobileaidev/segmented-fact-store-native"],"_npmOperationalInternal":{"tmp":"tmp/ai-app-bridge_0.4.1_1789814680502_0.7471459805477092","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-05-20T08:20:06.180Z","modified":"2026-09-19T10:46:28.225Z","0.2.0":"2026-05-20T08:20:06.518Z","0.2.1":"2026-05-20T08:45:38.172Z","0.2.2":"2026-05-20T09:02:03.511Z","0.2.3":"2026-05-20T09:49:49.293Z","0.2.4":"2026-05-20T11:00:16.909Z","0.2.5":"2026-05-20T11:51:12.111Z","0.2.6":"2026-05-21T10:14:27.640Z","0.2.7":"2026-05-23T07:52:24.766Z","0.2.8":"2026-05-26T01:16:32.102Z","0.2.9":"2026-06-14T00:18:44.794Z","0.2.10":"2026-06-14T06:46:22.123Z","0.2.11":"2026-06-14T10:01:07.513Z","0.2.12":"2026-06-14T11:27:58.620Z","0.2.13":"2026-06-15T07:39:19.864Z","0.2.14":"2026-07-07T10:02:12.874Z","0.2.15":"2026-07-07T11:37:20.904Z","0.3.0-rc.1":"2026-09-12T07:09:43.562Z","0.3.0-rc.2":"2026-09-12T07:24:26.352Z","0.3.0-rc.3":"2026-09-12T07:41:35.917Z","0.3.0":"2026-09-12T08:07:08.609Z","0.3.1":"2026-09-12T09:02:15.523Z","0.3.2":"2026-09-12T09:21:22.198Z","0.3.3":"2026-09-14T06:10:32.509Z","0.3.4":"2026-09-14T06:46:41.214Z","0.3.5":"2026-09-14T09:21:39.585Z","0.3.6":"2026-09-15T09:06:34.051Z","0.3.7":"2026-09-15T12:09:30.092Z","0.3.8":"2026-09-15T14:21:24.900Z","0.4.0":"2026-09-19T08:15:27.356Z","0.4.1":"2026-09-19T10:44:40.630Z"},"bugs":{"url":"https://github.com/mobileAiDev/ai-app-bridge/issues"},"license":"Apache-2.0","homepage":"https://github.com/mobileAiDev/ai-app-bridge#readme","repository":{"url":"git+https://github.com/mobileAiDev/ai-app-bridge.git","type":"git","directory":"desktop/ai-app-bridge-cli"},"description":"Desktop CLI and MCP server for AI App Bridge across Android, iOS, Flutter, WebView, and Web targets.","maintainers":[{"name":"ldppzs","email":"2390339305@qq.com"}],"readme":"# AI App Bridge CLI\n\nAndroid SDK connections read the selected App's private endpoint descriptor and\nbind an ADB forward to its exact `localabstract:aab-sdk-<runtimeEpoch>` socket.\n`--port` selects an optional Host port; it cannot identify an App or bypass endpoint\ndiscovery. Every request checks the mapping before dispatch. Mutating requests\nare never replayed after a missing route or uncertain result. For manual cleanup,\npass the exact serial and returned Host port to `remove-forward`.\n\nThis source version is `0.4.1`; registry publication is a separate release step.\nIt fixes iOS observation ownership and preserves extraction results when\ntemporary cleanup fails. Device and Web SDKs share version `0.4.1`; their execution contracts are unchanged.\nThe default installation includes the Script/Intent and capture contracts below.\nLocal package verification does not change npm dist-tags.\nThe supported Node range is `>=26.3.0 <27`; this release was checked on 26.3.0.\nSee [the simplest MCP setup and Host requirements](docs/INSTALLATION.md).\nSee [the release guide](docs/RELEASE.md) for local packaging and coordinated publication.\n\nOptional Android Instrumentation/UI Automator/Espresso/Compose/H5, Flutter integration_test,\nand Playwright executors use the existing `capabilities + run` and Python/JS Script contracts.\nSee [integration, dependency profiles and lifecycle](docs/OPTIONAL_EXECUTORS.md).\n\nAI App Bridge CLI/MCP supports Android native apps, Android WebView/H5/CDP,\nFlutter apps on Android and iOS, iOS native apps via `AiAppBridgeIOS` plus\nWebDriverAgent/XCUITest, WKWebView, and desktop Web Bridge sessions.\n\nIntent and Script are first-class execution interfaces. The shared command registry supplies discovery, validation and provider access. See [the command contract](docs/COMMAND_CONTRACT.md) for dispatch rules and known limits.\n\nCLI and MCP connect to one independent local execution runtime. Every registered\ncommand is available from either entrypoint, including Intent, Script, Web,\ninstallation and permission flows. A CLI command can start a task and a later MCP\nconnection can observe or decide the same operation ID. Disconnecting either\nclient leaves tasks running. Use `runtime --operation status --extract null` to inspect its\nowner, `runtime --operation stop --extract null` to drain it, and task `cancel` to stop one task.\n\nEach run explicitly supplies `extract`: `null` for the original result, or\nregex/JavaScript/Python for a smaller result. CLI: `--extract null`.\nThe compact body is `{command, execution, control, extraction, delivery, kind,\nvalue?, failureStage?}`. Original execution facts and continuation controls stay\nseparate from the extracted value. Default body budget: 96 KiB UTF-8; overflow\ncan return a saved response ref. Retry with `response read`, not the original\naction. CLI exits 0 / 1 / 2 for delivery success / execution failure or unknown /\npost-success extraction or delivery failure. See [extraction and recovery](docs/RESPONSE_EXTRACTION.md).\n\nExecution operations and nested controls use strict schemas. Supply an explicit\n`operation`, use `script.target` and canonical `javascript`/`python` languages,\nand handle call failures in source. Progress is read through `status`/`wait`.\nFlutter expert payloads are JSON objects; Web App actions use the explicit\n`action` wrapper. Unknown fields fail before storage or provider access.\n\nCommand domains:\n\n- `execution`: `intent`, `script`, `runtime`, `device-ownership`\n- `evidence`: archive export and offline verification\n\n- `core`: `status`, `tree`, `uia-tree`, `screenshot`, `logs`, `network`, `state`, `events`\n- `app`: `install-apk`, `clear-app-data`, `launch-*`, `freeze-app`, `thaw-app`, `permission-*`, `appops-set`\n- `action`: `tap`, `tap-text`, `tap-native`, `tap-uia`, `tap-uia-text`, `input-text`, `swipe`, `native-gesture`, `keyevent`, `wait-text`, `keyboard-state`, `hide-keyboard`\n- `flutter`: `flutter-tree`, `flutter-nodes`, `flutter-action`, `tap-flutter-text`, `input-flutter-text`, `scroll-flutter`\n- `webview`: `h5-*`, `flutter-h5-*`, `webview-pages`, `webview-network`, `webview-console`\n- `ios`: `ios-devices`, `ios-doctor`, `ios-setup`, `ios-execution` status/cancel/result/reconcile, `ios-*` runtime evidence, explicit `ios-wda-session`, WDA tree/tap/input/swipe/orientation, WKWebView, and Flutter iOS\n- `web`: provider/session lifecycle, `web-execution`, observations and capture, `web-command`, `web-click`, `web-input`, `web-key`, `web-wait`, `web-scroll`\n- `diagnostics` / `advanced`: `logcat`, `uia-runtime`, `forward`, `remove-forward`\n\nMCP exposes exactly two tools: call `capabilities` to discover\ndomains, commands, and options, then call `run` with the selected command.\n\n```bash\n# Install the current stable release; see docs/RELEASE.md for packaging.\nnpm install -g @mobileaidev/ai-app-bridge@0.4.1\n\nai-app-bridge status --extract null --package-name io.github.mobileaidev.aiappbridge.sample\nai-app-bridge tree --extract null --package-name io.github.mobileaidev.aiappbridge.sample\nai-app-bridge clear-app-data --extract null --serial DEVICE --package-name io.github.mobileaidev.aiappbridge.sample\nai-app-bridge launch-app --extract null --serial DEVICE --package-name io.github.mobileaidev.aiappbridge.sample\nai-app-bridge launch-activity --extract null --serial DEVICE --package-name io.github.mobileaidev.aiappbridge.sample --activity .MainActivity --extra route=/home\nai-app-bridge screenshot --extract null --package-name io.github.mobileaidev.aiappbridge.sample\nai-app-bridge input-text --extract null --serial DEVICE --package-name io.github.mobileaidev.aiappbridge.sample --text \"中文输入\" --hide-keyboard\nai-app-bridge network --extract null --package-name io.github.mobileaidev.aiappbridge.sample --compact --url-filter /api/\nai-app-bridge webview-network --extract null --package-name io.github.mobileaidev.aiappbridge.sample --duration-ms 3000\nai-app-bridge ios-devices --extract null\nai-app-bridge ios-doctor --extract null --device-id <device-or-udid> --bundle-id <ios.bundle.id> --wda-runner-bundle-id <runner-from-setup>\nai-app-bridge ios-setup --extract null --device-id <device-or-udid> --bundle-id <ios.bundle.id> --team-id <APPLE_TEAM_ID> --start-wda\nai-app-bridge ios-status --extract null --device-id <device-or-udid> --bundle-id <ios.bundle.id>\nai-app-bridge ios-execution --extract null --operation status --device-id <device-or-udid> --bundle-id <ios.bundle.id>\nai-app-bridge ios-execution --extract null --operation reconcile --device-id <device-or-udid> --bundle-id <original.ios.bundle.id>\nai-app-bridge ios-execution --extract null --operation reconcile --kind wda --device-id <device-or-udid> --wda-runner-bundle-id <runner.bundle.id>\nai-app-bridge ios-wda-session --extract null --operation create --device-id <device-or-udid> --wda-runner-bundle-id <runner-from-setup> --bundle-id <ios.bundle.id>\nai-app-bridge ios-tap --extract null --device-id <device-or-udid> --wda-runner-bundle-id <runner-from-setup> --bundle-id <ios.bundle.id> --wda-session-id <created-session> --tap-x 120 --tap-y 360\nai-app-bridge ios-input --extract null --device-id <device-or-udid> --wda-runner-bundle-id <runner-from-setup> --bundle-id <ios.bundle.id> --wda-session-id <created-session> --accessibility-id sample_text_field --clear-first --text \"hello\"\nai-app-bridge web-session-start --extract null --web-port 18180\nai-app-bridge runtime --extract null --operation status\nai-app-bridge thaw-app --extract null --serial DEVICE --package-name io.github.mobileaidev.aiappbridge.sample\nai-app-bridge freeze-app --extract null --serial DEVICE --package-name io.github.mobileaidev.aiappbridge.sample\nai-app-bridge-mcp --help\n```\n\nAI agents, model clients, automation frameworks, and IDE MCP clients reading\nthis README should load `skills/ai-app-bridge-use/SKILL.md` before operating\napps through MCP. If the client supports skills or project instructions, load\nthat file as the dedicated usage guide. If it does not, include the file content\nin the system/developer/project instructions for the task. Codex-compatible\nclients can copy the repo folder `skills/ai-app-bridge-use` into their skills\ndirectory, for example `$CODEX_HOME/skills/ai-app-bridge-use` on macOS/Linux or\n`%USERPROFILE%\\.codex\\skills\\ai-app-bridge-use` on Windows, then restart or\nrefresh the session.\n\nMCP uses a compact tool surface to avoid loading every command schema\ninto the model context:\n\n- `capabilities` lists supported targets, command domains, command names, and exact argument schemas, execution role and supported entrypoints.\n- `run` executes a selected command with command-specific arguments.\n\nThe `install-apk` command through CLI or MCP starts an Intent installation; system buttons are chosen\nfrom actual observations and the installed APK is independently verified. See\n[the installation contract](docs/COMMAND_CONTRACT.md#installation-is-an-intent-operation).\n\nThis keeps install, data reset, launch, UI action, Flutter, WebView/H5/CDP,\niOS, Web Bridge, logcat, network, permission, port-forward,\nand first-class `script`/`intent` capabilities discoverable without exposing\ndozens of full schemas at session start. `script` is trusted-local-code\nJavaScript or Python: `permissions` gate Bridge SDK calls only and are not\nan OS sandbox. There is no explore, export-to-script, or assemble-report command.\nPer-command MCP aliases and the old full surface were removed.\nAll command parameters belong exclusively in `run.arguments`.\n\nThe MCP server accepts both standard `Content-Length` framed JSON-RPC messages\nand single-line JSON messages. Responses use the format of the first request on\nthat connection, so standard MCP clients keep framed responses while local\nNode REPL scripts can send and read one JSON object per line.\n\n## Persistent facts and action feedback\n\nThe shared execution runtime serializes mutations for the same physical Android serial\nacross direct commands, Intent and Script. A durable device lease also arbitrates\nacross Host processes. Phone `logs`/`network`/`state`/`events` live in\n`MobileCaptureStore` on the device. Host live commands read the phone; the\ncollector does not copy those payloads into Host history. Android registration\ndoes not open a background SDK connection or poll `status`; explicit reads and\nIntent/Script capture still use the live provider. Android App logs\ncome from that App's in-process `logs` stream on an explicit live read. The\ncollector does not attribute device-wide logcat to the App. Device logs are\nenabled only with the additive `deviceLogScope: \"device\"` option and are stored\nas an explicit device target. One bounded stream is then reused per explicit\nserial. Web Bridge commits incoming SDK evidence directly to FactStore before\nacknowledgement; the observer does not poll or mirror those records.\nThe default buffers are `main`, `system`, and `crash`; sensitive `radio`,\n`security`, and `kernel` buffers still require explicit `deviceLogBuffers`.\nThe observer keeps at most 32 targets and retires a target after 30 minutes\nwithout an explicit operation. Android expiry uses a timer without device I/O\nand stops an opted-in log stream when its last target expires. Its limit,\nexpirations, evictions, failures, and dropped-log counters are visible in\n`_feedback.observer`. Android targets report `backgroundPolling: false`; null\npoll timestamps and runtime epochs do not represent a successful health check.\nFor `launch-app` and `launch-activity`, full feedback runs the launch first,\nthen captures a system UIA tree and optional screenshot. It does not require\nan active App SDK before launch. These snapshots show the current screen;\nwithout an event baseline, they do not establish a semantic UI change.\n\nFacts are stored once in an authoritative segmented mmap store. A bounded\nSQLite WAL index is only a rebuildable query projection; it is not a second\nfact-payload store. Legacy history, Script evidence, and Intent evidence use\nthe same runtime-owned FactStore with isolated adapters and namespaces. The\ndefault `auto` profile selects 1 GB when total disk capacity is at least 32 GiB and at\nleast 8 GiB is available, 512 MB when total disk capacity is at least 16 GiB and at\nleast 4 GiB is available, 256 MB when total capacity is at least 4 GiB and at\nleast 2 GiB is available, and 64 MB otherwise. Explicitly select a profile with\n`AI_APP_BRIDGE_FACT_CACHE_PROFILE=1gb`, `512mb`, `256mb`, or `64mb`. Override\nthe store directory with `AI_APP_BRIDGE_FACT_STORE_DIR`. The legacy\n`AI_APP_BRIDGE_FACT_CACHE_PATH` setting remains accepted and places the new\n`fact-store-v1` directory beside that path. `AI_APP_BRIDGE_FACT_CACHE=off`\ncontinues to disable Legacy fact recording without weakening Script/Intent\nevidence gates. The default macOS path is\n`~/Library/Caches/ai-app-bridge/fact-store-v1`.\n\nPartitions have independent shares of the mmap budget: network 25%, UI 18%,\nApp logs 10%, device logs 7%, state/events 10%, actions 13%, notes 5%, and index\nmetadata 2%; 10% remains reserved for manifests and recovery. The SQLite\nprojection has a separate bounded budget and cannot evict mmap facts. The\nfeedback reports the selected profile, disk selection inputs, mmap usage, and\nprojection health. The npm package bundles the native source and builds its\nNode-API binding during installation. If only the SQLite projection fails, queries\nscan the authoritative mmap records and report the projection degradation; persistent\nexecution evidence remains available. If the native store cannot initialize,\nforeground commands report degraded history and Script/Intent fail their evidence\ngate. No in-memory buffer substitutes for persistent facts.\n\nExisting SQLite fact-cache files are left intact and are not silently imported;\nopaque `fc1` cursors cannot be reused as segmented-store `fs1` cursors.\n\nThe automatic collector persists network metadata and redacted headers. It\nstores raw body byte counts plus omission flags, not request or response body\ncontent. An explicit live `network` read keeps its existing behavior. Each fact\nalso carries a canonical target key, App identity, runtime epoch, global\nsequence, timestamps, and an action id when correlation is available.\n\nOn an Android runtime that supports persistent capture, phone\n`logs`/`network`/`state`/`events` with `history: true` read the phone FactStore\nwhile the device is connected. This also applies to capture forwarded by the\nFlutter Android plugin when its embedded Android runtime has been updated.\nIf the phone or runtime is unavailable they return an explicit error and do not\nfall back to a Host-copied payload. iOS capture uses its segmented device store\nfor live, `decision-window` and `connected-history` reads. Startup, flush and\nstorage failures return explicit errors and incomplete coverage. Web evidence\nis committed on ingress to the Host FactStore; retained history pages\nHost-owned facts through the existing command plus an opaque `factCursor`.\nMobile history does not merge Host execution records into mobile facts. Use\nScript/Intent history to inspect execution records separately:\n\n```json\n{\n  \"command\": \"events\",\n  \"extract\": null,\n  \"arguments\": {\n    \"serial\": \"DEVICE\",\n    \"packageName\": \"com.example.app\",\n    \"history\": true,\n    \"limit\": 100\n  }\n}\n```\n\n## Intent, Script and evidence\n\nIntent supports daily observation and decisions; Script supports repeatable regression.\nIndividual `run` calls remain useful. A Script can be authored directly or from\nobserved Intent evidence. The duplicate batch executor has been removed. Start a Script\nthrough CLI or MCP with `operation: \"start\"` and a `script`\nobject containing `schemaVersion: \"aab.code-script/v1\"`, `language`, one of\n`source`/`sourcePath`, and an explicit Android, iOS or Web `target` for device work. Code exports\n`async function main(ctx)`; Python defines its corresponding `main` entrypoint.\nEach platform retains its own provider requirements and business acceptance evidence.\n\nRead progress with `status`/`wait`; completion exposes a small `resultRef`.\nUse `script --operation result --operation-id ID` to read the persisted final\nJSON independently of event retention, including after runtime restart. Password\nand token redaction is declared by the reference's `representation`; missing or\nevicted results return an error. Full result storage is required before a Script\ncan report `completed`.\n\nSee [Script authoring](docs/SCRIPT_AUTHORING.md) for the executable source shape,\ncall envelope, assertion results, bounded UI waits and evidence reuse boundaries.\n\nUse the public `evidence` command to export retained Intent/Script Host records\nand verify their frozen archive offline. [Evidence archives](docs/EVIDENCE_ARCHIVE.md)\ndescribes hashes, source binding, retention and the excluded external payloads.\n\n- `completed` means that execution finished. Inspect the device assertion\n  results to determine which application outcomes were verified.\n- `ctx.assert({scope: \"code\", name, condition})` checks local code. It cannot\n  claim device evidence and is counted separately in `rollingSummary`.\n- Device assertions are the default. Pass the exact `evidence` object returned\n  by a current `ctx.call`; fabricated, missing, expired or pre-mutation\n  observations are `inconclusive`. UI tree and screenshot predicates must use\n  their own evidence. The Host keeps at most 128 observations / 256 KiB of\n  assertion metadata per Script and does not retain mobile capture bodies.\n- For asynchronous mobile results, read the stream before the action. Save\n  `before.evidence.capture.watermarkCursor` and `.runtimeEpoch`; after the\n  action, pass them as `factCursor` and `runtimeEpoch` to the same stream.\n  The Host verifies that this boundary was observed before that action.\n  `afterActionId` is an optional association filter, not proof of business\n  causality; match the actual request or business fields in the predicate.\n  If startup dropped records before persistence attached, use a fresh device\n  `status.updatedAtMs` as the baseline `sinceMs` and preserve that same\n  `sinceMs` in later cursor reads. A cursor alone does not erase a recorded\n  loss fence. New loss inside the chosen window still makes it partial.\n- Strong device assertions currently require a complete single page, actual\n  refs and `hasMore: false`. Multi-page reads are supported with `nextCursor`,\n  but there is no merged multi-page assertion contract yet. Partial windows,\n  missing refs, dropped facts and unknown capture backends stay inconclusive.\n- `view: \"decision-window\"` queries the current epoch.\n  `view: \"connected-history\"` (or `history: true`) queries retained mobile\n  history. `mobileFactId` re-reads an exact ref while connected. Ref identity\n  survives App restart while the record remains retained; clear invalidates\n  the corresponding refs, and old epoch data cannot verify a new action.\n  Cursors and refs are opaque and must not be synthesized.\n- Android `status.capturePersistence` reports attachment and lifecycle state,\n  including the actual storage operation error. Strong queries remain\n  unavailable while the durable backend is not attached. Startup records\n  that could not be committed are reported as a gap.\n- `committed` means that the fact writer has made the record readable. The\n  mobile store uses group flushing; this does not promise survival of an\n  arbitrary power loss before flush. Cold disk reads and cache performance\n  are measured separately; this release has not passed the old hot-query\n  latency target on all devices and retained-store sizes.\n\nScript defaults to `restartPolicy: \"none\"`. Opt into `\"checkpoint\"` only for\nexplicitly reentrant code that uses `ctx.checkpoint` and `ctx.resume`.\nRecovery preserves the frozen source, target and permissions and uses the\nreal provider. It cannot restore an arbitrary JS/Python stack. An unmatched\nprepare/receipt, a side effect after the last user checkpoint, or an uncertain\nwrite requires reconciliation and is never automatically replayed. Completed\nand cancelled operations cannot be resumed to repeat their effects.\n\nThe old declarative Script `steps` format is rejected with\n`script_format_removed`; migrate it to an explicit code Script. All common\ncommands now use strict canonical arguments and physical Android serial arbitration\ninside the same process. Old concurrency and alias contracts have been replaced. No fake\nprovider is selected by a missing production dependency.\n\nDevelopment checkout: [Script contract validation](scripts/validation/script-contract.md)\nprovides an explicit real-device MCP runner for assertion boundaries, cancellation,\ncheckpoint recovery and durable action receipts. Supply the server, device and\npackage explicitly; these runtime checks do not imply full application acceptance.\n\nEvery normal object result keeps its legacy fields and adds `_feedback` unless\n`feedback: \"off\"` is requested. The default `auto` mode does not add post-action\nUI polling, trees, or screenshots. `feedback: \"full\"` waits briefly for a correlated UI event; when no\nchange is observed, it returns an inconclusive result plus current tree and\nscreenshot references instead of claiming success. Observer health, runtime\nepoch, dropped-log counters, and persisted fact references are reported in the\nsame feedback object.\n\nFor a coordinate tap on the foreground Android App, `auto`/`full` feedback uses\none App-local bridge request and reports the actual hit View, bounds, window,\nand touch handling result. An explicit package mismatch stops the action. System UI uses an observed\nsystem package and explicit device scope; an SDK failure does not trigger ADB retry.\nThe request id is carried into synchronous runtime log/network/state/event\nrecords. Later asynchronous records are correlated by the bounded action\ntimeline instead of being presented as an exact runtime binding.\n\nGenerated Android and iOS screenshot artifacts share the same automatic\nlifecycle: at most 20 files per screenshot prefix, no older than 24 hours, and\nat most 64 MB total. An explicitly supplied `outFile` is user-owned and is not\nautomatically removed. Screenshot bytes remain files and are never copied into\nthe fact database.\n\nFor continuous automation, start a [code Script](docs/SCRIPT_AUTHORING.md).\nNormal loops, `ctx.call`, `ctx.assert`, progress and cancellation share one\nexecution record. `tap-text` supports observed provider selection (`auto`) or\nan explicit `native`, `flutter` or `uia` provider for repeatable execution.\nFor repeated labels or a semantic container, `tap-native` accepts the same exact\n`text`, `contentDescription`, `resourceName` and optional `within` row scope as\nAndroid Native Intent. CLI, MCP and Script use the same command and validated SDK\nreceipt; callers do not supply coordinates or fabricate a `targetRef`.\n\nUIA reads and text actions use the bundled phone node runtime on Android API\n33+. A selected node stays bound to its observation and original action ID;\nordinary commands, Intent and Script share the same executor and completion\nrecovery. `uia-runtime --serial DEVICE --operation status|start|stop` controls\nits lifecycle. Fresh observation rotates a full, durably acknowledged session;\nstartup retires only confirmed history. Explicit start checks the phone's\nprocess lock before reopening a dead runtime; unknown actions still block it.\nHost crashes leave a durable pending-acknowledgement queue. `device-ownership\n--operation reconcile --serial DEVICE` commits completion history, acknowledges\nlive or stopped phone records and retires that queue without replay.\nFor an exited phone owner, reconciliation can turn a matching committed\nprepared/queued record into a durable non-dispatch receipt under the original\nroot's exclusive process lock. The receipt preserves original identity and\nseparately records the recovery boot/time; admitted/unknown or missing records\nremain unresolved. Recovery never creates a UiAutomation connection.\n`device-ownership --operation receipt --serial DEVICE --runtime-epoch UUID\n--action-id ORIGINAL-ID` queries the retained FactStore representation, including\nexplicit original/redacted hashes. A busy FactStore preserves pending cleanup.\nAPI 36 on OPPO PGFM10 and OnePlus PKR110 is the current real-device scope. See\nthe [command contract](docs/COMMAND_CONTRACT.md#semantic-targets-and-text-waits).\n\n`freeze-app` sends SIGSTOP to the target App processes, including the Bridge\nSDK and its socket. It is a process control command, not a way to obtain live\nSDK observations of a frozen page. Capture evidence first; use `thaw-app` before\nfurther reads, actions, waits or captures and before finishing. Ordinary Intent\nand Script flows do not need freezing.\nFor visible state changes such as panels, dialogs, page transitions, tabs, or\nbutton-triggered content, verify with both `screenshot` and `tree`/`uia-tree`;\ndo not conclude success from UI tree alone.\n\nWebView network and console capture use Android WebView DevTools/CDP when the\ntarget app is debuggable and WebView debugging is enabled.\n\niOS commands use Xcode `devicectl` for device/app/screenshot operations, the\nAiAppBridgeIOS runtime for in-app evidence, and WebDriverAgent/XCUITest for\ntaps, input, swipes, and external UI tree reads. `ios-setup --start-wda --team-id`\nprepares a separate copy of pinned WDA 14.1.1 with Bridge identity checks and\nbuilds/signs that Runner. It returns the actual `wdaRunnerBundleId`; later WDA\ncommands require this ID and the selected `deviceId`. An optional `wdaUrl`\nselects a forwarded endpoint without bypassing the Runner container check.\nCreate an explicit `ios-wda-session` for an already foreground App, then pass\nits returned session ID with the App bundle ID. Reads do not create sessions\nor launch Apps. See [the WDA contract](docs/COMMAND_CONTRACT.md#ios-wda-target-and-session).\nWDA uses managed execution with queued cancellation, durable original completion\nand `ios-execution --kind wda` recovery. Cancellation waits for the original\ncallback of an already submitted XCTest event. iOS Intent and Script support\nnative, H5 and Flutter providers with explicit target binding. Native Intent\n`setOrientation` and CLI/MCP/Script `ios-set-orientation` share the same managed\nrotation action. Reobserve the UI after rotation; capability support and individual\nreal-device results do not establish complete complex-App acceptance.\n\n`input-text` uses the native SDK endpoint for Unicode text and returns its actual\nfailure without retrying through ADB. `clear-app-data` chooses `method:\"pm-clear\"`\n(default) or `\"runtime\"` before dispatch; there is no retry through another method.\n\nWhen `screenshot` runs without `--out-file`, the CLI writes a unique\nPNG under a git-ignored project artifact directory. Gradle, Android, and Flutter\nprojects normally use `build/ai_app_bridge_artifacts`; Node projects can use\n`node_modules/.cache/ai_app_bridge_artifacts`; Swift projects can use\n`.build/ai_app_bridge_artifacts`. If the current git worktree has no ignored\nartifact candidate, generated defaults go under `.git/ai_app_bridge_artifacts`\nso they cannot dirty the repository root. It keeps the newest 20 generated\nscreenshots for each command prefix. Use `--artifact-dir` to choose an ignored\ndirectory, or `--out-file` when a fixed path is intentional.\n\n`launch-app` queries Android LAUNCHER activities before starting the app. If a\ndebug dependency exposes multiple launcher entries, it returns\n`launcher_ambiguous` with the candidates instead of guessing. Use\n`launch-activity` or `launch-app --activity/--component` to choose the intended\nentry point explicitly.\n\n### Upgrading the running CLI and MCP\n\n`ai-app-bridge --version` (also `-V`) reads the installed entrypoint's package\nversion without requiring a device. Upgrading npm replaces files; it does not\nreplace an MCP process already connected to Cursor or another client. Reconnect\nthe client's MCP server after upgrading. Follow the mismatch diagnostic: upgrade\nan older client first; only stop an older Runtime after its existing work finishes,\nusing `ai-app-bridge runtime --operation stop --extract null`. The MCP initialize\nresponse reports `serverInfo.version`; refresh cached tool descriptions in the\nclient when they still show removed commands such as `batch` or `smoke`.\nA same-version fingerprint mismatch requires aligning the source and Node\nenvironment; the hash alone does not identify which side is newer. In-flight\nwork is not silently moved to new code.\n","readmeFilename":"README.md"}