{"_id":"@aivenlab/ats-simulator","_rev":"17-5a0ee257d32bf629d48119ea6b7ede1c","name":"@aivenlab/ats-simulator","dist-tags":{"latest":"0.3.5"},"versions":{"0.1.0":{"name":"@aivenlab/ats-simulator","version":"0.1.0","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.1.0","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"d9f2e460450b5c555df7b9fdeaa29c3039c0bff2","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.1.0.tgz","fileCount":9,"integrity":"sha512-twcyDfTgX5N2Eu+wb3bFLUZ0BXprkqVMlMINY3sdbyyDvS4y8M3qu34CR1AYkoDaYMaDzajvLaIYnrXYYYpZ4w==","signatures":[{"sig":"MEYCIQDcEBtRknDW8V5xhiMgcUoG7cxw7rSj1KlWY4H9tqXfRgIhAKY3MbWlt6A9XvspxhP4RDPFLkpLaR7tsUbd3Dul8/4o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237471},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"db8176e8b65c218f252257be1330d172bfa1f864","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.1.0_1785321595134_0.3124176116638693","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aivenlab/ats-simulator","version":"0.2.0","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.0","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"2b1bc4a67b57506e645178996e93fd3eb985b281","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.0.tgz","fileCount":9,"integrity":"sha512-i/CRwcP0C7dbUM+ChWs0nsgQ3T7qZj8WppJfXha7FvMR+kxP3bGh5wFoGGdyAk8T3Mp3s7ONTZ6cnQCghz9nkw==","signatures":[{"sig":"MEUCIQCX1G/18thpO5qoUC2YKHBtPrTCaqK2FkzIK4Bw47b8bQIgfTHmXS/muKSNSHLm0jwRSg8LCRU+LusR8Y8ZxpTLKqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265273},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"07e3109ea14a04e008c8a87526f5f7fd30250aa0","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.0_1785322415971_0.6604507354990548","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aivenlab/ats-simulator","version":"0.2.1","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.1","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"d58f06649476bb50e8c5616d420320b0a8415dca","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.1.tgz","fileCount":9,"integrity":"sha512-dFWAvW0y0qek7pB67UtTc5cUd8fAiP3temcqivr9jpoNp2N0oXD+O4adTXIoSbaZzHYG6qhe8Nf23AlSwIheEw==","signatures":[{"sig":"MEQCIBU0Mcgvy3fCOTWhCmKHFTXhFki19TGjJOrJOSTeJH8kAiBC1eC5mBx373YKE7446GCj00WwG9qGS7shncDV3aAEiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265282},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"ab2e4d919f0687d5f0fde2f6bfb101ff5a3334c7","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.1_1785322654693_0.9852055368392751","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@aivenlab/ats-simulator","version":"0.2.2","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.2","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"6c286a3386488391d6d142247dfa6310995d8d71","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.2.tgz","fileCount":9,"integrity":"sha512-jamzXDMjSP5ARxEgSPZEPVu8/H21KmBR6RYHhMNaZnDZ4TSXQQgCXwmNuENQjbxq/gNipB3LPgEkIse4AKdGEQ==","signatures":[{"sig":"MEQCIAHcbl95hpsN8V5+LeRIsxXgsHqe0aXxiU5briYuXlDXAiAazE3Azlo2X2SLChn5+ij0HR374hbRNvLDo9N26rnvpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265356},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"dfbfd79cab5640301825717f22a604754107d73b","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.2_1785322932119_0.761603854413671","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@aivenlab/ats-simulator","version":"0.2.3","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.3","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"34b7bd715d2747435e6d14d92ab07b373d85b83f","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.3.tgz","fileCount":9,"integrity":"sha512-T/P2IAM6cy/ipPQX0PoZ3Yaphe+3r7sH20SoykRCiPIODF+uIm+E2AJLz3Gjb6feiQTN1ArAgMUFWns1q3GNmQ==","signatures":[{"sig":"MEQCIHNtA1DiB6RgFVGBz8OOQfq5cqLq5aBPxCmg4POHvaO5AiA/hMIY8y4Oj7faH1cArZcY7rI3SzbiBhnUzstKNJxveQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269251},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"bbcf066ce56a4b6460384e736ff9c092cb50dbfe","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.3_1785323256454_0.7785617482366085","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@aivenlab/ats-simulator","version":"0.2.4","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.4","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"f4fb59809d62335f541033f3060ca25939db9df4","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.4.tgz","fileCount":9,"integrity":"sha512-ajeenBOJ+CuxWoYRn8ki/MRzNxbKBaGp1s8IXkq1EQ9B07Zh1sY64vS7DU5pBZiXBicJULzVHOSSFZFJMR1uyg==","signatures":[{"sig":"MEYCIQDsCZN82R4f81M254xqx/w7N8mUPpz6p1A4b+AFrKdVCgIhAKghtiW0pj5MpbrmD83BCalYzJQO7HMX/EK4k+cfTClI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270496},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"d0377255c17f8270d5dceb8843edde61e357876d","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.4_1785381220290_0.1219828879646756","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@aivenlab/ats-simulator","version":"0.2.5","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.5","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"a5b12b15e67c77e9cd40a60139323737912ab4f8","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.5.tgz","fileCount":9,"integrity":"sha512-woFI2te5G/7Qxo+ZnROcv4sR5lOkkmzTa6jlwlNegeWhgXySxW2R462INdMK+0nbx4LEWCO7VVWbxx5BCdneEg==","signatures":[{"sig":"MEUCIQD3TX367G3+eDT7OAUAEiSf4CRUMNamyRT/gm0FJWffmwIgEpkGgRdU+AD0H1MwGBr/JihSoKr6QCKxuhx1napk/GU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270496},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"0834057f13414a694e066626767482699e04c9a5","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.5_1785382988734_0.1862638870234441","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@aivenlab/ats-simulator","version":"0.2.6","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.6","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"9b5ed571525d19fbf0c7e1539703905ec209bcb7","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.6.tgz","fileCount":9,"integrity":"sha512-uoUrC0mcWKjVWyG3yyTp+vI4KxEuLbYgI41E8jGxmwB84VuMUxqRVM4ShgNzObYQcngNwOSnLjBMZfeMy86Xqw==","signatures":[{"sig":"MEUCIQCehxwgopIDzlvk9goHArzbk21mCtSQNF3/bc823lgpbAIgH+kZmQwY3fpXs0k1/wSc9vpQXgo2hQYmBpG3Fr7ehpY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":270493},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"0834057f13414a694e066626767482699e04c9a5","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.6_1785383149424_0.9755874668411966","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@aivenlab/ats-simulator","version":"0.2.7","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.7","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"ee8a9ee3d281c9692a006cbd7183c19084f0932e","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.7.tgz","fileCount":9,"integrity":"sha512-JIA3oPd1lNcMJcwOm4rSWfnXftCTlvjkrdSdi8Y7vPCpv/TTG3/7S22FwMYQzF3ZlkNuc3Iik4afzwyjkfVEJw==","signatures":[{"sig":"MEUCIQCajId1p+hAUoHBzQ6U37H3kuvRIWihqjetHgdGaLINIgIgJLFiTqDNeyy2mrYcIBirFxhdFBU04qyfWzLODnmRe5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272725},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"0274004d3b59bb900369720aacc1c1d9f09cb62a","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.7_1785383400510_0.3327905483843294","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@aivenlab/ats-simulator","version":"0.2.8","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.8","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"7142d347535a4a0fadc3455f10159188183a2a75","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.8.tgz","fileCount":9,"integrity":"sha512-Q8NjwcA924EDHxfJ+52BR94+IOIMFRZ/c0+WimEucQcYcDkM53sziy/zP4blgoZE6f68yImf3E26AlKLOPopHA==","signatures":[{"sig":"MEYCIQDmbFYaEZrtEewl3mV4iWgf99J9vsn8xHuWOdaFb+ulcgIhAPekuawXAoZ1c0zOrhXHDql0mLk19dPlmYQf3TrefZM8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":276050},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"11d985466423aae23232316e566dfa2aacd9bee1","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.8_1785383632499_0.17042932979379177","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@aivenlab/ats-simulator","version":"0.2.9","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.2.9","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"d2fd64db9c87177363ff9783c397a468f681b8db","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.2.9.tgz","fileCount":9,"integrity":"sha512-fzkB+qeowwsDuyokf5RtB1aCMmCHH3+CA6ceVnuUa+ArF7PglOFu1hWLt0aKGGSOLVhW0M+P1Ru7krUBBh51MQ==","signatures":[{"sig":"MEYCIQDdKs5WGfOGhn3ODWBlpMAXPa3Nfkh28gPfWlNlthg46wIhAK+klL79yl4RDiqMiehEoFYsDVBU5xL8q2Df0jfsxZ/t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279956},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"b23430cee4fc39aaf3d9cfc2746abb7bdf5c0044","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.2.9_1785383919766_0.13597218500376007","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aivenlab/ats-simulator","version":"0.3.0","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.3.0","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"ff84c9c82060f462ba4dc18a108692792e180b63","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.3.0.tgz","fileCount":9,"integrity":"sha512-IobkoPkrAqqKUfqbuVg539WPij3DiE9Wn6VmZJh3XXtWZX0V6MpYVtPxi8K+DLrTJueJe91WpkEeUosWSC3x0g==","signatures":[{"sig":"MEYCIQC6NMOzdjcbam0T4MBvGzqgvA/DaqT6FpzNXoSySFl8EgIhANkwBppm5EIxsoTpOnqViMX4PVMfxzQyTC+7fiphYN5s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283973},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"3b8a7b2966137a4a329abbc68e7c1a037bb55630","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.3.0_1785390847036_0.6636560587106475","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aivenlab/ats-simulator","version":"0.3.1","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.3.1","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"b45df8adfcbef505c8c94c02f0f10bccf9d033b0","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.3.1.tgz","fileCount":9,"integrity":"sha512-dxKSUPeWEb04uTgJpnaymIuUWflL+32heoMXrOe49EUKR3aDrPi99257FPYPecVRyP0VZ/U021haHhhzXqScsA==","signatures":[{"sig":"MEYCIQCx1lJ8F2VZXRlXKrYgYKfUZHRcNWjQPqOzMDDW5W/vUgIhAI6ObqaB1nnOT/V1knrnSWgW0XWLVinh6xliO56bV1NI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288899},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"e9b1799e99e3449c2277f636a206fbea796dad68","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.3.1_1785395064218_0.4294136112457425","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@aivenlab/ats-simulator","version":"0.3.2","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.3.2","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"d3c5a9e885c41eb2cda074b379562fe20065d58b","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.3.2.tgz","fileCount":9,"integrity":"sha512-VmZ3dQnx9huiRTA7idCHcFdT9kyENw3zdNBTEYLkPboh9uNkEr40TLzurdw2gk1XU2sW55xmfS07trKiTbf4zw==","signatures":[{"sig":"MEUCIFYowK5LzGinn3m22y0z1b3tsjxcsFP4n2lQvPVTaR+PAiEAneEqe4SgGxIOf30djmH5Xx7jm5CkIzL7BHjVaIqn+68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288347},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"59659cc4d853e4ca543be5b7a29232103fc0e663","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.3.2_1785395349655_0.20079743464979427","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@aivenlab/ats-simulator","version":"0.3.3","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.3.3","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"a4b5fdd728a739da384c8446d5f11492a0fa7334","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.3.3.tgz","fileCount":9,"integrity":"sha512-UHogByQ7KKUj1tkz3oTfLGfd163fEA70CopvbZIhvy7bgnSaW4PQu3mebCTDkoA1cIR1YOXotCpnMoC9Y8FWaA==","signatures":[{"sig":"MEQCIHf6tYM1r0C+6bFNPYpeeONx8KYWl12ZwFaI9zZKSFg/AiAPf10G794x7w1qkMZK//Gtr6opWdmV74aasIpNrqM7jA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":288924},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"699a126d21817e3c6cebce168be9acc86caf137d","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.3.3_1785397076721_0.7812553555972461","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@aivenlab/ats-simulator","version":"0.3.4","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","_id":"@aivenlab/ats-simulator@0.3.4","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"homepage":"https://github.com/daogu-ai/ats-simulator#readme","bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"bin":{"ats":"dist/cli.js"},"dist":{"shasum":"a29260e39351265e89e70052d06d4e710814b04c","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.3.4.tgz","fileCount":9,"integrity":"sha512-Jc+85z2Bc0eeOCKRk/SzCzXkZ/InEmNpdxwnB4nW4mwPe6kS/6kkKuQpTf3q2ruJEqtAENroQ2P5qblxcDSnkQ==","signatures":[{"sig":"MEQCIG5XmtGr0DqpyUxYZEUA9HMc6Pn/K3x0XC1y1UzsR4spAiBYGFXJ5uqaKMcaoiFuvFk+xmUibzGiGhXyvkSA9b8GfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289014},"main":"./dist/cli.js","type":"module","engines":{"node":">=18"},"gitHead":"b4e0d46b5972ea3d4873b3bc0eadab52c949f3e5","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsup","start":"node dist/cli.js","test:watch":"vitest"},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"repository":{"url":"git+https://github.com/daogu-ai/ats-simulator.git","type":"git"},"_npmVersion":"11.13.0","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"ora":"^8.1.1","chalk":"^5.3.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","commander":"^12.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","vitest":"^2.1.5","typescript":"^5.6.3","@types/node":"^22.10.0","@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7"},"_npmOperationalInternal":{"tmp":"tmp/ats-simulator_0.3.4_1785397664247_0.8278244661626306","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@aivenlab/ats-simulator","version":"0.3.5","description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","license":"MIT","type":"module","bin":{"ats":"dist/cli.js"},"main":"./dist/cli.js","engines":{"node":">=18"},"scripts":{"build":"tsup","dev":"tsup --watch","start":"node dist/cli.js","test":"vitest run","test:watch":"vitest","lint":"tsc --noEmit"},"dependencies":{"chalk":"^5.3.0","commander":"^12.1.0","dayjs":"^1.11.13","fs-extra":"^11.2.0","inquirer":"^12.1.0","ora":"^8.1.1"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/inquirer":"^9.0.7","@types/node":"^22.10.0","tsup":"^8.3.5","typescript":"^5.6.3","vitest":"^2.1.5"},"keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"repository":{"type":"git","url":"git+https://github.com/daogu-ai/ats-simulator.git"},"bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"homepage":"https://github.com/daogu-ai/ats-simulator#readme","publishConfig":{"access":"public"},"gitHead":"b43551b8edcb916322c1e5ba812b92d5435911ea","_id":"@aivenlab/ats-simulator@0.3.5","_nodeVersion":"24.17.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-8b1FKg8n74Qlz36sxTnBetEogxR4kGAunb4NQR5HxdKK2uw54ls9mJZHd9gGkE3V3sNZJTRph0qi1zCM5zko9g==","shasum":"0991877371cccb87663630d1a76b98f8048ca6c3","tarball":"https://registry.npmjs.org/@aivenlab/ats-simulator/-/ats-simulator-0.3.5.tgz","fileCount":9,"unpackedSize":289195,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDKyj8jPE1ZAn+jzXgBFkcNMCOHa+jt0UjTQKK//iZQIAIhAMkHvIwjjOqzWSzPcyFtgv2q1FGFLdBGhF6EBeEBZVqz"}]},"_npmUser":{"name":"aivenlab","email":"1084789751@qq.com"},"directories":{},"maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ats-simulator_0.3.5_1785399397695_0.8491892152613096"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-29T10:39:54.961Z","modified":"2026-07-30T08:16:38.000Z","0.1.0":"2026-07-29T10:39:55.265Z","0.2.0":"2026-07-29T10:53:36.112Z","0.2.1":"2026-07-29T10:57:34.835Z","0.2.2":"2026-07-29T11:02:12.257Z","0.2.3":"2026-07-29T11:07:36.596Z","0.2.4":"2026-07-30T03:13:40.432Z","0.2.5":"2026-07-30T03:43:08.885Z","0.2.6":"2026-07-30T03:45:49.572Z","0.2.7":"2026-07-30T03:50:00.672Z","0.2.8":"2026-07-30T03:53:52.704Z","0.2.9":"2026-07-30T03:58:39.922Z","0.3.0":"2026-07-30T05:54:07.192Z","0.3.1":"2026-07-30T07:04:24.371Z","0.3.2":"2026-07-30T07:09:09.792Z","0.3.3":"2026-07-30T07:37:56.857Z","0.3.4":"2026-07-30T07:47:44.419Z","0.3.5":"2026-07-30T08:16:37.848Z"},"bugs":{"url":"https://github.com/daogu-ai/ats-simulator/issues"},"author":{"name":"daogu","email":"62029199+daogu-ai@users.noreply.github.com"},"license":"MIT","homepage":"https://github.com/daogu-ai/ats-simulator#readme","keywords":["cli","ai","agent","token","simulator","mock","claude","codex"],"repository":{"type":"git","url":"git+https://github.com/daogu-ai/ats-simulator.git"},"description":"Parasitic AI Agent Token simulator — writes mock usage into ~/.claude and ~/.codex with real JSONL schemas.","maintainers":[{"name":"aivenlab","email":"1084789751@qq.com"}],"readme":"# ats-simulator\n\n[![npm version](https://img.shields.io/npm/v/%40aivenlab%2Fats-simulator)](https://www.npmjs.com/package/@aivenlab/ats-simulator)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Node >= 18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)]()\n\n**Parasitic AI Agent Token simulator.** Writes mock token-usage records into\n`~/.claude` and `~/.codex` using the exact JSONL schemas those CLIs\nproduce — so any third-party dashboard reading those directories sees the\nsimulated data with **zero configuration**.\n\n```bash\nnpm install -g @aivenlab/ats-simulator\n\nats init           # one-time bootstrap\nats generate       # interactive wizard\nats list           # what simulations are registered\nats show sim_xxx   # drill into one\nats export sim_xxx # JSON / JSONL / CSV\nats update         # self-update from npm\nats delete sim_xxx # strip one\nats clean          # strip everything (atomic rollback)\n```\n\n## Why \"parasitic\"?\n\nMost third-party token dashboards (cost trackers, usage analytics, MCP\nintegrations) hard-code the locations `~/.claude/` and `~/.codex/`.\nBuilding a separate, simulator-specific directory means you'd have to teach\nevery dashboard where to look — and they wouldn't.\n\n`ats-simulator` writes fake data directly into those existing folders,\nusing the **exact same record shapes** that real Claude Code / Codex\nsessions produce. Any tool that already reads your local state will Just\nWork.\n\n## Quickstart\n\n```bash\n# 1. Install\nnpm install -g @aivenlab/ats-simulator\n\n# 2. Initialize bookkeeping + snapshot your real history files\nats init\n\n# 3. Generate one simulation (interactive)\nats generate\n#   → pick platform (Claude / Codex / OpenCode)\n#   → pick models\n#   → pick token total + date range + strategy\n#   → confirm\n\n# 4. Now your dashboards see the simulated usage\n```\n\nOr skip the wizard with flags:\n\n```bash\nats generate \\\n  --platform claude \\\n  --models claude-fable-5 \\\n  --total 50B \\\n  --duration 7d \\\n  --strategy average \\\n  --name \"AI Coding 2026\" \\\n  --yes\n```\n\n## Supported platforms\n\n| Platform | Where data goes | Notes |\n|---|---|---|\n| **Claude Code** | `~/.claude/history.jsonl` + `~/.claude/projects/<key>/<uuid>.jsonl` | JSONL only — never touches sqlite |\n| **Codex** | `~/.codex/history.jsonl` + `~/.codex/sessions/ats-sim-*/usage.sim.jsonl` | JSONL + sidecar; sqlite untouched |\n\nEvery record carries an `__ats` marker (`{simId, model, generatedAt}`) so\n`ats clean` can strip them back out atomically. The Claude project dir\nalso carries a `.ats-simulator-owned` sentinel — cleaners refuse to\ndelete any directory that lacks this sentinel.\n\n## Cleanup safety\n\nEvery record carries an `__ats` marker. The simulator strips them back out\natomically:\n\n- `ats delete <simId>` — removes records for one sim; everything else\n  untouched\n- `ats clean` — removes every `__ats` record + the entire\n  `-ats-simulated-data` project dir + every `ats-sim-*` Codex session dir\n- `~/.claude/history.jsonl` and `~/.codex/history.jsonl` are rewritten via\n  `write to .tmp + rename`, so a crash mid-write can't corrupt your real\n  history files\n- `~/.ats-simulator/backup/` keeps a snapshot of both history files from\n  the moment you ran `ats init`\n\nFor Claude, the project dir carries a `.ats-simulator-owned` sentinel file.\n`ats clean` only deletes directories that own this sentinel — real Claude\nprojects are never touched.\n\n## CLI commands\n\n| Command | What it does |\n|---|---|\n| `ats init` | Bootstrap `~/.ats-simulator/`, snapshot real history files |\n| `ats models` | List available models by vendor |\n| `ats config [--set k=v ...]` | View / update config |\n| `ats generate` | Interactive wizard (6 steps) — produces one simulation |\n| `ats list` / `ats ls` | Table of all simulations |\n| `ats show <id>` | Drill into one simulation's per-model breakdown |\n| `ats delete <id>` / `ats rm <id>` | y/N confirmed; strips records for one sim |\n| `ats clean` | y/N confirmed; wipes ALL simulated data |\n| `ats export <id> [-f json\\|jsonl\\|csv] [-o dir]` | Export to JSON / JSONL / CSV |\n| `ats models [add\\|remove\\|reset]` | Manage the model roster (`ats models` to list) |\n| `ats update [--force] [-y]` | Self-update: query npm, reinstall if newer |\n\n### `ats generate` flags\n\n```\n-p, --platform <name>      claude | codex | opencode | all\n-t, --total <amount>       total tokens, e.g. 50B\n-s, --start <YYYY-MM-DD>    start date (with --end)\n-e, --end <YYYY-MM-DD>      end date (with --start)\n-d, --duration <expr>      30d | 12w | 6m | 1y   (ending today)\n-m, --models <ids...>      model ids, space-separated\n    --strategy <name>      average | proportional | custom\n-n, --name <name>          simulation name\n-P, --project-name <key>   Claude project key (default -ats-simulated-data)\n    --on-existing <mode>   fail | overwrite | reuse\n-y, --yes                  skip confirmation\n```\n\n## Default model roster\n\nReal model IDs (matching what official CLIs write):\n\n| Vendor | Models |\n|---|---|\n| Anthropic | `claude-opus-5`, `claude-sonnet-5`, `claude-fable-5` |\n| OpenAI | `gpt-5.6-sol`, `gpt-5.6-terra`, `gpt-5.6-luna` |\n| xAI | `grok-4.5-build`, `grok-4.5` |\n| China / Moonshot / Zhipu | `MiniMax-M3`, `k3`, `deepseek-v4-pro`, `glm-5.2` |\n\nAdd or hide models without rebuilding the CLI:\n\n```bash\nats models add gpt-5.7-turbo --name \"gpt-5.7-turbo\" --vendor OpenAI \\\n       --platforms claude,codex\nats models remove gpt-5.7-turbo\nats models reset             # back to bundled defaults\n```\n\nUser-added models are persisted in `~/.ats-simulator/config.json` under\n`userModels` and merged with the bundled list at runtime.\n\n## Generated data shape\n\nEvery simulated `assistant.message.usage` block follows the real Claude\nCode schema verbatim:\n\n```json\n{\n  \"input_tokens\": 71185,\n  \"output_tokens\": 12562,\n  \"cache_creation_input_tokens\": 6743,\n  \"cache_read_input_tokens\": 48706,\n  \"server_tool_use\": { \"web_search_requests\": 0, \"web_fetch_requests\": 0 },\n  \"service_tier\": \"standard\",\n  \"cache_creation\": {\n    \"ephemeral_1h_input_tokens\": 2698,\n    \"ephemeral_5m_input_tokens\": 4045\n  }\n}\n```\n\nDownstream tools that already parse Claude sessions (dashboards, billing\nreconcilers, etc.) produce meaningful output without changes.\n\n## Testing\n\n```bash\nnpm test          # run once\nnpm run test:watch\nnpm run lint      # type-check\n```\n\n64 tests cover token parsing, distribution math, marker construction,\ncleaner atomicity, schema validation.\n\n## File map\n\n```\nsrc/\n├── cli.ts                  # commander entry\n├── commands/               # one file per CLI subcommand\n├── lib/\n│   ├── paths.ts            # ~/.claude, ~/.codex, ~/.ats-simulator paths\n│   ├── markers.ts          # __ats marker construction & detection\n│   ├── io.ts               # atomic JSONL read/write + snapshot\n│   ├── token.ts            # 50B ↔ 50_000_000_000\n│   ├── distribution.ts     # average / proportional / custom\n│   ├── duration.ts         # 30d / 12w / 6m / 1y parsing\n│   ├── simulator.ts        # core: dates + allocations → usage records\n│   ├── writers/{claude,codex,opencode}.ts\n│   ├── cleaners/{claude,codex,opencode}.ts\n│   └── state.ts            # concurrent-safe state.json read/write\n├── constants/models.ts\n└── types/index.ts\n```\n\n## Requirements\n\n- Node.js ≥ 18 (Node 24+ recommended for the OpenCode writer, which uses\n  the built-in `node:sqlite` module)\n- npm, pnpm, or yarn\n\n## Platform support\n\n| OS | Status | Notes |\n|---|---|---|\n| Linux | ✅ | Primary platform. OpenCode at `~/.local/share/opencode/`. |\n| macOS | ✅ | OpenCode at `~/Library/Application Support/opencode/`. |\n| Windows | ✅ | Requires Node ≥ 18. `ats` command installed via npm `.cmd` shim. OpenCode at `%LOCALAPPDATA%\\opencode\\`. SQLite writer requires Node 24+ (or Node 22 with `--experimental-sqlite`). |\n\n**Tested on:** Linux (Node 24). macOS / Windows should work but are not\nexercised by CI. File paths use `os.homedir()` + `path.join` (no `~`\nexpansion). JSONL writes use `\\n` (no platform-dependent line endings).\n\n## License\n\n[MIT](LICENSE)","readmeFilename":"README.md"}