{"_id":"kappmaker","_rev":"49-f6e3ee0e1b32fe1a52d110867e6d9c6d","name":"kappmaker","dist-tags":{"latest":"1.26.1"},"versions":{"1.0.0":{"name":"kappmaker","version":"1.0.0","_id":"kappmaker@1.0.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"78bfe4583cb01a55f814ed7b4bdde8b981cf86d9","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.0.0.tgz","fileCount":103,"integrity":"sha512-1cPeTRp18sc/4SQgZY+zxiFZHCbulHlLcSfWokbHvtSd5biahrDMkz6jV8qFgMBb6mJ/6TLhWwsfxquFYDrucw==","signatures":[{"sig":"MEUCIGc/gG9DZt4grns5GgxelzpzxwCBlX5Dkl2VBC/0+NucAiEAnjOdqDLxfWwLziHOSHJmEa3/SgGblmCWZHPAjXF/lcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":375597},"type":"module","engines":{"node":">=20"},"gitHead":"5ab631bb9735aff8336310cf0ce588db5cba12fe","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.0.0_1775162227610_0.4326096673817721","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"kappmaker","version":"1.0.1","_id":"kappmaker@1.0.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"93b0fa8ac93f6349b28abd3e0d8914f6821e22e1","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.0.1.tgz","fileCount":103,"integrity":"sha512-S4DeIm1Xl5IBG3++o1d6bCwv8FC2kJ8XJtDExfh6GFWKvWRmbqB3zShCPH6mGnLxDJZWf+Yh7x6tKO3IjERTpw==","signatures":[{"sig":"MEUCIQD/1KK5qTi9uaKAKvk0u4qOlWUyzpsUru2faEOFckmszAIgFkgReSsa6cXhkyGjzbV3oVOPEvIwDmnCTgrB/Fsxuhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":382502},"type":"module","engines":{"node":">=20"},"gitHead":"5ab631bb9735aff8336310cf0ce588db5cba12fe","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.0.1_1775163016110_0.6716068661141328","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"kappmaker","version":"1.0.2","_id":"kappmaker@1.0.2","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"5c7e6ca41e853dcd0834695297303b55840aa965","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.0.2.tgz","fileCount":103,"integrity":"sha512-xeEI8VonbH9pN9URQyLIvDZ8XYwaD2+XWPddSbDICv0JQjwTB2EEq9NMhv1qHAC1o1GB/1fwnl23xfPdbVD0sg==","signatures":[{"sig":"MEUCIH8lHR88MA376KEl/NaYTVvkr4cbr2OBYmMgWImTnkarAiEA5TsR9++DhcirRtVday8f+UoKlLMxUt2ULc15MAzQG4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":385318},"type":"module","engines":{"node":">=20"},"gitHead":"74244350f5f20c71a42a2b44bfd6b0defac07dba","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.0.2_1775171525039_0.7356156532778988","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"kappmaker","version":"1.1.0","_id":"kappmaker@1.1.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"046566da3f56b38a0c7777e778e0b186b28d6996","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.1.0.tgz","fileCount":130,"integrity":"sha512-aHx/2f75uuFkn3R6TtgvD9WSrpPcp3ckDu+U6W6UBilZ+sc6sEJ/xLlGCjgQ8ccHnscIYeX0PlQ6UecOjMQuUA==","signatures":[{"sig":"MEQCIDqxHuCueWPRZbzjjW/pFlCvU8l1daBn4kESka2+hHFcAiACXQR4y5TRDQzYmYOXzWyuKndD0Y0ci0zOe+ibiwtT2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447856},"type":"module","engines":{"node":">=20"},"gitHead":"936645b72319c6847cccd4d5a27f64149deb144e","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.1.0_1775221332471_0.07812081380852276","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"kappmaker","version":"1.2.0","_id":"kappmaker@1.2.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"51491c37f7d91d683eef2346218e482b3d802a20","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.2.0.tgz","fileCount":157,"integrity":"sha512-zQlk1z/kQIIvYVIycxc5cTKDjGITHb3r/Wa1uKpRj5w92YRfF9VbxF6mpaDeSaAhpeQLxFTZbfgQeaU0r1OtkA==","signatures":[{"sig":"MEUCIDpBTCt4NxeWiQvn3LNlbZNPsuKii9isAnDoWVqxP31EAiEAwnXkJpbzKK9CktWKIiZjEcz5KWDkQtITvuXZRU+TGNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860459},"type":"module","engines":{"node":">=20"},"gitHead":"fca0d1f92b073d9cd5d94472f677264a0e56b8da","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.2.0_1776093761452_0.6837465168398724","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"kappmaker","version":"1.2.1","_id":"kappmaker@1.2.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"0dd8e2c46822c2b8b5c42a02db1c2f5c0191803f","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.2.1.tgz","fileCount":157,"integrity":"sha512-VFUwDR/VaR3ie7WtzLlRCsawKeFEb9qlO1h0+cM9mkreUmZ0dJX8Rs9jNRuB9MYUvXConM7V4Ya4nAvWPXf7cQ==","signatures":[{"sig":"MEUCIANZ5XlUu4DlTbd5mlN8wMSfQSlBm8HT5Rel2YGdrTqnAiEArkWUtS8xPlw0HyZ6D0Eeqr7AwiuSAwfXHsOQs12R0aI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860505},"type":"module","engines":{"node":">=20"},"gitHead":"49a7aa1d1e254f0b8fa7bd4ccbcae4b3765a4bf5","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.2.1_1776103854671_0.9667319810355748","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"kappmaker","version":"1.2.2","_id":"kappmaker@1.2.2","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"bcc190924c491ca1c750d08595286a9bf2240267","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.2.2.tgz","fileCount":157,"integrity":"sha512-aXxkz92U0o6FLFKkAT4qyltaa3gHlP+L+GW+5te1pDzAQdFPsLkHf3vFRWRkbrwnWtUwf8+xeTVrNtfLAagRsQ==","signatures":[{"sig":"MEYCIQCscTEICwofSIUh9L6JWOn8oEhIy5hGhtjf3/TRF3TviwIhAIxn634WBiZkUj4HLUzlpR5COs0/TxodAElfXGnrLa9e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":866636},"type":"module","engines":{"node":">=20"},"gitHead":"be1e43bb39dbd4f6f3ff5ce87759129683488270","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.2.2_1776164281833_0.7125448669514347","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"kappmaker","version":"1.2.3","_id":"kappmaker@1.2.3","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"3ebe45dd524ce9b8ebdef7c5202f7dea7033f31b","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.2.3.tgz","fileCount":160,"integrity":"sha512-yBlsqPi8i37OHeS1F1WC8qtistCLb10brgOMtbm/+DnVrip0sGBQr4lF5W5YijHy1KinwuVhVRqe8gUbHR3Mtg==","signatures":[{"sig":"MEUCIQCT/iJumLv/TF8r1OtkQ5iCcQcBTSF3hsz3kzWT52QfiAIgas6vcGOgiHs5gf8/WmWnKUHlcvZ9Epls2DJIkqZvUhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":891994},"type":"module","engines":{"node":">=20"},"gitHead":"e73a3ae06e1ab838327213cc448b4ba61c5c651b","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.2.3_1776517000296_0.17288505879480476","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"kappmaker","version":"1.3.0","_id":"kappmaker@1.3.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"f81d34ce1a9e192fee427601320558687a6b2715","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.3.0.tgz","fileCount":163,"integrity":"sha512-qrLr4xKAKffDisL5wVBwRk1qmAjYOLUuHN5iNIlhQMQ7E1Eg1Ct4J/yc0BN1ZD/v01PnaIpv1LFkxT9sNr8kxg==","signatures":[{"sig":"MEQCICdJUShNM9QzmOfIvlEdBBqOkpoK4Y87WlUtiMQbtBVSAiAnAL2PV7adZxXlZTsiP9SLFXIs0gG6PCkmhrAWQ9Pu0A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":902152},"type":"module","engines":{"node":">=20"},"gitHead":"4da5f464f3ead7dda9d3523aa057df55cf20faec","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.3.0_1776519410339_0.4845862774440126","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"kappmaker","version":"1.3.1","_id":"kappmaker@1.3.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"8f1c2be4b1f8b4c2936b7c3eb2143930c9a0c862","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.3.1.tgz","fileCount":163,"integrity":"sha512-rh2bDWkdF5KIRFStrkwY9jG3Fn65V38euyWCx98HOahQkVE053FThi7s4DBSJd7FwgGbawLaEazGSOvPkG7I+Q==","signatures":[{"sig":"MEUCIEyc27zYuENjUy2DoyLxUL0t/Ysuw9eCbqyv+C35Y+p4AiEA5NzA7tYefTorElk7tgr0Gjdx/gHuGNGPRKrieKkaUA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":909503},"type":"module","engines":{"node":">=20"},"gitHead":"34bf265053a894924d147946743231e676ab02d2","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.3.1_1777645112069_0.6010167800499757","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"kappmaker","version":"1.3.2","_id":"kappmaker@1.3.2","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"cce9a449b20701e77e756bd94dcaa7df06ac6c01","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.3.2.tgz","fileCount":163,"integrity":"sha512-UFqh/GyCBEhZ+LOUYGhk9tQ4vvM9ZhRg7H+ng4wztGkYHEzkFHH7yodUx+jwhgRcfG96mIzEIdKJAlXSGNwt6A==","signatures":[{"sig":"MEQCIARL9ZHO0LwqqW+tDl5K3St8oY0jp7FTEiHmuLIO1HQYAiB18+eEud7WlaUDiph+bWz9Z0VHfvBFg+GRLAk75r9tIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":909503},"type":"module","engines":{"node":">=20"},"gitHead":"1b420dab25ddfb693c9d58a0ba7e2652eb129701","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.3.2_1777815474375_0.3054573220465253","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"kappmaker","version":"1.3.3","_id":"kappmaker@1.3.3","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"679930e2132136065ea4774354b2340306439b31","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.3.3.tgz","fileCount":163,"integrity":"sha512-EMGxIk3Omh9fA08Q4FHHwB/zXlcPjvK4d5jLwumjcw08rWUqcjkqsrkwALX/4Rs2V27prSOQJP+bpyMgEcZ/9Q==","signatures":[{"sig":"MEUCIQDubB8G3HQbQiqbkCkP45Rs7x+opJnwV+zxaH1H1SV/TwIgHr/YfUca9CJBHpWJ5qbzZO1yq14cqSVriR7VvYxT2Ls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":908996},"type":"module","engines":{"node":">=20"},"gitHead":"2dae5cd2c7c67019d893d6f65bc0c290de707b63","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.3.3_1777815848627_0.4158508103853149","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"kappmaker","version":"1.3.4","_id":"kappmaker@1.3.4","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"f9ef527af16e4055eae3b9bf3eeb545c6fdb4db0","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.3.4.tgz","fileCount":163,"integrity":"sha512-KVG9E4zGvvxNtHBF95yX4Cu4VksT/fT/QPS1+AxLtYXrwGJw7Syq6ROqapI2x8BrLXXaK8p/sdlMGUtCNLHlFg==","signatures":[{"sig":"MEQCIBD1/onbnzFtbFJ8PGa+3jIEpHQdv8+a7xedKtzkwBq6AiA95heWDkN4sD/dsuC1nK75cEw15jJJip/DfhD9dxf0oQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":908984},"type":"module","engines":{"node":">=20"},"gitHead":"2ccfa9b389ceb1a88a46b03d1e0ec8e5914ed44a","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.3.4_1777922989383_0.5055158697889899","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"kappmaker","version":"1.3.5","_id":"kappmaker@1.3.5","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"b2fef8fd2684d4744ebe757c05149995ba51504e","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.3.5.tgz","fileCount":163,"integrity":"sha512-7IA6zeO/T/Rgn8kAO7TqauIpOfdtmvBnY3ceXRHGKDn4+adkp4shzYMeFQFEY5xr8GuyEZ9a/f0qxSOf2dlgBA==","signatures":[{"sig":"MEUCIQD2UbjaFXusj1moBlJwfsptuSkAYUag5Z23aTxz1JzsdAIgNbbMKA9OFjNWWHJibaXNtoZx30CUGG4AR+dQkqRtMqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":908968},"type":"module","engines":{"node":">=20"},"gitHead":"4c72dc492161205f3f1e51e7d1b418bc5657b768","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.3.5_1778172383724_0.4196593400498483","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"kappmaker","version":"1.5.0","_id":"kappmaker@1.5.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"13708d8993c97d60ea8c561dd619eff9ba26c2f5","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.5.0.tgz","fileCount":175,"integrity":"sha512-3xrpVuxJcd9+xxdcXmX2car8HauqQMfuN7u6supKCxMBt8B4+mNerrkKlaj/8N80GtY6JxC06Av3iD9VVl5sFg==","signatures":[{"sig":"MEUCIE92Yl5a3TOks/MzymRGM+S1fZW2sYrS7EKXE2uAIsftAiEAkQvFY8yaW4jTl02scglrXjd9ezmGGanJeBMRU3xTRI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":980808},"type":"module","engines":{"node":">=20"},"gitHead":"3a1ea0afe7708e727f1478a2cb94b42fa0ad5b9e","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.5.0_1778333605729_0.06973253716538252","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"kappmaker","version":"1.7.0","_id":"kappmaker@1.7.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"d469fb42c6d26441f4eae3dcced1b7508f30a6d1","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.7.0.tgz","fileCount":193,"integrity":"sha512-ykG5e3FCr6aZ3jox4ZysWpNGSrQTACnWYyHbeKPpqfJc6iLWHkf+LOLP5DIK7pGSVbvvSNQDdvdkq2tXj/SjOg==","signatures":[{"sig":"MEQCIAes2eRlNqmPz7CF7Gn9bSqjwulcgjbZfePUOryQ9VslAiAV8360TSY08hdmG9Nv9cdpl+nonGt4eIlTMCvHKkMwvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1135773},"type":"module","engines":{"node":">=20"},"gitHead":"9a760bc3d3412327979004518b9a7708527bdf2b","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.7.0_1778610470629_0.8892229364191526","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"kappmaker","version":"1.8.0","_id":"kappmaker@1.8.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"aa3ac4ca88117b5a865b1bf9693f75f8b9c9a6b3","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.8.0.tgz","fileCount":199,"integrity":"sha512-uSaRDT+Z1d8T1fL2efBCiJJj2HebzTTy2wRf9cA/Likfk9NLMWhlj8Kg2fsQUSn6/kcpHJG/FESwtBqIMIhlWA==","signatures":[{"sig":"MEUCIQD1r84zjEKzvq8vvuZ5dr+1UfaCW9q3J9E0DCHCEp5GuAIgE1FGuiyvZVM6GnA97mvTxZf19+7dOdjj4+lxbfBwqEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1182266},"type":"module","engines":{"node":">=20"},"gitHead":"4a9c883a902e3a7a8aed9865b5d449663802a3f4","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.8.0_1778681454192_0.5408141782946485","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"kappmaker","version":"1.8.1","_id":"kappmaker@1.8.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"704f79aabab76be7026dc833c02bd5526115aa8e","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.8.1.tgz","fileCount":199,"integrity":"sha512-+wFmLORiVgF4LBP1QCVYM4DE7tsxpP1kkKPri9d9S3wN4PG2NDPQDhYp3/wWBKrYkq38uLnmF/bH9MMSfFDUJw==","signatures":[{"sig":"MEQCIC4d2KI4/CtUx6H883xb3Zm5WPD8kFq9xtRTEXT+cG19AiBimpzcm0P6RUhgJo5B9PJOPhtBObl0BHiAzsSoHnRDfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1182266},"type":"module","engines":{"node":">=20"},"gitHead":"061369df962626a0401fc042a249a91382d5d362","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.8.1_1778681633228_0.26535077468732315","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"kappmaker","version":"1.11.0","_id":"kappmaker@1.11.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"bf63c30ee5b7a93b82c95d4c07b9cf2c624972be","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.11.0.tgz","fileCount":208,"integrity":"sha512-clbvBZ1sV43cSzGG6AwZebnaizroxe1UnVWPRdUVi5Y9yScwgQ8a8NcbGLQdbYVxFIzsSGjFFbokP+QNFBKYRQ==","signatures":[{"sig":"MEYCIQCyaFffjpBK9UxxnCG2sKqKHxVSE6TJYz5TIdB3t0BEEAIhAJrrv0VORUhtmO3hORcWGty8nB5rS8PZpu50qcobD8Bm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1251124},"type":"module","engines":{"node":">=20"},"gitHead":"91e8cae02ffb4c2315cf92b132ec6dc94c65e94a","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.11.0_1778943434190_0.41310050739620796","host":"s3://npm-registry-packages-npm-production"}},"1.12.1":{"name":"kappmaker","version":"1.12.1","_id":"kappmaker@1.12.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"c2bf34e5bfe81410d754f3eb33fe65e79e424720","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.12.1.tgz","fileCount":217,"integrity":"sha512-ImjBf6Tjy9h93PXS0nmBPA98SZpeT5vSopUckXaTV7O6YRju45CLkfjbXnyxv1yBduuPBxG7PYup2pSQAhJvyw==","signatures":[{"sig":"MEQCIDZELKGQnddb03lxe3JyH78URQ5B+z5Q6a6+cdKwMUxfAiBsqqa8LSZcc1PUbAfjYv8QKgBfDpH14S2ePcKiWF/SrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1307672},"type":"module","engines":{"node":">=20"},"gitHead":"4e279a32505d962f68bb1fb3690939e08edd5dea","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.12.1_1779731084862_0.8222077690639438","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"kappmaker","version":"1.13.0","_id":"kappmaker@1.13.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"7838f3ac5dbca565d81c5e8442ef8eb26fa4264d","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.0.tgz","fileCount":217,"integrity":"sha512-bXKVTYwe4ysWC/O2acKzxHmJvcop/j4v6KKVaG9UjxniGYSI3YkeetjwmayAk0Gk4IdXntdPlAGlBySbH2SDEg==","signatures":[{"sig":"MEQCIARp/7sqDkDOUycfxGu0BW5OFINmF7iNMtbDamlTRXNFAiBiZJ71CZrymOeZ65qbpVyvDOcQhJqIlK0peTOyNVIH5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1307672},"type":"module","engines":{"node":">=20"},"gitHead":"9e7827912d2522308240c9f8024afe7beec1f973","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.0_1779731432145_0.11949670211157071","host":"s3://npm-registry-packages-npm-production"}},"1.13.1":{"name":"kappmaker","version":"1.13.1","_id":"kappmaker@1.13.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"4911a94496772ead72bf04177e3d4f7f159595a5","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.1.tgz","fileCount":217,"integrity":"sha512-5/qAkcGAzst/Nyu/DCfK1Q2YmVZXDTN9WLMvcCekuWr6JWw3viCctzcZlQvEk9O/UZ9Ho7xQtcUpN6qIqNMHGA==","signatures":[{"sig":"MEUCIDgor7/nS+6z7Ilof8ynNPLJ0upUUwELKM/2AoUbRVQfAiEA1lh5f42rOHZbKtIbe0K/2isWTsFK0wRJRFzpmVuG+LY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1309273},"type":"module","engines":{"node":">=20"},"gitHead":"e321c0fdf998e6c53f26eba97d6b88785e16ddb2","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.1_1779734089502_0.9923676091106031","host":"s3://npm-registry-packages-npm-production"}},"1.13.7":{"name":"kappmaker","version":"1.13.7","_id":"kappmaker@1.13.7","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"34b080359d9ca9076523e3e625d402b6861b798c","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.7.tgz","fileCount":217,"integrity":"sha512-zkJTMHyezzrxgxcZP9zNUMXFj8SAaVJTJaiz21tnluAxHt4AXknKoIAv/pf/C7JjmjTpk7vsKIKDpKw1MvNOvQ==","signatures":[{"sig":"MEYCIQCV7yE5WLqUWexZ8QWgUsbBl0WmX58MxAAi/2xavCG5PwIhAOccfqppNJ7yUmv3rEkiQ5VPmehtO56iEyUVaNeAgt5H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1314042},"type":"module","engines":{"node":">=20"},"gitHead":"be0e4a7ff3aa9ee8397d3ab382f9a6151917f38a","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.7_1779756667796_0.9052033527664456","host":"s3://npm-registry-packages-npm-production"}},"1.13.8":{"name":"kappmaker","version":"1.13.8","_id":"kappmaker@1.13.8","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"1287b7af95da0636af07b8085355eeb13b8f7d4c","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.8.tgz","fileCount":220,"integrity":"sha512-8SphV/BGbIwtlLO3MlR87II/+yJnWcjbpN/sec2nS/+h1/zije0SLrD166TIYIzLlcU7Mb2hR4lqDNSvRNMdew==","signatures":[{"sig":"MEYCIQCuVYAISEEgR91SGWSdL30mpHpak+5zimXeaqA8cygVQgIhAKgVcKgNOih7qS9CnnZ9u27BgVEPhUe12D4DKY15QUro","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1339961},"type":"module","engines":{"node":">=20"},"gitHead":"7ddf33d8e8d949305f68631382056023627a4533","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.8_1781856313721_0.36664017717428665","host":"s3://npm-registry-packages-npm-production"}},"1.13.9":{"name":"kappmaker","version":"1.13.9","_id":"kappmaker@1.13.9","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"11536a51981f97b6886ea350cf59c0c75893d66c","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.9.tgz","fileCount":220,"integrity":"sha512-RPb1zAokDYdiY8k5jE/a+9YgkLMTA7VaY8jrWPoLAt9F2PgXSqmLxWmgmhhr2XEmesMOaNe0A6gomdJPIUWrdg==","signatures":[{"sig":"MEYCIQDc0ogllPelWNq/0XdFKKXEr0MDvqu3h+Z8tisF+hy1FQIhANRunFH6VmfFd+nbb0snyGEUnYAB4Y3XM/CFDkZsBdPx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1339961},"type":"module","engines":{"node":">=20"},"gitHead":"6c96a684fe6889e6e2f3d5fea3a85a005bd86dd8","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.9_1781866797869_0.535580675686649","host":"s3://npm-registry-packages-npm-production"}},"1.13.10":{"name":"kappmaker","version":"1.13.10","_id":"kappmaker@1.13.10","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"62b8c5f1e530db263f377702f7913f0168e66cf2","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.10.tgz","fileCount":220,"integrity":"sha512-JyPFANEQofrfvJPBt+PibzBd57TJVsFOpUA6+F2wnNWRfJluuAE6WzXj7eTEMhi4GQksahYfP1C6INxbyBsrPA==","signatures":[{"sig":"MEQCIFMXat6BmBwapaIJFAvPtsF1roOiT3oe2Uop0dUkfbAvAiBUgwmPCYtzXEVXo/GuW4gUJF3IdljVeO7OnJZ9F115HQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1339943},"type":"module","engines":{"node":">=20"},"gitHead":"4ea114074801f1aa7470c204c22936cde4832d44","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.10_1781880293349_0.28094984562144565","host":"s3://npm-registry-packages-npm-production"}},"1.13.11":{"name":"kappmaker","version":"1.13.11","_id":"kappmaker@1.13.11","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"ac23c1598af156ebab5d992bd5e618a6c5d75ca8","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.11.tgz","fileCount":220,"integrity":"sha512-JQ4V0DbtXX4boEn7ep0/kCVHVharjwE9fwOpsTbgb7MNbBz99OXyCDgK/Ng1VY/znigfyzLRln4ZbbuIKgVS5Q==","signatures":[{"sig":"MEUCIAyHE0DY2CjIwYq+AvZuqE8GKqXEPuOCVCBNjBx6iuIVAiEAl+mn9hO+2ekC4qxBigO9nhD3bKelL9Yt1iCM8AHvCqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1340575},"type":"module","engines":{"node":">=20"},"gitHead":"a8146f130048c6146c10bac6f20e8b89884436ac","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.11_1781881989560_0.9428632384761975","host":"s3://npm-registry-packages-npm-production"}},"1.13.12":{"name":"kappmaker","version":"1.13.12","_id":"kappmaker@1.13.12","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"8c1038192cf73493a7359beed80ac2e427be3af9","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.12.tgz","fileCount":220,"integrity":"sha512-cSixLvmL5WaZx1lVh1mvhkxnFf8lHl+gVmzf9FxY8s5C6UOmiluLYmthfB0tEvZfiAf62uaeqFbyYcQwGIYypA==","signatures":[{"sig":"MEQCICB7+vatIWZSBDG/XLhprgemrbgH924q1kwItKqKdeoxAiATmdVTpg3hVBECVF6adnRSKDdkcZKZvFWxg1cteBspeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1341110},"type":"module","engines":{"node":">=20"},"gitHead":"7c8f8a5cb4ea2962f7820bd2fba57d5f162c0111","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.12_1781884073440_0.1808114871430746","host":"s3://npm-registry-packages-npm-production"}},"1.13.13":{"name":"kappmaker","version":"1.13.13","_id":"kappmaker@1.13.13","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"ef139e0ec828a64ebc807f780e91db4cf1b008bb","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.13.tgz","fileCount":220,"integrity":"sha512-sDQwqxHKDpLQ4C54NZN5XA2nqFLQ+L3aA12t/fAv5uGyv8WcWhNVQYK5GfPEWBX5rIByCwerbyv2OdBhmeD6lw==","signatures":[{"sig":"MEUCIQCm2h31yGvrXVQ/liBAdOLnrMUmx98mtZLhId7E8Lk5fQIgAd2Wwoyq9/neAa0nvuzQNt2TqG1OU1FcAiApu4gacPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1344637},"type":"module","engines":{"node":">=20"},"gitHead":"4349eeca80a4d91d1d38ef789ca2357c0e5fad03","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.13_1781885600094_0.9461577622383353","host":"s3://npm-registry-packages-npm-production"}},"1.13.14":{"name":"kappmaker","version":"1.13.14","_id":"kappmaker@1.13.14","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"a5fd8bce76bf6604ead09c822e69eedf7a8a43e9","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.14.tgz","fileCount":220,"integrity":"sha512-jI4a3adOBATSFtEQMWY3jLTN/LBlVU467/QvUKTDzhfBnEksduzYcFb3cdIxZBmxexXScs5Biiasy/fQicDh3g==","signatures":[{"sig":"MEYCIQCP6AQv1uKgoSpAUt44L+axRbiSMUyVluVC4FuHceBb7AIhAMOOx6gnsBIzlpROR0GudQ8yDsaLuj6gmhlQnY7hu5Oe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1347278},"type":"module","engines":{"node":">=20"},"gitHead":"accf0947ad18263fd7cf62863949b63fdd5f2618","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.14_1782061552729_0.7279112844612767","host":"s3://npm-registry-packages-npm-production"}},"1.13.16":{"name":"kappmaker","version":"1.13.16","_id":"kappmaker@1.13.16","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"cd9ea279e028a45d648b23a479a8f41f855a7a74","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.16.tgz","fileCount":220,"integrity":"sha512-Xavmw0Kn70+xVQA6Oyvq313M0qh7Suib6P23PgiV1H1MjeZ1MzFy7IdnGUZfinbizAlGl0xNPKnjyJQXncSi/w==","signatures":[{"sig":"MEUCIF0H65Iy3Q9zN8QJTx4Q+vANJJs/amQdxC7tXfQfPuvdAiEAneRFC/pn+wWTIWIrb2MD+t0qlwz37Bept2oCUx5w6WI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1352223},"type":"module","engines":{"node":">=20"},"gitHead":"99dd5ebe5b5dcea40919a2aeb8da1528e8155a88","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.16_1782064880959_0.20597004060240587","host":"s3://npm-registry-packages-npm-production"}},"1.13.18":{"name":"kappmaker","version":"1.13.18","_id":"kappmaker@1.13.18","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"e593de2e66ffe3db0038b25c952ded83e7228fb7","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.18.tgz","fileCount":220,"integrity":"sha512-VROrBv/rLuFsxAoOd9UADh/V0nCz7z2tgVcisoHRSQaqnh9noqepHVJdZxSj+F9a9mNm8cWXUtqof5yBLxvOcQ==","signatures":[{"sig":"MEUCIEFLi1OCHT0hVqZ6nSs9Racyz59V88qnWCph7VAUQGKAAiEAw0FHi0TQYYBNQqbVh1cPwitq8Q48ncA6omBQPX96pfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1352951},"type":"module","engines":{"node":">=20"},"gitHead":"20c220e11ee8ff74f9032eeb0b7ce248e0052e6f","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.18_1783102818661_0.6542842750081332","host":"s3://npm-registry-packages-npm-production"}},"1.13.19":{"name":"kappmaker","version":"1.13.19","_id":"kappmaker@1.13.19","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"64bef9de671eb379e91db7db7819ae757a12d99d","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.19.tgz","fileCount":220,"integrity":"sha512-4OaW7Q1VhyQUMWNL+MBLsKxfDyop4CmnGzO8IXc8bsFHCaAR5X1B32x82nrrv40/o4pxqUfN+Qie8nA37sHiDg==","signatures":[{"sig":"MEUCIAhYtfDmEoTnyesJ7qr1A6/kIe2bUlNjnTb1Kgdii1TxAiEAoUarsInpSTcDA4CslbBIlSUT8L5TCTqqYlQJz3seoww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1358459},"type":"module","engines":{"node":">=20"},"gitHead":"8d913b931b8af793ec225ac4abe543e6196b1ff0","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.19_1783104934843_0.22550213556199927","host":"s3://npm-registry-packages-npm-production"}},"1.13.20":{"name":"kappmaker","version":"1.13.20","_id":"kappmaker@1.13.20","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"e6351f625c03aeb92212e912beac8f99298617da","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.13.20.tgz","fileCount":220,"integrity":"sha512-bkGhBO7nHniRwYFwIdRbLc9VJaKB+3H3CWl7jsnf8GCujjxyTQPhm4JD12TWQGGjLogMXK5N18nTlv7F3A9Yuw==","signatures":[{"sig":"MEUCIQC14N4fC0i/KBOqTIYCjbNc5zvJpS55VtB3FqPTlat5jAIgT54ID4yY/NzmYsdA3wl3muG5il/RWzRrA8vArG8GrnA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1358459},"type":"module","engines":{"node":">=20"},"gitHead":"00270e874eeffa8d1ddab62492ddcc0608ab467f","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.13.20_1783105024589_0.7863906181771769","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"kappmaker","version":"1.14.0","_id":"kappmaker@1.14.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"b03180790f156656e6a0554b1bbcf09c13ffd9a0","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.14.0.tgz","fileCount":226,"integrity":"sha512-lsSJM3B/Y6jF+IQwkKeMrzHk/NNrYPa4E6DgTENE+SqAlflEt/IqDkOoFCPcUE88WkMu1i/T2795Qk4x0di9tA==","signatures":[{"sig":"MEQCIBZ2aaHA1xEUWy3LXvSGJgn+sT3oIr8Ao8vRaD+GSUqBAiByJaD7PJwJ9/Zj55b1++jD3UJK9Nwi+Bhe/d1McUL7KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1372797},"type":"module","engines":{"node":">=20"},"gitHead":"6f00854752dccaed0f690f8b0b24cc35d34c2d62","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.34.5","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/sharp":"^0.31.1","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.14.0_1784797706704_0.3792254804146691","host":"s3://npm-registry-packages-npm-production"}},"1.14.1":{"name":"kappmaker","version":"1.14.1","_id":"kappmaker@1.14.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"3217a23eab1be73cebce857db38793de3a68a2c8","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.14.1.tgz","fileCount":226,"integrity":"sha512-x+j+I6GPeALtxbOul9T9/5PZmDFFt9coFZM50P5UCPVB3rCNJsGee0aOt7j8hySaxWasqGp4uyeQ5+0BgEq8Dw==","signatures":[{"sig":"MEUCIQCO8xKg0DPweGIcY8yAbYJu6iKF9IFK7aLFG8n0o/MFKgIgJlXkXdkFvjn9Qib5fGh/n6aYqpZ2NFb1yt4oQrB3aSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1372767},"type":"module","engines":{"node":">=20"},"gitHead":"b2446c56341e7ad4ca1dae2c60b89449687df871","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.14.1_1786189914960_0.5006465328889691","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"kappmaker","version":"1.15.0","_id":"kappmaker@1.15.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"83b419b41dff2bedbee57a8743c84b52b39b0549","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.15.0.tgz","fileCount":226,"integrity":"sha512-SAyErFYlvId3CKatYcoY3mlpqjmZ2faTDcweh116aORPkkg9om+S6E1kOkBlSck4UuO9mIilmCPJr+/fcH+u+w==","signatures":[{"sig":"MEUCIQDv6dow0xdMcwV2NajTPPKmVt8MY2bBxDm1y7U7zQCIvgIgEY9+QjwMwyQFOGBUsKhmndT/sCJgFAUhiHs85KeUVc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1372767},"type":"module","engines":{"node":">=20"},"gitHead":"b622151e4062f1be2e1f6050ba92e5406a410da4","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.15.0_1786546855522_0.3108486281407348","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"kappmaker","version":"1.16.0","_id":"kappmaker@1.16.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"0412155f2eaef9717e10b099e5023dcaa959cbdf","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.16.0.tgz","fileCount":239,"integrity":"sha512-JVKDg9zyqeod++5Uh/crOvAW/83NyLwdoUZkdKvdTaVboY9dj2RtzVemlqjp/72K7BBwGS0pR8QdH4JTQk2fSQ==","signatures":[{"sig":"MEQCICJthOCP7HThAriADTRFhcMmX+JMTXctWAdlaloX6ikmAiBaD4/aDwFXk+2C/zV8zQKtH9vp8FEnn7czmHmCwEuLIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1445977},"type":"module","engines":{"node":">=20"},"gitHead":"d4ae4fde4eacc0b97209e4d7699059e65583c87d","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.16.0_1786708166620_0.5096424848268264","host":"s3://npm-registry-packages-npm-production"}},"1.16.1":{"name":"kappmaker","version":"1.16.1","_id":"kappmaker@1.16.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"98cd86088117d0a0a3466256a2b906c762348c96","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.16.1.tgz","fileCount":239,"integrity":"sha512-+xlDTZXcJs5IqxvzaFoaYE93kRWzC/fAjs4Zkk5nMGeriTQFmHaRPSFAg8vLlD/8U7dJ14aypD3+qrGX1fyfdQ==","signatures":[{"sig":"MEUCIQDP3/DH1dR1gAzG4co21gy07vvgsbAN5e0nRBA7SlXyNAIgJSZLRTVX++DNHiYQicvK+3b4wKWdPz7JzpVBP5Mwx7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1453691},"type":"module","engines":{"node":">=20"},"gitHead":"7deef1480e02b09ed94c5290c4ab5ba719719ba3","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt dist/templates/Fastfile.txt","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.16.1_1786710687789_0.7979882008067651","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"kappmaker","version":"1.17.0","_id":"kappmaker@1.17.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"7ab9e9572b67b51dc3ff79b065879b0cb7aeead4","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.17.0.tgz","fileCount":253,"integrity":"sha512-l/sN0V9JQHijU5PbQRJTlVkTnmiGh+LJtIUszTFkejtrZcYf9ZSq4AIIGMf3DjpzWyI9ZvvZrKZoTgHm8KslNg==","signatures":[{"sig":"MEUCIDSbDezcbuvopYTmmTG3MeEruRPDNPnle7pyRCMuimW3AiEAwF8MGK7Bo6jOSeIatvuWtvYVU0Je2c/pM2J1dFkvveE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1524201},"type":"module","engines":{"node":">=20"},"gitHead":"e85b2a452d5b5e004cfa1714f7cfdbcb242ffc6c","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.17.0_1786887660496_0.17474527161271958","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"kappmaker","version":"1.19.0","_id":"kappmaker@1.19.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"9b2c950cfc6f84973ec244f37cae4ef0d680653d","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.19.0.tgz","fileCount":253,"integrity":"sha512-05g9k5VCzrPFJ9SCJpIzuEBrmEaDILp2DioG4LA3kHUFnI2sHzKgmHXyUr05nkUNCySRIIjmGPRfnymaW6StAA==","signatures":[{"sig":"MEUCIQD/rmUMmr3NMVlJn1okws05tru8ffManKnpQ7HzEYzB0QIgc0Dee3nFJTjnTHeHCRvmR7dQ/0Xr2ESK9wTZFkYNroQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1537826},"type":"module","engines":{"node":">=20"},"gitHead":"106d266cbf66848e7c1202c3cbb485f95d77383e","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.19.0_1786889763691_0.9279040292379623","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"kappmaker","version":"1.21.0","_id":"kappmaker@1.21.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"c1f44bb611944589ec2d022dca680edcbb3abc1f","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.21.0.tgz","fileCount":253,"integrity":"sha512-Y2J8piolFjUez2VEcwO+eNsugSL0/ictvS9thkqi1aPJUJ6bDkism0MjZpWLkQKGJ7Zqu/EVxaIG2GAomI7lug==","signatures":[{"sig":"MEYCIQCVlZHMMHIdIED18jIhHISahZQmVO1hvivN2VnqNYQ3RgIhAIkwZsE12YEMOFF2EG+hcnTJmdXJ3RTifBwIfIz6fSOa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1542972},"type":"module","engines":{"node":">=20"},"gitHead":"1aec4eb8f5a8f4f62df9a49a04810f8eb26f0ca8","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.21.0_1786892879181_0.4211950595679437","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"kappmaker","version":"1.22.0","_id":"kappmaker@1.22.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"e59a09eb2e722fb6513ce1f073fe7da21c407229","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.22.0.tgz","fileCount":253,"integrity":"sha512-lbmkoaXueDxBuELSDX6kc3WCvwTdNBGIHinX12K8qiv+myqqyX1EmXOoOhVEkL/78tcT9g0kwX5vzz/bk9Oolw==","signatures":[{"sig":"MEUCIAFprvspWCCqlK0vOGnnT9lv0xHEOCYlnwZtfw62SvHkAiEA4yIitbIPnkiZ8o99jQmpvcc+Czac/vqVXFnUeDG/obQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1551332},"type":"module","engines":{"node":">=20"},"gitHead":"264ca7afba0b1829add5f513cb65ef3d585d64c3","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.22.0_1786901550442_0.3095773200825267","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"kappmaker","version":"1.23.0","_id":"kappmaker@1.23.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"6bb1f1537280d8669894fb3d3dc3b18541b0f27e","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.23.0.tgz","fileCount":253,"integrity":"sha512-AKfrBgFchwbCvrJPwnihvjvk2ROwTOEnrNCDdso2eOSGl/To1nBUMR8/tp34lK6PgFC6rTYjW//LLSFPWEp1Fw==","signatures":[{"sig":"MEQCIBtzQtoQgKjl3mJqNPRQSPSBmVrHhYN2yZEW45qobviZAiAR3mAPnJEIpGI/B6MB91c+TKjZ88t84B0HC9qd/7fQFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1551961},"type":"module","engines":{"node":">=20"},"gitHead":"244f0045579e90553119ffbd168362aefe78f97d","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.23.0_1786902981490_0.6956120427657428","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"kappmaker","version":"1.24.0","_id":"kappmaker@1.24.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"a5092c64cdba3071c464b4b82bcf9f797ccc3541","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.24.0.tgz","fileCount":253,"integrity":"sha512-gO1IUfj8bqeo1f1WTQ5maVD199FIXDvkH/p1iR99RTRASuNbyzcegLcxfDtTlE0muW0ww+lgQYfZUlzeC0Eajg==","signatures":[{"sig":"MEQCIA6p39zrrd5NNUjztBTItmiB+ueYkIJYz3leV9N6q4D0AiB109tPB1q4V2io+3MZOkV56xovxMdD1eou8sg7ZzsPZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1550789},"type":"module","engines":{"node":">=20"},"gitHead":"ea3e95743a7359419ac20374c15e3525218aa1b3","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.24.0_1786907235031_0.3386128310281382","host":"s3://npm-registry-packages-npm-production"}},"1.24.1":{"name":"kappmaker","version":"1.24.1","_id":"kappmaker@1.24.1","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"92556e3a2b82c17c966e4cb275cc7f4017e55b57","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.24.1.tgz","fileCount":253,"integrity":"sha512-TfvfPQNdWykCEuWX4PodTcZec7sNVrNz6KG/UlXMBq4/0/lZv2ENbEjc7oI52sSfNL61ppq1kwiUKGa352TXvw==","signatures":[{"sig":"MEUCIQCTQ0HsbHL5Sj+hf7421oytZJxwLt75y5ehCQK4SKjLVAIgM+nMRDfcPEGOGgbFykuN56OZFWXqbWOH0QOf79QJkPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1550967},"type":"module","engines":{"node":">=20"},"gitHead":"e6490f9edba40720f7fa5d2efc04b39ee05008a2","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"_npmVersion":"10.9.4","description":"CLI tool for bootstrapping KAppMaker mobile apps","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.24.1_1786907720719_0.11123084255970994","host":"s3://npm-registry-packages-npm-production"}},"1.24.2":{"name":"kappmaker","version":"1.24.2","keywords":["kotlin-multiplatform","compose-multiplatform","kmp","android","ios","claude-code","ai-agent","app-builder","always-on","fastlane","app-store-connect","google-play","cli"],"_id":"kappmaker@1.24.2","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"homepage":"https://kappmaker.com","bugs":{"url":"https://github.com/KAppMaker/KAppMaker-CLI/issues"},"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"ba02635f9bb58b6f7cf7c6ce263cacaea0220dfc","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.24.2.tgz","fileCount":253,"integrity":"sha512-kF5h69lmxFFt9aNtLIrotUWlVsbG4G1gCiZs45ZKchLshRKK8QJ17f4QgQBc22StW820vlM05feZCSNNvFX2pQ==","signatures":[{"sig":"MEUCIQC2LDs/mgA7N+aGZIf1NqsgYJZxqt0jl/6fD9JLshcDxAIgYu6pKJ5SOl+Mx+pP8mrNJbiUuB5GaZlCPilsd+iN4Es=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1552040},"type":"module","engines":{"node":">=20"},"gitHead":"a9829c1d3e072bc050b624e2fdd50946906fcdf3","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"repository":{"url":"git+https://github.com/KAppMaker/KAppMaker-CLI.git","type":"git"},"_npmVersion":"10.9.4","description":"CLI the KAppMaker AI agent drives to create, configure, build and ship Kotlin Multiplatform apps for Android and iOS. Part of KAppMaker AI, the always on machine that builds your app while you sleep.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.24.2_1787072353510_0.5886621923132247","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"kappmaker","version":"1.26.0","keywords":["kotlin-multiplatform","compose-multiplatform","kmp","android","ios","claude-code","ai-agent","app-builder","always-on","fastlane","app-store-connect","google-play","cli"],"_id":"kappmaker@1.26.0","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"homepage":"https://kappmaker.com","bugs":{"url":"https://github.com/KAppMaker/KAppMaker-CLI/issues"},"bin":{"kappmaker":"dist/index.js"},"dist":{"shasum":"b1faade53d667b2e9860069600a040e62dcfea62","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.26.0.tgz","fileCount":284,"integrity":"sha512-Ck25XLlsOxfo+m8IYt54nE8/tML1fF6d2UM2zwfG8TL6RYyw7Rb34wo8mEuviZpPTUe8UsMsYqcEsNUue6N9Mw==","signatures":[{"sig":"MEUCIQD4N4SGED2K6Sjs1M5Z6BWfUorYyEU1a2umSnVUAPVlrwIge5o5/lJ7Di1hAZbJTjv5hvZuyLyG6E+a3N/woKQBI08=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1641583},"type":"module","engines":{"node":">=20"},"gitHead":"a6a507e5dcdb3f8c25d056791582131762893dba","scripts":{"dev":"tsx src/index.ts","build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"repository":{"url":"git+https://github.com/KAppMaker/KAppMaker-CLI.git","type":"git"},"_npmVersion":"10.9.4","description":"CLI the KAppMaker AI agent drives to create, configure, build and ship Kotlin Multiplatform apps for Android and iOS. Part of KAppMaker AI, the always on machine that builds your app while you sleep.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"ora":"^8.2.0","chalk":"^5.4.1","execa":"^9.5.2","sharp":"^0.35.3","fs-extra":"^11.3.0","commander":"^13.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.8.2","@types/node":"^22.13.10","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/kappmaker_1.26.0_1787675164226_0.23277792382582785","host":"s3://npm-registry-packages-npm-production"}},"1.26.1":{"name":"kappmaker","version":"1.26.1","description":"CLI the KAppMaker AI agent drives to create, configure, build and ship Kotlin Multiplatform apps for Android and iOS. Part of KAppMaker AI, the always on machine that builds your app while you sleep.","homepage":"https://kappmaker.com","repository":{"type":"git","url":"git+https://github.com/KAppMaker/KAppMaker-CLI.git"},"keywords":["kotlin-multiplatform","compose-multiplatform","kmp","android","ios","claude-code","ai-agent","app-builder","always-on","fastlane","app-store-connect","google-play","cli"],"type":"module","bin":{"kappmaker":"dist/index.js"},"scripts":{"build":"tsc && cp src/templates/Fastfile.txt src/templates/ios-ci-workflow.yml src/templates/ios-ci-lane.rb dist/templates/","dev":"tsx src/index.ts","start":"node dist/index.js","test:ppp":"tsx src/services/ppp-pricing.service.test.ts","test:ios-ci":"tsx src/commands/ios-ci.test.ts"},"dependencies":{"chalk":"^5.4.1","commander":"^13.1.0","execa":"^9.5.2","fs-extra":"^11.3.0","ora":"^8.2.0","sharp":"^0.35.3"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^22.13.10","tsx":"^4.22.4","typescript":"^5.8.2"},"engines":{"node":">=20"},"_id":"kappmaker@1.26.1","gitHead":"2feb69e9754f17ee7a254328372ef56dc93effdc","bugs":{"url":"https://github.com/KAppMaker/KAppMaker-CLI/issues"},"_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-HxnCqYnP3efA/bUVn2EMoRMjdZz0oFhbfcoOinMwY9lNdgTH9vhmXYkMJJFd54ap3YOLEPHwnFCpZn+V/+Tuog==","shasum":"e1e5a039b10f825f52aa6bddedfdfc3ace86c5a3","tarball":"https://registry.npmjs.org/kappmaker/-/kappmaker-1.26.1.tgz","fileCount":284,"unpackedSize":1641575,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFeAwT8kQuPIin7RqQu3Bwqy33GUfkpKQnPSb1OY2zNYAiEAuVIWOZb2invdjguKDoJPVWIL6yCzGhPgcfi/V2QclYc="}]},"_npmUser":{"name":"kappmaker","email":"team@kappmaker.com"},"directories":{},"maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kappmaker_1.26.1_1788267976031_0.5944837793719606"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-02T20:37:07.609Z","modified":"2026-09-01T13:06:16.376Z","1.0.0":"2026-04-02T20:37:07.800Z","1.0.1":"2026-04-02T20:50:16.286Z","1.0.2":"2026-04-02T23:12:05.211Z","1.1.0":"2026-04-03T13:02:12.809Z","1.2.0":"2026-04-13T15:22:41.631Z","1.2.1":"2026-04-13T18:10:54.922Z","1.2.2":"2026-04-14T10:58:01.982Z","1.2.3":"2026-04-18T12:56:40.469Z","1.3.0":"2026-04-18T13:36:50.570Z","1.3.1":"2026-05-01T14:18:32.386Z","1.3.2":"2026-05-03T13:37:54.562Z","1.3.3":"2026-05-03T13:44:08.809Z","1.3.4":"2026-05-04T19:29:49.568Z","1.3.5":"2026-05-07T16:46:23.873Z","1.5.0":"2026-05-09T13:33:26.009Z","1.7.0":"2026-05-12T18:27:50.884Z","1.8.0":"2026-05-13T14:10:54.354Z","1.8.1":"2026-05-13T14:13:53.411Z","1.11.0":"2026-05-16T14:57:14.373Z","1.12.1":"2026-05-25T17:44:45.128Z","1.13.0":"2026-05-25T17:50:32.345Z","1.13.1":"2026-05-25T18:34:49.730Z","1.13.7":"2026-05-26T00:51:07.942Z","1.13.8":"2026-06-19T08:05:13.910Z","1.13.9":"2026-06-19T10:59:58.041Z","1.13.10":"2026-06-19T14:44:53.572Z","1.13.11":"2026-06-19T15:13:09.782Z","1.13.12":"2026-06-19T15:47:53.619Z","1.13.13":"2026-06-19T16:13:20.240Z","1.13.14":"2026-06-21T17:05:52.882Z","1.13.16":"2026-06-21T18:01:21.120Z","1.13.18":"2026-07-03T18:20:18.802Z","1.13.19":"2026-07-03T18:55:35.029Z","1.13.20":"2026-07-03T18:57:04.747Z","1.14.0":"2026-07-23T09:08:26.867Z","1.14.1":"2026-08-08T11:51:55.107Z","1.15.0":"2026-08-12T15:00:55.723Z","1.16.0":"2026-08-14T11:49:26.778Z","1.16.1":"2026-08-14T12:31:27.952Z","1.17.0":"2026-08-16T13:41:00.635Z","1.19.0":"2026-08-16T14:16:03.847Z","1.21.0":"2026-08-16T15:07:59.342Z","1.22.0":"2026-08-16T17:32:30.600Z","1.23.0":"2026-08-16T17:56:21.622Z","1.24.0":"2026-08-16T19:07:15.205Z","1.24.1":"2026-08-16T19:15:20.863Z","1.24.2":"2026-08-18T16:59:13.693Z","1.26.0":"2026-08-25T16:26:04.447Z","1.26.1":"2026-09-01T13:06:16.184Z"},"bugs":{"url":"https://github.com/KAppMaker/KAppMaker-CLI/issues"},"homepage":"https://kappmaker.com","keywords":["kotlin-multiplatform","compose-multiplatform","kmp","android","ios","claude-code","ai-agent","app-builder","always-on","fastlane","app-store-connect","google-play","cli"],"repository":{"type":"git","url":"git+https://github.com/KAppMaker/KAppMaker-CLI.git"},"description":"CLI the KAppMaker AI agent drives to create, configure, build and ship Kotlin Multiplatform apps for Android and iOS. Part of KAppMaker AI, the always on machine that builds your app while you sleep.","maintainers":[{"name":"kappmaker","email":"team@kappmaker.com"}],"readme":"# KAppMaker CLI\n\n> **Full documentation at [cli.kappmaker.com](https://cli.kappmaker.com)**\n\nCLI tool that automates the entire mobile app launch process — from project scaffolding to store-ready builds.\n\nA single `kappmaker create` command can:\n- Clone a template repository and set up a new project\n- Create a Firebase project, register Android + iOS apps, enable authentication, and download SDK configs\n- Generate an AI-powered app logo with automatic background removal\n- Create an App Store Connect listing with metadata, categories, age rating, subscriptions, privacy declarations, and review contact info\n- Configure an existing Google Play Console app — store listings, subscriptions, one-time in-app products, and the data safety declaration — via a built-in wrapper around the Play Publisher API (no external CLI, no extra dependencies)\n- Set up Adapty subscription products, paywalls, and placements for both iOS and Android\n- Refactor Gradle package names and application IDs\n- Set up the build environment (Android SDK)\n- Produce a signed Android release build (AAB) via Fastlane, ready to upload to Google Play\n\nOn top of that, standalone commands let you generate marketing screenshots from a text description, translate screenshots to 48+ locales in parallel, generate arbitrary images with AI, remove image backgrounds, enhance image quality, and split grid images — all powered by AI.\n\nBy default it uses the [KAppMaker](https://kappmaker.com) boilerplate (Kotlin Multiplatform), but you can bring your own template repository via `--template-repo` or `kappmaker config set templateRepo <your-repo-url>`. Boilerplate-specific steps (Gradle refactor, Fastlane build, CocoaPods) are automatically detected and skipped with a warning when using a custom template.\n\n## Installation\n\n```bash\nnpm install -g kappmaker\n```\n\nThen use it anywhere:\n\n```bash\nkappmaker create <AppName>\n```\n\n<details>\n<summary>Development setup</summary>\n\n```bash\nnpm install\nnpx tsx src/index.ts create <AppName>\n```\n\n</details>\n\n## Configuration\n\nRun interactive setup to configure API keys and preferences:\n\n```bash\nkappmaker config init\n```\n\nOr set keys individually:\n\n```bash\nkappmaker config set falApiKey <your-key>       # For AI features (logo, screenshots) — or prompted on first use\nkappmaker config set imgbbApiKey <your-key>      # For screenshot translation/generation — or prompted on first use\nkappmaker config set openaiApiKey <your-key>     # For generate-screenshots — or prompted on first use\nkappmaker config set templateRepo <your-repo>    # Use your own template (default: KAppMaker)\n```\n\nSee [all config keys](#config-keys) and [external services setup](#external-services--api-keys) for details.\n\n## Claude Code Skill\n\nIf you use [Claude Code](https://claude.ai/code), you can install the `/kappmaker` skill to run any CLI command through natural language — with automatic prerequisite checks, guided setup, and inline error recovery.\n\n**Install:**\n\n```bash\nnpx skills add KAppMaker/KAppMaker-CLI --skill kappmaker\n```\n\nOr via the Claude Code plugin system:\n\n```\n/plugin marketplace add KAppMaker/KAppMaker-CLI\n/plugin install kappmaker@KAppMaker-CLI\n```\n\n**Use:**\n\n```\n/kappmaker create MyApp\n/kappmaker generate screenshots for my fitness app\n/kappmaker set up App Store Connect\n```\n\nClaude will check your config, verify API keys are set, and walk you through any missing prerequisites before running the command.\n\n**Context-aware**: when a command needs inputs you didn't pass (app description, app name, brand color, tagline, keywords, etc.), the skill reads your project's `AiGuidelines/` folder first (`app-idea.md`, `prd.md`, `keywords.md`, `brand.md`), then `README.md`, then existing ASO metadata, and fills in what it finds — you're only prompted for things that aren't already written down somewhere in the project.\n\n## Table of Contents\n\n- [Claude Code Skill](#claude-code-skill)\n- [Configuration](#configuration)\n- [Commands Overview](#commands-overview)\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [External Services & API Keys](#external-services--api-keys)\n- [Commands](#commands)\n  - [`create <app-name>`](#create-app-name)\n  - [`clone <app-name>`](#clone-app-name)\n  - [`git setup-upstream`](#git-setup-upstream)\n  - [`firebase`](#firebase) — Firebase setup steps (login, project, apps, auth, configs)\n  - [`create-logo`](#create-logo)\n  - [`generate-image`](#generate-image)\n  - [`create-appstore-app`](#create-appstore-app)\n  - [`appstore-monetization-push`](#appstore-monetization-push) — Push subs + IAPs from config to ASC (standalone)\n  - [`gpc`](#gpc) — Google Play Console management\n  - [`gpc monetization push`](#gpc-monetization-push) — Push subs + IAPs from config to Play (standalone)\n  - [`subscription add`](#subscription-add) — Quick-add a subscription to Play + ASC\n  - [`iap add`](#iap-add) — Quick-add a credit-pack IAP to Play + ASC + Adapty\n  - [`adapty setup`](#adapty-setup)\n  - [Image Tools](#image-tools)\n  - [`convert-webp`](#convert-webp-source)\n  - [`translate-screenshots`](#translate-screenshots-source-dir)\n  - [`generate-screenshots`](#generate-screenshots)\n  - [`generate-feature-image`](#generate-feature-image)\n  - [`generate-ios-icons`](#generate-ios-icons)\n  - [`generate-android-icons`](#generate-android-icons)\n  - [ASO Keyword Research (skill-driven)](#aso-keyword-research-skill-driven)\n  - [ASO Metadata Localization (skill-driven)](#aso-metadata-localization-skill-driven)\n  - [`fastlane configure`](#fastlane-configure)\n  - [`publish`](#publish)\n  - [`generate-keystore`](#generate-keystore)\n  - [`android-release-build`](#android-release-build)\n  - [`refactor`](#refactor)\n  - [`update-version`](#update-version)\n- [Config Reference](#config-reference)\n- [Project Structure](#project-structure)\n\n## Commands Overview\n\n| Command | Description |\n|---------|-------------|\n| [`kappmaker create <app-name>`](#create-app-name) | Full end-to-end app setup (Firebase, logo, App Store Connect, Google Play Console, Adapty, release build) |\n| [`kappmaker clone <app-name>`](#clone-app-name) | Clone the template into `<AppName>-All` (step 1 of `create` as a standalone) |\n| [`kappmaker git setup-upstream`](#git-setup-upstream) | Rename `origin` to `upstream` (step 10 of `create` as a standalone) |\n| [`kappmaker firebase login`](#firebase) | `firebase login` — authenticate the Firebase CLI |\n| [`kappmaker firebase project`](#firebase) | Create a Firebase project (idempotent) |\n| [`kappmaker firebase apps`](#firebase) | Create Android + iOS apps in a Firebase project (idempotent) |\n| [`kappmaker firebase auth-anonymous`](#firebase) | Enable anonymous authentication |\n| [`kappmaker firebase configs`](#firebase) | Download `google-services.json` + `GoogleService-Info.plist` |\n| [`kappmaker create-logo`](#create-logo) | Generate an app logo with AI (fal.ai) |\n| [`kappmaker generate-image`](#generate-image) | Generate an arbitrary image with AI — generic wrapper around fal.ai nano-banana-2 |\n| [`kappmaker create-appstore-app`](#create-appstore-app) | Set up an app on App Store Connect (metadata, subscriptions, privacy) |\n| [`kappmaker appstore-monetization-push`](#appstore-monetization-push) | Push subscriptions + IAPs from `appstore-config.json` to App Store Connect (monetization step of `create-appstore-app` as a standalone; supports `--subscriptions-only`, `--iap-only`, `--config`) |\n| [`kappmaker gpc setup`](#gpc) | Set up an existing app on Google Play Console (listings, subscriptions, IAPs, data safety) |\n| [`kappmaker gpc listings push`](#gpc) | Push store listings from the Google Play config file |\n| [`kappmaker gpc subscriptions list/push`](#gpc) | List or push subscriptions on Google Play Console |\n| [`kappmaker gpc iap list/push`](#gpc) | List or push one-time in-app products on Google Play Console |\n| [`kappmaker gpc data-safety push`](#gpc) | Push data safety declaration on Google Play Console |\n| [`kappmaker gpc app-check --package <pkg>`](#gpc) | Check if a package exists on Google Play Console |\n| [`kappmaker gpc monetization push`](#gpc-monetization-push) | Push subscriptions + IAPs from `googleplay-config.json` to Google Play Console (monetization steps of `gpc setup` as a standalone; supports `--subscriptions-only`, `--iap-only`) |\n| [`kappmaker subscription add`](#subscription-add) | Quick-add one new subscription to Google Play + App Store Connect (auto-aligned IDs, full PPP fan-out, auto-creates ASC subscription group if missing) |\n| [`kappmaker iap add`](#iap-add) | Quick-add one new credit-pack IAP to Google Play + App Store Connect + Adapty (auto-aligned IDs, full PPP fan-out) |\n| [`kappmaker adapty setup`](#adapty-setup) | Set up Adapty products, paywalls, and placements |\n| [`kappmaker image-split <image>`](#image-split-source) | Split a grid image into individual tiles |\n| [`kappmaker image-remove-bg <image>`](#image-remove-bg-source) | Remove background from an image (fal.ai) |\n| [`kappmaker image-enhance <image>`](#image-enhance-source) | Upscale and enhance image quality (fal.ai) |\n| [`kappmaker convert-webp <source>`](#convert-webp-source) | Convert images (PNG, JPG, BMP, TIFF, GIF) to WebP |\n| [`kappmaker translate-screenshots [dir]`](#translate-screenshots-source-dir) | Translate screenshots to multiple locales (fal.ai) |\n| [`kappmaker generate-screenshots`](#generate-screenshots) | Generate marketing screenshots with AI (OpenAI + fal.ai) |\n| [`kappmaker generate-feature-image`](#generate-feature-image) | Generate a Google Play feature graphic (1024×500) with AI (OpenAI + fal.ai) |\n| [`kappmaker generate-ios-icons`](#generate-ios-icons) | Generate all iOS `AppIcon.appiconset` PNG sizes + `Contents.json` from one logo (sharp, no AI) |\n| [`kappmaker generate-android-icons`](#generate-android-icons) | Generate all Android `mipmap-*` launcher icons (5 densities × 3 files) + adaptive icon XML + `colors.xml` entry (sharp, no AI) |\n| [ASO Keyword Research](#aso-keyword-research-skill-driven) | _(skill-driven, no binary)_ — Find high-value keywords with popularity + difficulty scores via Astro MCP, cluster by sub-niche, write `AiGuidelines/keywords.md` |\n| [ASO Metadata Localization](#aso-metadata-localization-skill-driven) | _(skill-driven, no binary)_ — Write localized `name`/`subtitle`/`keywords`/`description` and `title`/`short/full_description` files for App Store + Google Play |\n| [`kappmaker fastlane configure`](#fastlane-configure) | Set up Fastlane in the mobile app directory |\n| [`kappmaker publish`](#publish) | Build and upload to Google Play and/or App Store via Fastlane |\n| [`kappmaker generate-keystore`](#generate-keystore) | Generate an Android signing keystore for Play Store releases |\n| [`kappmaker android-release-build`](#android-release-build) | Build a signed Android release AAB |\n| [`kappmaker refactor`](#refactor) | Refactor package names, application ID, bundle ID, and app name |\n| [`kappmaker update-version`](#update-version) | Bump Android and iOS version codes and version name |\n| [`kappmaker config`](#config) | Manage CLI settings, API keys, and global defaults |\n\n## Features\n\n### Works with any project\n\nThese commands are standalone and don't depend on any specific boilerplate:\n\n- **AI logo generation** — Generate logo variations with fal.ai, pick your favorite, auto-remove background\n- **AI screenshot generation** — Generate marketing screenshots from a text description (8 style presets)\n- **Screenshot translation** — Translate app screenshots to 48+ locales in parallel\n- **ASO keyword research** — Skill-driven workflow that discovers high-value sub-niche keywords for a base topic via the [Astro MCP](https://tryastro.app/docs/mcp/) tools (real-time App Store popularity + difficulty scores from competitor analysis and AI suggestions), filters them by configurable thresholds, clusters them by sub-niche, and writes `AiGuidelines/keywords.md`. Falls back to a manual brainstorm when Astro MCP isn't connected. Output feeds directly into the metadata localization workflow below.\n- **ASO metadata localization** — Skill-driven workflow that writes per-locale `name`/`subtitle`/`keywords`/`description` (iOS) and `title`/`short_description`/`full_description` (Android) text files with two strategies: US-indexed keyword expansion (English copy with different keywords per locale to multiply indexed surface) or native per-market localization. Char-limits, keyword-field rules, and no-duplicate-word-across-fields are enforced automatically.\n- **App Store Connect setup** — Register bundle ID (with Sign in with Apple, In-App Purchases, and Push Notifications capabilities enabled automatically), create app, set metadata, categories, age rating, subscriptions, privacy, and review info — fully automated, no manual App Store Connect steps needed\n- **Google Play Console setup** — Push store listings, subscriptions (new monetization API), one-time in-app products, and the data safety declaration via a built-in wrapper around the Play Publisher API — no external CLI, no extra dependencies\n- **Adapty subscription setup** — Create products, paywalls, and placements for iOS and Android\n- **Version bumping** — Increment Android and iOS version codes and names in one command\n- **Image tools** — Split grids, remove backgrounds, enhance quality, convert to WebP\n\n### KAppMaker boilerplate-specific\n\nThe `create` command runs the full end-to-end setup. Some steps assume the [KAppMaker](https://kappmaker.com) project structure and will be skipped with a warning if you use a custom template:\n\n- **Package refactor** — Renames package name, app ID, and display name using the TypeScript refactor service (also available standalone via `kappmaker refactor`)\n- **Firebase SDK config placement** — Downloads `google-services.json` and `GoogleService-Info.plist` to KAppMaker-specific paths (falls back to `Assets/` for custom templates)\n- **Build environment** — Creates `local.properties`; iOS dependencies resolve via Swift Package Manager at build time (CocoaPods runs only if a custom template still has a `Podfile`)\n- **Android release build** — Generates keystore and builds signed AAB (also available standalone via `kappmaker android-release-build`)\n- **Git remotes** — Renames origin to upstream (designed for the \"fork from template\" workflow)\n- **Screenshot translation default path** — Defaults to `MobileApp/distribution/ios/appstore_metadata/screenshots/en-US` (falls back to parent of source directory)\n\n---\n\n## Prerequisites\n\n- **Node.js** >= 20\n- **Git**\n- **Firebase CLI** — `npm install -g firebase-tools`\n- **Fastlane** — via Bundler in the template repo\n- **Android SDK** — installed at `~/Library/Android/sdk` (configurable)\n- **asc CLI** (optional, for App Store Connect) — `brew install asc` (requires **≥ 1.4.0** as of KAppMaker 1.7.0 for the bulk CSV subscription-pricing path)\n- **Adapty CLI** (optional, for Adapty setup) — `npm install -g adapty`\n- **No extra CLI for Google Play Console** — `kappmaker gpc` talks to the Play Publisher API directly via Node's built-in `fetch` and `crypto`; all it needs is the service-account JSON path set in `googleServiceAccountPath`\n\n## External Services & API Keys\n\nThe CLI integrates with several external services for AI image generation, app store management, and subscription setup. All keys are stored locally at `~/.config/kappmaker/config.json`.\n\n### fal.ai — AI Image Generation\n\n**Used for:** Logo generation, background removal, image enhancement, screenshot translation, and screenshot generation.\n\n**How to get your key:**\n1. Sign up at [fal.ai](https://fal.ai)\n2. Go to [Dashboard > Keys](https://fal.ai/dashboard/keys) and create an API key\n3. `kappmaker config set falApiKey <your-key>` — or skip this and the CLI will prompt you the first time you run a command that needs it\n\n### ImgBB — Image Hosting\n\n**Used for:** Temporarily hosting reference images when generating or translating screenshots (fal.ai needs a public URL to process images).\n\n**How to get your key:**\n1. Sign up at [imgbb.com](https://imgbb.com)\n2. Go to [api.imgbb.com](https://api.imgbb.com/) and get your free API key\n3. `kappmaker config set imgbbApiKey <your-key>` — or prompted on first use\n\n### OpenAI — Prompt Generation\n\n**Used for:** Generating detailed screenshot specifications from a short app description (uses GPT-4.1). Only needed for the `generate-screenshots` command.\n\n**How to get your key:**\n1. Sign up at [platform.openai.com](https://platform.openai.com)\n2. Go to [API Keys](https://platform.openai.com/api-keys) and create a new key\n3. `kappmaker config set openaiApiKey <your-key>` — or prompted on first use\n\n### App Store Connect CLI (asc) — iOS App Management & Publishing\n\n**Used for:** Creating apps, setting metadata, categories, subscriptions, privacy declarations, and review info on App Store Connect (`create-appstore-app`). The same API key credentials are also used by `publish --platform ios` to build and upload IPAs via Fastlane.\n\n**How to set up:**\n1. Install: `brew install asc`\n2. Generate an API key at [App Store Connect > Users and Access > Integrations > API](https://appstoreconnect.apple.com/access/integrations/api) (Admin role, download the `.p8` file immediately)\n3. Configure:\n   ```bash\n   kappmaker config set ascKeyId <your-key-id>\n   kappmaker config set ascIssuerId <your-issuer-id>\n   kappmaker config set ascPrivateKeyPath /path/to/AuthKey.p8\n   kappmaker config set appleId your@email.com\n   ```\n   Or run `kappmaker config appstore-defaults --init` for interactive setup.\n\n> **Note:** `kappmaker publish --platform ios` uses `ascKeyId`, `ascIssuerId`, and `ascPrivateKeyPath` to automatically generate the Fastlane-format publisher JSON — no separate credentials needed.\n\n### Adapty CLI — Subscription Management\n\n**Used for:** Setting up in-app subscription products, paywalls, and placements across iOS and Android via Adapty's backend.\n\n**How to set up:**\n1. Install: `npm install -g adapty`\n2. Log in: `adapty auth login` (opens browser for authentication)\n3. Run: `kappmaker adapty setup`\n\n### Firebase CLI — Backend Setup\n\n**Used for:** Creating Firebase projects, registering Android/iOS apps, downloading SDK config files (`google-services.json`, `GoogleService-Info.plist`), and enabling anonymous authentication.\n\n**How to set up:**\n1. Install: `npm install -g firebase-tools`\n2. The `create` command handles login and project creation interactively.\n\n### Google Play Publisher — Android Store Uploads + Play Console Management\n\n**Used for:**\n- Building and uploading Android AABs to Google Play Store via `kappmaker publish --platform android` (Fastlane)\n- Configuring store listings, subscriptions, in-app products, and the data safety declaration via `kappmaker gpc ...` (direct Publisher API call, no external CLI)\n\nBoth flows share the same service account JSON key — set it once, use it everywhere.\n\n**How to set up:**\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com) and create a new project (or select existing)\n2. Open **APIs & Services > Library**, search for **Google Play Android Developer API**, and enable it\n3. Go to **IAM & Admin > Service Accounts**, create a new service account (skip role assignment)\n4. Open the service account, go to **Keys**, click **Add key > Create new key > JSON**, and download it\n5. Open [Google Play Console](https://play.google.com/console), go to **Settings > Users and permissions**\n6. Click **Invite new user** with the service account email (`...@...iam.gserviceaccount.com`) and grant permissions for your app(s)\n7. Save the JSON key file and configure:\n   ```bash\n   kappmaker config set googleServiceAccountPath /path/to/google-service-app-publisher.json\n   ```\n\n> **Note:** Google Play does not allow creating new apps via any public API — you must create the app manually once in [Play Console](https://play.google.com/console/u/0/developers) before `kappmaker gpc` can configure it.\n\n### App Store Publisher — iOS Store Uploads\n\n**Used for:** Building and uploading iOS IPAs to App Store Connect, managing App Store metadata and screenshots via `kappmaker publish --platform ios`.\n\nThe `publish` command reuses the same App Store Connect API key credentials used by `create-appstore-app` (`ascKeyId`, `ascIssuerId`, `ascPrivateKeyPath`) and automatically generates the Fastlane-format publisher JSON.\n\n**How to set up** (if not already configured for `create-appstore-app`):\n\n1. Open [App Store Connect > Users and Access > Integrations](https://appstoreconnect.apple.com/access/integrations/api)\n2. Create an API key with **App Manager** access and download the `.p8` file\n3. Note the **Key ID** and **Issuer ID**\n4. Configure:\n   ```bash\n   kappmaker config set ascKeyId <your-key-id>\n   kappmaker config set ascIssuerId <your-issuer-id>\n   kappmaker config set ascPrivateKeyPath /path/to/AuthKey.p8\n   ```\n\n---\n\n## `create <app-name>`\n\nFull end-to-end app bootstrapping. Creates a new KAppMaker app from the template and optionally sets up everything needed to publish.\n\n```bash\nkappmaker create Remimi\n```\n\n**What it does (13 steps):**\n\n| Step | Action | Details |\n|------|--------|---------|\n| 1 | Clone template | Clones into `<AppName>-All/` (prompts to overwrite if exists) |\n| 2 | Firebase login | Opens browser for authentication |\n| 3 | Create Firebase project | `<appname>-app` (skips if exists) |\n| 4 | Create Firebase apps | Android + iOS apps (reuses existing if found) |\n| 5 | Enable anonymous auth | If brand-new project, prompts user to click \"Get started\" in Firebase Console, then enables via API |\n| 6 | Download SDK configs | `google-services.json` + `GoogleService-Info.plist` (verifies package match, falls back to `Assets/`) |\n| 7 | Logo generation | *Optional* — AI logo + automatic background removal |\n| 8 | Package refactor | Renames packages, IDs, app name across all modules (shared, androidApp, desktopApp, webApp, designsystem, libs; also walks legacy `composeApp/` for pre-rename projects) |\n| 9 | Build environment | `local.properties`, generates signing keystore if missing (iOS deps resolve via SwiftPM) |\n| 10 | Git remotes | Renames origin to upstream |\n| | *Pre-store reminder* | *Prompts user to create Google Play Console app; App Store Connect is created automatically* |\n| 11 | App Store Connect | *Optional* — full app setup (metadata, subs, privacy); app created automatically via `asc web apps create` |\n| 12 | Google Play Console | *Optional* — Fastlane builds + uploads AAB to internal track, then runs full gpc setup |\n| 13 | Adapty setup | *Optional* — products, paywalls, placements (links to ASC + Play products created in 11-12) |\n\n**Options:**\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--template-repo <url>` | Template repository URL | KAppMaker template |\n| `--organization <org>` | Organization for Fastlane signing | App name (configurable) |\n\n---\n\n## `clone <app-name>`\n\nClones the template repository into `<AppName>-All`. This is step 1 of `create` exposed as a standalone command — useful when you only want to scaffold a project and apply your own changes (e.g. clone + refactor without Firebase, ASC, etc.).\n\n```bash\nkappmaker clone Remimi\nkappmaker clone Remimi --template-repo git@github.com:my-org/my-template.git\nkappmaker clone Remimi --target-dir ./projects/Remimi\n```\n\n**What it does:**\n1. Validates the app name (PascalCase)\n2. If no config exists at `~/.config/kappmaker/config.json`, runs `kappmaker config init` first\n3. If the target directory already exists, prompts to delete and start fresh\n4. Runs `git clone <templateRepo> <targetDir>`\n\n**Minimal flow** — clone + refactor without anything else:\n\n```bash\nkappmaker clone MyApp\ncd MyApp-All/MobileApp\nkappmaker refactor --app-id com.example.myapp --app-name MyApp\n```\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--template-repo <url>` | Git URL of the template repository | `templateRepo` from config |\n| `--target-dir <path>` | Target directory for the clone | `<AppName>-All` |\n\n---\n\n## `git setup-upstream`\n\nRenames the `origin` remote to `upstream`. Step 10 of `create` as a standalone command — designed for the \"fork from template\" workflow where the template repo becomes upstream and you add your own origin later.\n\n```bash\nkappmaker git setup-upstream                    # Run from inside the cloned repo\nkappmaker git setup-upstream ./MyApp-All        # Or pass the path explicitly\n```\n\nExits non-zero if the path is not a git repository.\n\n| Argument | Description | Default |\n|----------|-------------|---------|\n| `[path]` | Path to the repo root | Current directory |\n\n---\n\n## `firebase`\n\nFive standalone subcommands matching steps 2–6 of `create`. Run them individually for partial flows (e.g. set up Firebase for an existing project), or together to replicate what `create` does.\n\n```bash\nkappmaker firebase login\nkappmaker firebase project --app-name MyApp                # derives project-id = myapp-app, display = MyApp\nkappmaker firebase project --project-id myapp-prod --display-name MyApp  # explicit\nkappmaker firebase apps --project myapp-app --app-name MyApp --package-name com.example.myapp\nkappmaker firebase auth-anonymous --project myapp-app\nkappmaker firebase configs --project myapp-app --app-name MyApp --package-name com.example.myapp\n```\n\n### `firebase login`\n\nRuns `firebase login` (interactive). No args.\n\n### `firebase project`\n\nCreates the Firebase project. Idempotent — if the project already exists it skips creation. Returns success/failure to the orchestrator (controls whether `create` proceeds with steps 4–6).\n\n| Flag | Description | Required |\n|------|-------------|----------|\n| `--project-id <id>` | Firebase project ID (e.g. `myapp-app`) | Yes, unless `--app-name` is set |\n| `--display-name <name>` | Project display name | Defaults to `--project-id` or `--app-name` |\n| `--app-name <name>` | PascalCase app name; derives `project-id = <lowercase>-app` and `display-name = <name>` | Yes, unless explicit IDs are passed |\n\n### `firebase apps`\n\nCreates an Android + iOS app under the project. Idempotent — reuses existing apps that match the display name `${appName} (Android App)` / `${appName} (iOS App)`.\n\n| Flag | Description | Required |\n|------|-------------|----------|\n| `--project <id>` | Firebase project ID | Yes |\n| `--app-name <name>` | PascalCase display name (used to label the apps) | Yes |\n| `--package-name <pkg>` | Android `applicationId` and iOS bundle ID (e.g. `com.example.myapp`) | Yes |\n\n### `firebase auth-anonymous`\n\nEnables anonymous authentication via the Identity Toolkit Admin API. If Firebase Auth has never been initialized for the project, the command pauses and asks you to click \"Get started\" in the Firebase Console, then retries automatically.\n\n| Flag | Description | Required |\n|------|-------------|----------|\n| `--project <id>` | Firebase project ID | Yes |\n\n### `firebase configs`\n\nDownloads `google-services.json` and `GoogleService-Info.plist` for the Android + iOS apps and writes them to the right place. Apps are looked up via `--app-name` (display name match) unless you pass `--android-app-id` / `--ios-app-id` directly.\n\n**Output auto-detection** (when `--android-output` / `--ios-output` aren't given): probes `MobileApp/androidApp/google-services.json`, then `MobileApp/composeApp/google-services.json`, then falls back to `Assets/google-services.json`. Same for iOS — `MobileApp/iosApp/iosApp/GoogleService-Info.plist` if it exists, otherwise `Assets/GoogleService-Info.plist`.\n\nWhen `--package-name` is provided, the downloaded `google-services.json` is verified against the expected package name and patched in-place if it doesn't match (handles cases where the Firebase app was registered with an older `bundleIdPrefix`).\n\n| Flag | Description | Required |\n|------|-------------|----------|\n| `--project <id>` | Firebase project ID | Yes |\n| `--app-name <name>` | PascalCase display name (used to find the apps if app IDs aren't given) | Yes |\n| `--package-name <pkg>` | Verify and fix the Android `google-services.json` package name | No |\n| `--android-app-id <id>` | Skip lookup and use this Firebase App ID directly | No |\n| `--ios-app-id <id>` | Skip lookup and use this Firebase App ID directly | No |\n| `--android-output <path>` | Output path for `google-services.json` | Auto-detect |\n| `--ios-output <path>` | Output path for `GoogleService-Info.plist` | Auto-detect |\n\n---\n\n## `create-logo`\n\nGenerates an app logo using fal.ai's nano-banana-2 model.\n\n```bash\nkappmaker create-logo\nkappmaker create-logo --prompt \"A minimalist fitness tracker for runners\"\nkappmaker create-logo --output ./custom/path/logo.png\n```\n\n**Flow:**\n1. Reads app idea from `--prompt` (or prompts interactively if omitted)\n2. Generates a 4x4 grid of 16 logo variations (2K, 1:1)\n3. Opens grid in Preview.app for review\n4. Pick a logo (1-16) or R to regenerate — optional: `5 --zoom 1.1 --gap 3`\n5. Extracts chosen logo at 512x512\n\n**Output:** `Assets/app_logo.png` + `Assets/logo_variations.png`\n\nRequires a fal.ai API key (prompted on first use if not set, or set manually: `kappmaker config set falApiKey <your-key>`)\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--prompt <text>` | App idea / concept (skips the interactive prompt) | — |\n| `--output <path>` | Custom output path | `Assets/app_logo.png` |\n\n---\n\n## `generate-image`\n\nGeneric AI image generator — a thin wrapper around fal.ai's `nano-banana-2` (text-to-image) and `nano-banana-2/edit` (with reference images). Use this any time you need a one-off image without the logo-grid selection flow.\n\n```bash\nkappmaker generate-image --prompt \"A minimalist mountain landscape at sunset\"\nkappmaker generate-image --prompt \"Hero banner for a meditation app\" --aspect-ratio 16:9 --resolution 4K\nkappmaker generate-image --prompt \"Product render\" --num-images 4 --output Assets/hero\nkappmaker generate-image --prompt \"Put this logo on a black t-shirt\" --reference Assets/app_logo.png\nkappmaker generate-image --prompt \"Blend these into a single composition\" --reference Assets/moodboard\nkappmaker generate-image --prompt \"Match this product shot\" --reference https://example.com/ref.jpg\n```\n\n**Reference images (edit mode):** Passing `--reference` switches the endpoint from `nano-banana-2` (text-to-image) to `nano-banana-2/edit` (reference-guided). Each entry can be a **file path**, a **directory** (all png/jpg/jpeg/webp inside are picked up, sorted, non-recursive), or an **HTTP(S) URL**. Max 10 references total. If `imgbbApiKey` is configured, local files are uploaded to imgbb for reliable URLs; otherwise they are sent inline as data URIs (fine for small images, can fail on very large ones).\n\n**Output path behavior:**\n- No `--output` → `Assets/generated.png` (single) or `Assets/generated_1.png`, `_2.png`… (multi)\n- `--output <dir>` (no extension) → saves into that directory\n- `--output <file.png>` → single image uses path verbatim; multi-image appends `_1`, `_2` before extension\n\nRequires a fal.ai API key (prompted on first use if not set).\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--prompt <text>` | Text description of the image (required) | — |\n| `--output <path>` | Output file or directory | `Assets/generated.png` |\n| `--num-images <n>` | Number of images to generate (1–8) | `1` |\n| `--aspect-ratio <ratio>` | `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, `21:9`, `9:21`, `auto` | `1:1` |\n| `--resolution <res>` | `1K`, `2K`, `4K` | `2K` |\n| `--output-format <fmt>` | `png`, `jpg`, `webp` | `png` |\n| `--reference <paths...>` | Reference images — file paths, directories, or HTTP URLs (edit mode, max 10) | — |\n\n---\n\n## `create-appstore-app`\n\nCreates and fully configures an app on App Store Connect using the [asc CLI](https://github.com/rorkai/App-Store-Connect-CLI). Requires asc ≥ 1.4.0.\n\n```bash\nkappmaker create-appstore-app\nkappmaker create-appstore-app --config ./my-config.json\n```\n\n### First-time setup\n\n1. **Generate an API key** at [App Store Connect > Users and Access > Integrations > API](https://appstoreconnect.apple.com/access/integrations/api) — Admin access, download the `.p8` file immediately\n2. **Run one-time setup:**\n   ```bash\n   kappmaker config appstore-defaults --init\n   ```\n\n### What it does (13 steps)\n\n1. Validate asc CLI and authentication\n2. Load config (from file or interactive prompts)\n3. Register Bundle ID + enable capabilities (Sign in with Apple, In-App Purchases, Push Notifications). Name follows Apple convention: `XC com measify myapp` for `com.measify.myapp`\n4. Find or create app (fully automated via `asc web apps create` — no manual App Store Connect step needed)\n5. Set content rights\n6. Create app version (1.0.0)\n7. Set categories\n8. Set age rating\n9. Update localizations\n10. Set pricing, availability, and subscriptions\n11. Set privacy data usages\n12. Set encryption declarations\n13. Set review contact details\n\n### Config resolution\n\nLayers are deep-merged (later overrides earlier):\n\n1. **Built-in template** — age rating, privacy, encryption, subscriptions\n2. **Global defaults** (`~/.config/kappmaker/appstore-defaults.json`) — review contact, copyright\n3. **Local config** (`./Assets/appstore-config.json` or `--config`)\n4. **Interactive prompts** — only for fields still empty\n\n### Default subscriptions\n\n| Subscription | Period | Price | Product ID |\n|-------------|--------|-------|------------|\n| Weekly Premium | `ONE_WEEK` | $6.99 | `{appname}.premium.weekly.v1.699.v1` |\n| Yearly Premium | `ONE_YEAR` | $29.99 | `{appname}.premium.yearly.v1.2999.v1` |\n\nAuto-generated naming: group `{appname}.premium.v1`, ref name `{AppName} Premium Weekly v1 (6.99)`.\n\n### Per-territory PPP pricing (1.7.0+ — bulk CSV import)\n\nSubscriptions and IAPs are fanned out to **every ASC territory (~175)** with purchasing-power-parity-adjusted prices in a **single API call per product**. Requires asc CLI **≥ 1.4.0** (`brew upgrade asc`).\n\n- **Subscriptions** (1.7.0+): `asc subscriptions pricing prices import --input <csv>`. KAppMaker writes a temp CSV with `territory,price,price_point_id` rows for all ~175 territories and pipes it in. Replaces the 155-call loop from 1.6.x which hit Apple's rate limits.\n- **IAPs**: a single `asc iap pricing schedules create --prices \"PP_ID:DATE,…\"` call covers all territories (unchanged).\n\nSet `\"ppp_enabled\": false` on any subscription or IAP to opt out and keep only your explicitly-listed `prices`. User-listed territory prices are always preserved (they win the merge).\n\n**Tier resolution**: Apple's price-point catalog uses globally-stable tier numbers (1..800 — tier N = the same USD-equivalent across every territory). KAppMaker resolves each unique PPP USD target → tier ONCE via USA's catalog (where customerPrice is in USD), then synthesises per-territory price-point IDs locally using Apple's base64 `{s, t, p}` format. Critical fix vs 1.6.x: the old code compared a USD target against local-currency price-points (e.g. ¥, ₩, ₹) and ended up picking the FREE tier — products silently landed at $0 in JPN/IDR/INR/KRW/etc. The new tier-based resolution avoids that entirely.\n\n**Distinct catalogs**: subscriptions use `subscriptionPricePoints` (CLI: `asc subscriptions pricing price-points list`) while IAPs use `appPricePoints` (CLI: `asc pricing price-points`). Their `s` (catalog identifier) fields differ — mixing IDs across catalogs returns `400 The provided entity is invalid`.\n\n**Idempotent re-runs**: when `setup` reports \"already been used\", KAppMaker now logs `existing — refreshing pricing` and continues into the PPP fan-out so re-runs actually update territory pricing (1.6.x silently skipped).\n\n### App Review screenshots (1.7.1+)\n\nApple requires a review screenshot on every subscription and IAP — without one, products remain in `MISSING_METADATA` state and per-territory pricing won't \"resolve\". KAppMaker uploads it automatically when you set `review_screenshot` in the config:\n\n```json\n{\n  \"review_screenshot\": \"Assets/appstore/review-screenshot.png\",\n  \"subscriptions\": {\n    \"groups\": [{\n      \"subscriptions\": [{\n        \"ref_name\": \"Premium Weekly\",\n        \"review_screenshot\": \"Assets/appstore/weekly-review.png\"\n      }]\n    }]\n  },\n  \"in_app_purchases\": [{\n    \"product_id\": \"credit_pack_10_499_myapp\",\n    \"review_screenshot\": \"Assets/appstore/iap-review.png\"\n  }]\n}\n```\n\n- **Global default**: `review_screenshot` at the top level applies to every sub + IAP.\n- **Per-product override**: each subscription / IAP can specify its own path.\n- **Idempotent**: re-runs check `view` / `images list` first and skip if a screenshot is already attached. Delete via Apple's UI to force a re-upload.\n- **Silent skip on missing file**: if the path doesn't resolve to an existing file, KAppMaker logs and moves on — no error.\n\nUnder the hood: `asc subscriptions review screenshots create --file <path>` for subs and `asc iap images create --file <path>` for IAPs.\n\n#### Required size + auto-resize prompt\n\nApple's recommended size for App Review screenshots is **1290 × 2796 px** (iPhone 6.7\" Display, portrait — matches App Store listing screenshot dimensions). Minimum: 640 × 920 px. Format: PNG or JPG.\n\nIf the file's dimensions don't match 1290 × 2796, KAppMaker prompts:\n\n```\nWARN Review screenshot wrong-size.png is 1920×1080.\n-- Apple's App Store recommended size for review screenshots: 1290×2796 (iPhone 6.7\" Display, portrait).\n  Resize to 1290×2796 keeping aspect ratio? (Y/n)\n```\n\n- **Y (default)** — sharp resizes the file with `fit: 'inside'` (preserves aspect ratio, may end up smaller than the target on the constraining dimension; e.g. a 1920 × 1080 input becomes 1290 × 726). Writes to a temp file. Uploads the resized copy.\n- **N** — uploads the file as-is. Apple may still accept it (the rule is just `min 640 × 920`) but the aspect ratio won't match typical iPhone screenshots.\n\nFiles that are already 1290 × 2796 skip the prompt entirely.\n\n#### Standalone replace commands\n\nTwo top-level `appstore-` prefixed commands replace existing screenshots without running the full `create-appstore-app` flow:\n\n```bash\n# Replace the review screenshot on EVERY subscription in the config\nkappmaker appstore-update-subscription-review-screenshot --file ./Assets/appstore/new-review.png\n\n# Replace the review image on EVERY IAP\nkappmaker appstore-update-iap-review-screenshot --file ./Assets/appstore/iap-review.png\n\n# Without --file, the commands use the per-product `review_screenshot` from the config\nkappmaker appstore-update-subscription-review-screenshot\nkappmaker appstore-update-iap-review-screenshot\n\n# Target a single product\nkappmaker appstore-update-iap-review-screenshot \\\n    --file ./Assets/appstore/credit-pack-30.png \\\n    --product-id credit_pack_30_999_myapp\n```\n\n| Flag | Description |\n|---|---|\n| `--file <path>` | Single screenshot applied to all matched products. Overrides per-product `review_screenshot` from the config. |\n| `--config <path>` | Override default `./Assets/appstore-config.json`. |\n| `--product-id <id>` | Target ONE product (matches by `product_id` or `ref_name`). |\n\nThese commands **force-replace** existing screenshots (delete + create under the hood — empirically `asc … update` doesn't actually swap the binary). The setup-flow upload in `create-appstore-app` remains idempotent (skips when one is already attached).\n\n### Default in-app purchases (credit packs)\n\nThe template also ships three CONSUMABLE in-app purchases shaped as credit packs. Auto-fill triggers on any `in_app_purchases[]` entry with a `credits` numeric field.\n\n| Pack | Credits | Price | Product ID |\n|------|---------|-------|------------|\n| Basic Credit Pack | 10 | $4.99 | `credit_pack_10_499_{appname}` |\n| Pro Credit Pack | 30 | $9.99 | `credit_pack_30_999_{appname}` |\n| Ultimate Credit Pack | 80 | $19.99 | `credit_pack_80_1999_{appname}` |\n\nFormat: `credit_pack_{credits}_{priceDigits}_{appname}`. The same ID is used on Google Play and Adapty so app code can reference one constant per platform pair.\n\nCreated via the same one-shot `asc iap setup` workflow that drives subscription setup. Reruns are idempotent — already-existing product IDs are skipped with an info log.\n\n### Default privacy\n\n| Data Category | Purpose | Protection |\n|--------------|---------|------------|\n| User ID | App Functionality | Linked to You |\n| Device ID | App Functionality | Linked to You |\n| Crash Data | Analytics | Not Linked to You |\n| Performance Data | Analytics | Not Linked to You |\n| Other Diagnostic Data | Analytics | Not Linked to You |\n| Other Usage Data | Analytics | Not Linked to You |\n| Product Interaction | Analytics | Not Linked to You |\n\nDuring interactive setup, the CLI asks if the app accesses user content (AI image/video wrapper). If yes, adds Photos or Videos + Other User Content (both App Functionality / Not Linked to You).\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--config <path>` | Path to JSON config file | `./Assets/appstore-config.json` |\n\n---\n\n## `appstore-monetization-push`\n\nStandalone command that re-runs only the subscription + IAP push step from `create-appstore-app`. Useful when you want to sync pricing (including PPP fan-out) without repeating the full 13-step setup — e.g. after adding a new subscription period, adjusting prices, or upgrading to a newer KAppMaker version with PPP fixes.\n\n```bash\n# Push everything (subscriptions + IAPs)\nkappmaker appstore-monetization-push\n\n# Subscriptions only\nkappmaker appstore-monetization-push --subscriptions-only\n\n# IAPs only\nkappmaker appstore-monetization-push --iap-only\n\n# Custom config path\nkappmaker appstore-monetization-push --config ./path/to/appstore-config.json\n```\n\nReads `Assets/appstore-config.json` (or `--config <path>`). Resolves the ASC app ID from `app.id` or by looking up `app.bundle_id` via `asc`. Calls the same `setupSubscriptions` / `setupInAppPurchases` functions as `create-appstore-app` — fully idempotent: existing products get pricing refreshed with the full PPP regional fan-out.\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--config <path>` | Path to JSON config file | `./Assets/appstore-config.json` |\n| `--subscriptions-only` | Push subscription groups only, skip IAPs | — |\n| `--iap-only` | Push IAPs only, skip subscription groups | — |\n\n---\n\n## `gpc`\n\nGoogle Play Console management — a tight wrapper around the official Google Play Android Publisher API. All subcommands authenticate via the service account JSON at `googleServiceAccountPath` (same one used by `publish --platform android`). **No external CLI and no extra npm dependencies** — the JWT flow and HTTPS calls are implemented with Node's built-in `crypto` and `fetch`.\n\n> **Note:** Google Play does not allow creating new apps via any public API. Create the app manually once in [Play Console](https://play.google.com/console/u/0/developers), then use these commands to configure it.\n\n### `gpc setup`\n\nFull end-to-end configuration (11 steps) — the Google Play parallel to `create-appstore-app`.\n\n```bash\nkappmaker gpc setup\nkappmaker gpc setup --config ./my-config.json\n```\n\n**What it does:**\n\n1. Validate service account + obtain access token\n2. Load config (`./Assets/googleplay-config.json` or interactive prompts). **Auto-detects Play's actual default language** via a throwaway edit probe and rewrites `config.app.default_language` + the matching listing locale if your config drifted from reality. Also migrates legacy product IDs and legacy data-safety placeholders. Also reads tracks state to verify an APK/AAB is uploaded.\n3. Review summary and confirm\n4. Verify app exists on Play Console (fails fast with a deep link if not — Google does not allow app creation via the public API)\n5. Start a Play Console edit (only if the default-language listing has a title — otherwise steps 5-7 are skipped cleanly)\n6. Update app details (default language + contact website/email/phone)\n7. Update store listings per locale (title, short/full description, video); commits the edit. Empty listing titles are auto-filled from the app name\n8. **Pre-flight build check**, then create subscriptions via the new monetization API (`POST /subscriptions` with `productId` + `regionsVersion.version` as query params, base plans in body in DRAFT state, then `basePlans:activate` each one). **Base plans are available to all ~175 Play regions** — regions without explicit prices get auto-converted pricing from Google. Idempotent — existing product IDs are skipped. **Subscription listings are auto-cloned into Play's default language if missing.** Skipped with a clear message if no build is uploaded to any track (Google rejects monetization writes in that case).\n9. Create one-time in-app products via the **new** monetization API (`PATCH /onetimeproducts/{id}?allowMissing=true` + `purchaseOptions:batchUpdateStates` to activate). Idempotent via `GET /oneTimeProducts`. Replaces the legacy `/inappproducts` endpoint that returns 403 on migrated apps.\n10. Update the data safety declaration: converts `data_safety` JSON → Google's CSV format using a bundled canonical template + KAppMaker defaults (USER_ID for app functionality + account management; DEVICE_ID for app functionality + advertising + account management; crash/performance/diagnostics/interactions for analytics), then posts it via `POST /dataSafety` with `{ safetyLabels: \"<csv>\" }`. Respects `data_safety_csv_path` as an escape hatch for pre-exported CSVs.\n11. Print a checklist of policy declarations that the Publisher API does NOT expose (content rating / IARC, target audience, ads, health apps, financial features, government apps, news apps, gambling, COVID-19 tracing, app access, advertising ID, families compliance, app pricing tier) with a deep link to Play Console's App content page. All verified against Google's v3 discovery document — none have REST endpoints.\n\n### `gpc listings push`\n\nPush just the store listings section from the config file (useful after editing copy).\n\n```bash\nkappmaker gpc listings push\nkappmaker gpc listings push --config ./my-config.json\n```\n\nRuns a single edit transaction: updates app details → updates every listing locale → commits.\n\n### `gpc subscriptions list`\n\nRead-only — lists existing subscription product IDs on Play Console.\n\n```bash\nkappmaker gpc subscriptions list --package com.example.myapp\nkappmaker gpc subscriptions list   # uses app.package_name from the config file\n```\n\n### `gpc subscriptions push`\n\nCreate or reuse subscriptions from the config file. Idempotent — already-existing product IDs are skipped, and base plans are activated even for reused subscriptions.\n\n```bash\nkappmaker gpc subscriptions push\n```\n\nUses the **new** monetization API (`applications/{pkg}/subscriptions` + `basePlans:activate`). Auto-generated IDs:\n\n| Field | Format | Example ($6.99 weekly) |\n|---|---|---|\n| `productId` (subscription) | `{appname}.premium.{period}.v1` | `myapp.premium.weekly.v1` |\n| `basePlanId` | `autorenew-{period}-{priceDigits}-v1` | `autorenew-weekly-699-v1` |\n| Subscription title | `{AppName} Premium {PeriodLabel}` | `MyApp Premium Weekly` |\n\nThese align 1-to-1 with what `adapty setup` writes to `android_product_id` and `android_base_plan_id`, so Adapty links the products automatically without any extra configuration.\n\n### `gpc iap list`\n\nRead-only — lists existing one-time in-app product SKUs on Play Console.\n\n```bash\nkappmaker gpc iap list --package com.example.myapp\nkappmaker gpc iap list\n```\n\n### `gpc iap push`\n\nCreate or reuse one-time in-app products from the config file. Idempotent — existing products are PATCHed with fresh PPP regional pricing.\n\n```bash\nkappmaker gpc iap push\nkappmaker gpc iap push --recreate-stuck   # DELETE + recreate products stuck at regionsVersion 2022/02\n```\n\n| Flag | Description |\n|---|---|\n| `--config <path>` | Override the default config path (`./Assets/googleplay-config.json`) |\n| `--recreate-stuck` | DELETE products whose stored regions can't coexist with `regionsVersion=2022/02` (e.g. legacy products with MN) so they recreate fresh. WARNING: Google holds the productId in a soft-delete reservation window for a few minutes to a few hours after deletion — CREATE during that window fails with \"Product ID already in use\". Use only when you can tolerate downtime, or prefer bumping the product_id in config (e.g. `v1` → `v2`) for zero downtime. |\n\nUses the **new** monetization API: `PATCH /applications/{pkg}/onetimeproducts/{id}?allowMissing=true` to create/update the product, then `purchaseOptions:batchUpdateStates` with an `activatePurchaseOptionRequest` to activate the default purchase option so it's available to buyers. Replaces the legacy `/inappproducts` endpoint, which Google now rejects with \"Please migrate to the new publishing API\" on migrated apps.\n\n**Default credit packs** ship in `Assets/googleplay-config.json`. Auto-fill triggers on any `in_app_products[]` entry with a `credits` numeric field — SKU is set to `credit_pack_{credits}_{priceDigits}_{appname}` (matches the ASC and Adapty IDs):\n\n| Pack | Credits | Price | SKU |\n|------|---------|-------|-----|\n| Basic Credit Pack | 10 | $4.99 | `credit_pack_10_499_{appname}` |\n| Pro Credit Pack | 30 | $9.99 | `credit_pack_30_999_{appname}` |\n| Ultimate Credit Pack | 80 | $19.99 | `credit_pack_80_1999_{appname}` |\n\n**Global region availability with PPP pricing (1.6.0+):** subscriptions and one-time products are both created with **explicit per-region prices** in every Play-supported region (~175), with purchasing-power-parity multipliers applied — IN gets ~0.35×, AR/PK/EG get 0.30×, US/CA/EU base at 1.00×, CH/NO at 1.10×. The multipliers come from a Steam/Spotify-inspired tier table ([iosdevmax/ppp-pricing](https://github.com/iosdevmax/ppp-pricing), MIT). Prices round to .99 endings.\n\n| Override | Result |\n|---|---|\n| You list `{ region_code: \"DE\", price: \"5.99\", currency_code: \"EUR\" }` | Used as-is for DE; PPP fills the rest |\n| You list only US/USD | PPP fans out from your USD anchor to ~175 regions |\n| Set `\"ppp_enabled\": false` on a base plan or IAP | That entry stays restricted to your listed regions |\n\n**Each region's price is in its native currency** (AE → AED, JP → JPY, IN → INR, etc.) — Google Play rejects mismatched currencies. The CLI calls Google's `convertRegionPrices` endpoint with your USD base price to get fair FX-converted native prices for every billable region, then multiplies by the region's PPP multiplier and charm-rounds (.99 for decimal currencies, X99 / X9 for zero-decimal currencies like JPY / KRW). Sanctioned countries (AF, IR, KP, SY, etc.) are auto-excluded — they don't appear in `convertRegionPrices` output.\n\n**`regionsVersion=2022/02` drift override (1.6.11+):** Google's monetization API requires `regionsVersion.version` and `\"2022/02\"` is the only documented value. Several regions have drifted since that snapshot was taken — Google's live API returns one currency but `2022/02` expects another. The CLI handles this with an explicit override table:\n\n| Region | Live API | 2022/02 expects | What CLI does |\n|---|---|---|---|\n| BG | EUR | BGN | Converts EUR → BGN via the 1 EUR = 1.95583 BGN peg |\n| HR | EUR | EUR ✓ | No override (Google updated 2022/02 retroactively) |\n| CI / CM / SN | XOF / XAF | USD | Uses the USD anchor (PPP multiplier still applied) |\n| MN | billable | NOT BILLABLE | Skipped entirely (no currency works) |\n\nNet effect: typical products land with all ~173 billable regions AVAILABLE (only MN drops out). Google's storage layer auto-converts each region's submitted currency to the user-facing display currency (we send BG/BGN → end users see EUR; we send CI/USD → end users see XOF).\n\n**Existing products with regions stuck at `2022/02`:** if Google's old catalog has stored MN (or another `NEVER_BILLABLE` region) on an existing product, that PATCH cannot be completed — Google won't accept MN's currency but also refuses to remove the region. The CLI surfaces these \"stuck\" products at the end of the run and offers three fix paths:\n\n1. **Recommended** — bump the `product_id` in your config (e.g. `credit_pack_10_499_myapp` → `credit_pack_10_499_myapp_v2`). Fresh product, no legacy baggage, no waiting period.\n2. `--recreate-stuck` flag — DELETEs the stuck product(s) and recreates them fresh. WARNING: Google soft-deletes for a few minutes to a few hours; CREATE during that window returns \"Product ID already in use\". Plan downtime.\n3. Manually delete on Play Console UI, wait for the reservation window to clear, then re-run.\n\n**\"New countries and regions\" set to AVAILABLE (1.6.11+):** both subscriptions (`otherRegionsConfig`) and one-time products (`newRegionsConfig`) are now always set to `availability: AVAILABLE` with USD + EUR anchors when a USD anchor is present. Means any region Google adds to its billable catalog in the future is auto-priced from those anchors — no future-proofing maintenance needed.\n\n**Want simpler pricing without PPP?** Set `\"ppp_enabled\": false` on a base plan or one-time product to skip the PPP fan-out. The CLI then submits only your user-listed regions in `regional_configs` (typically just US) plus `otherRegionsConfig` (subscriptions) / `newRegionsConfig` (one-time products) with USD + EUR anchors. Google handles the fan-out via its own pricing-template FX algorithm — every billable region gets a price, but without PPP discounting in lower-income markets. Trade-off: smaller payload, less control.\n\n### `gpc data-safety push`\n\nPush only the data safety declaration. Faster than running the full `setup` when you're iterating on the privacy answers.\n\n```bash\nkappmaker gpc data-safety push\n```\n\n**How it works under the hood:** Google's `POST /applications/{pkg}/dataSafety` does not take structured JSON — it takes a CSV file (the same one Play Console exports from Policy → App content → Data safety → Export to CSV), wrapped in `{ safetyLabels: \"<csv>\" }`. KAppMaker lets you stay in JSON and converts internally.\n\n**Two ways to configure it in `Assets/googleplay-config.json`:**\n\n1. **Structured JSON (recommended)** — `data_safety.answers` overlay on top of KAppMaker defaults:\n\n   **Account creation:** \"My app does not allow users to create an account\" (`PSL_ACM_NONE`).\n\n   **Data deletion:** skipped entirely (the question is optional).\n\n   **Data types collected:**\n\n   | Data type | Play Question / Response |\n   |---|---|\n   | User IDs | `PSL_DATA_TYPES_PERSONAL/PSL_USER_ACCOUNT` |\n   | Device ID | `PSL_DATA_TYPES_IDENTIFIERS/PSL_DEVICE_ID` |\n   | Crash logs | `PSL_DATA_TYPES_APP_PERFORMANCE/PSL_CRASH_LOGS` |\n   | Diagnostics | `PSL_DATA_TYPES_APP_PERFORMANCE/PSL_PERFORMANCE_DIAGNOSTICS` |\n   | Other performance | `PSL_DATA_TYPES_APP_PERFORMANCE/PSL_OTHER_PERFORMANCE` |\n   | App interactions | `PSL_DATA_TYPES_APP_ACTIVITY/PSL_USER_INTERACTION` |\n\n   **Data handling (same for ALL data types above):**\n   - Collected only, **not shared** with third parties\n   - **Processed ephemerally** (YES)\n   - **Collection is required** — users can't turn it off\n   - Purposes: Analytics (+ App functionality for Device ID)\n\n   **Security:** encrypted in transit = YES.\n\n   Example config (just use the default — override if you need to add data types or change handling):\n   ```json\n   \"data_safety\": {\n     \"apply_defaults\": true,\n     \"answers\": {}\n   }\n   ```\n\n   To override a specific answer, add keys to `answers`. Keys are either `QuestionID` (for single-answer rows) or `QuestionID/ResponseID` (for multi-choice rows). Values are `true` / `false` / URL string / `null`:\n   ```json\n   \"data_safety\": {\n     \"apply_defaults\": true,\n     \"answers\": {\n       \"PSL_DATA_TYPES_PERSONAL/PSL_USER_ACCOUNT\": true,\n       \"PSL_DATA_TYPES_LOCATION/PSL_APPROX_LOCATION\": true\n     }\n   }\n   ```\n\n   Internally, KAppMaker loads a canonical 783-row template (extracted from the well-maintained [fastlane-plugin-google_data_safety](https://github.com/owenbean400/fastlane-plugin-google_data_safety)), applies defaults + your overrides, emits a filled CSV, and uploads it via `POST /dataSafety`.\n\n2. **Escape hatch: CSV file** — if you already exported a real CSV from Play Console and filled it in:\n   ```json\n   \"data_safety_csv_path\": \"Assets/data-safety.csv\"\n   ```\n   When this field is set and the file exists, it takes priority over the JSON block and is uploaded verbatim.\n\n**Important:** Review the summary Play Console shows after the push before publishing. Google's conditional question logic may reject some answers — paste the error and I'll adjust the defaults.\n\n### `gpc app-check`\n\nQuick read-only probe to verify that an app exists on Play Console. Useful for CI scripts and before running destructive operations.\n\n```bash\nkappmaker gpc app-check --package com.example.myapp\n```\n\nExits 0 if found, 2 if missing (prints the Play Console deep link).\n\n### Config\n\nAll `gpc` subcommands except `app-check` load `./Assets/googleplay-config.json` by default. The first run of `kappmaker gpc setup` creates it interactively.\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--config <path>` | Path to JSON config file | `./Assets/googleplay-config.json` |\n| `--package <name>` | (list commands) Override the package name from config | — |\n\n**Alias:** `kappmaker create-play-app` is kept as a shortcut for `kappmaker gpc setup` (the entire 11-step flow is also what the top-level `kappmaker create` calls under step 8 when you answer yes to the Google Play Console prompt).\n\n---\n\n## `gpc monetization push`\n\nStandalone command that re-runs only the subscription + IAP push steps from `gpc setup`. Useful when you want to sync pricing (including full PPP fan-out across ~175 regions) without repeating listings, data safety, or the manual-checklist prompt.\n\n```bash\n# Push everything (subscriptions + IAPs)\nkappmaker gpc monetization push\n\n# Subscriptions only\nkappmaker gpc monetization push --subscriptions-only\n\n# IAPs only\nkappmaker gpc monetization push --iap-only\n\n# Custom config path\nkappmaker gpc monetization push --config ./path/to/googleplay-config.json\n\n# Re-create products stuck due to regionsVersion 2022/02 drift\nkappmaker gpc monetization push --recreate-stuck\n```\n\nReads `Assets/googleplay-config.json` (or `--config <path>`). Validates the service account and probes the app state (requires at least one uploaded build — internal testing track is enough). Calls the same `setupSubscriptions` / `setupInAppProducts` functions as `gpc setup` — fully idempotent: existing products are PATCHed with refreshed PPP regional fan-out.\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--config <path>` | Path to JSON config file | `./Assets/googleplay-config.json` |\n| `--subscriptions-only` | Push subscriptions only, skip IAPs | — |\n| `--iap-only` | Push IAPs only, skip subscriptions | — |\n| `--recreate-stuck` | Delete + recreate products stuck due to regionsVersion 2022/02 incompatibility | — |\n\n---\n\n## `subscription add`\n\nQuick-add a single new subscription to Google Play and App Store Connect without editing config files. Auto-generates aligned product IDs across both stores, fans out PPP pricing across ~175 Play regions and ~155 ASC territories, and auto-creates the App Store Connect subscription group if it doesn't exist yet.\n\n```bash\n# Minimum invocation — defaults to --platform all (Play + ASC)\nkappmaker subscription add --period weekly --price 9.99\n\n# v2 product line alongside an existing v1\nkappmaker subscription add --period weekly --price 9.99 --product-version 2\n\n# Single store\nkappmaker subscription add --period monthly --price 19.99 --platform android\nkappmaker subscription add --period yearly --price 29.99 --platform ios\n\n# Full control — fully spelled out\nkappmaker subscription add \\\n  --period weekly --price 6.99 --product-version 2 \\\n  --name \"Weekly Premium\" \\\n  --description \"Full access for one week.\" \\\n  --review-screenshot \"Assets/appstore/review-screenshot_subscription.jpg\" \\\n  --group \"myapp.premium.v2\" --group-name \"Premium Access\" \\\n  --app-name \"MyApp\"\n```\n\n**What it creates** (for `--period weekly --price 9.99 --product-version 1`):\n\n| Where | Field | Value |\n|---|---|---|\n| ASC | `product_id` | `myapp.premium.weekly.v1.999.v1` |\n| ASC | `ref_name` | `MyApp Premium Weekly v1 (9.99)` |\n| ASC | subscription period | `ONE_WEEK` |\n| ASC | localization (en-US) | name = `MyApp Premium Weekly`, description = `Full access for one week.` |\n| ASC | pricing | $9.99 USD anchor → PPP fan-out across ~155 territories in one `prices import` CSV call |\n| ASC | review screenshot | top-level `config.review_screenshot` (or `--review-screenshot`) |\n| ASC | subscription group | first group in config, OR `--group <ref>` (auto-created with en-US name if new) |\n| Play | `product_id` | `myapp.premium.weekly.v1` |\n| Play | base plan | `autorenew-weekly-999-v1`, period `P1W` |\n| Play | listing (en-US) | title = `MyApp Premium Weekly`, description = `Full access for one week.` |\n| Play | pricing | $9.99 USD anchor → PPP fan-out across ~173 billable regions via `convertRegionPrices` |\n\n**Flags:**\n\n| Flag | Required | Default |\n|---|---|---|\n| `--period <slug>` | yes | — — one of `weekly` / `monthly` / `twomonths` / `quarterly` / `semiannual` / `yearly` |\n| `--price <number>` | yes | — — USD anchor; PPP fans the rest |\n| `--platform <target>` | no | `all` (= Play + ASC) — `ios` = ASC only, `android` = Play only |\n| `--product-version <n>` | no | `1` — bumps every `v` marker, e.g. `--product-version 2` → `myapp.premium.weekly.v2.999.v2` + `myapp.premium.weekly.v2` + `autorenew-weekly-999-v2` |\n| `--name <text>` | no | `\"<AppName> Premium <Period>\"` — localized display name |\n| `--description <text>` | no | period-derived sentence: weekly → `\"Full access for one week.\"`, monthly → `\"Full access for one month.\"`, etc. |\n| `--review-screenshot <path>` | no | top-level `config.review_screenshot` from `Assets/appstore-config.json` |\n| `--group <ref>` | no | first group in `Assets/appstore-config.json` — if the ref doesn't exist on ASC yet, it's auto-created |\n| `--group-name <text>` | no | inherits from matching config group's `localizations[0].name`, else `\"Premium Access\"` — used when auto-creating a new group |\n| `--app-name <name>` | no | read from existing configs |\n| `--bundle-id <id>` | no | iOS bundle ID override (e.g. `com.example.myapp`) — use when `Assets/appstore-config.json` doesn't exist yet |\n| `--package-name <pkg>` | no | Android package name override — use when `Assets/googleplay-config.json` doesn't exist yet |\n\n**Idempotency:** safe to re-run. Existing products are PATCHed with refreshed PPP regional fan-out (same code path as `gpc subscriptions push` and `create-appstore-app`). Existing ASC subscriptions log `\"already exists — refreshing pricing\"` and continue.\n\n**Adapty is intentionally NOT included** — Adapty pulls live store prices at runtime via its store integrations, so creating an extra Adapty product entry adds noise without unlocking anything the SDK can't already fetch. Adapty product entries remain managed via `kappmaker adapty setup` for the canonical product set. (For credit packs `iap add` DOES include Adapty, see below.)\n\n**Notes:**\n- No `--free-trial` flag yet. For intro offers, edit `Assets/{googleplay,appstore}-config.json` and run `gpc subscriptions push` / `create-appstore-app`.\n- Only en-US localization is created. For multi-locale, edit the config files.\n- Only first regional price (`US/USD`) is set explicitly. Other regions come from PPP fan-out.\n\n---\n\n## `iap add`\n\nQuick-add a single credit-pack consumable IAP to Google Play, App Store Connect, AND Adapty (Adapty is included here because credit packs use the `credit_pack_access` access level to gate consumable entitlements that have no store-side equivalent). Auto-generates aligned product IDs across all three.\n\n```bash\n# Minimum invocation\nkappmaker iap add --credits 50 --price 14.99\n\n# v2 product line (appends \"_v2\" suffix to the ID)\nkappmaker iap add --credits 50 --price 14.99 --product-version 2\n\n# Single store\nkappmaker iap add --credits 100 --price 24.99 --platform ios\n\n# Full control\nkappmaker iap add \\\n  --credits 10 --price 4.99 --product-version 2 \\\n  --name \"Basic Credit Pack\" \\\n  --description \"10 credits to use in the app.\" \\\n  --review-screenshot \"Assets/appstore/review-screenshot_credits.jpg\"\n```\n\n**What it creates** (for `--credits 10 --price 4.99 --product-version 1 --name \"Basic Credit Pack\"`):\n\n| Where | Field | Value |\n|---|---|---|\n| ASC | `product_id` | `credit_pack_10_499_myapp` (v2+ appends `_v2`) |\n| ASC | `type` | `CONSUMABLE` |\n| ASC | `ref_name` | `MyApp Basic Credit Pack v1 (4.99)` |\n| ASC | localization (en-US) | name = `Basic Credit Pack`, description = `10 credits to use in the app.` |\n| ASC | pricing | $4.99 USD anchor → PPP across ~155 territories |\n| Play | `sku` | `credit_pack_10_499_myapp` |\n| Play | `purchase_type` | `managed` |\n| Play | listing (en-US) | title = `Basic Credit Pack`, description = `10 credits to use in the app.` |\n| Play | pricing | $4.99 USD anchor → PPP across ~173 billable regions |\n| Adapty | `title` | `MyApp Basic Credit Pack v1 (4.99)` |\n| Adapty | `period` | `consumable` (routed via Adapty REST API since CLI rejects this period value) |\n| Adapty | `ios_product_id` / `android_product_id` | same ID on both — `credit_pack_10_499_myapp` |\n| Adapty | access level | `credit_pack_access` (falls back to first level if missing) |\n\n**Flags:**\n\n| Flag | Required | Default |\n|---|---|---|\n| `--credits <number>` | yes | — |\n| `--price <number>` | yes | — — USD anchor; PPP fans the rest |\n| `--pla","readmeFilename":"README.md"}