{"_id":"testpilot-dotnet","_rev":"39-bd3f38d1ef43a6972d26fc3ca1663865","name":"testpilot-dotnet","dist-tags":{"latest":"1.3.3"},"versions":{"0.1.0":{"name":"testpilot-dotnet","version":"0.1.0","_id":"testpilot-dotnet@0.1.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"1d7ef3435a6ff3abc7208255a43a1a2431074941","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.1.0.tgz","fileCount":138,"integrity":"sha512-HjCqmYk23po4Dno11hLeRkAJ8MgvbGsHTo7nhU6qWCo7E3mYSuhwLDDQKOigu5T22k/qb73s3cJ5y4V1fOUN0g==","signatures":[{"sig":"MEUCIQCpOjEzNtc6hAb9lK8KuY6P1qRvaQlGGGcsSh7ytr77BQIgF7LWKB1We6x0MbvbPNvseEyM3Loo4kn1+DF0IvUkYMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":540259},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f8897ea5a760deb903e367b1ca51bb788d04a9d5","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.1.0_1776335084624_0.7787377080087756","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"testpilot-dotnet","version":"0.1.1","_id":"testpilot-dotnet@0.1.1","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"a47cc67647055343b328ae7b31f5e3643cf57d05","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.1.1.tgz","fileCount":138,"integrity":"sha512-P9kC4ukXpAJXxfTjGJuD3oT5d+IfUxQdSOh7vWd42Lfz5GQTEQyasPmQkIC6Bzvq4AiqZIHZ34eogpByptiUrw==","signatures":[{"sig":"MEUCIQC8lUWj59DaNrVND8BCSrj35hOJ5YxcUYxpWJROZQmObQIgEzRgjDFJtZ57sI+pdYO5eFtzayiZPDg/ZT78b3CAFXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":540315},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f8897ea5a760deb903e367b1ca51bb788d04a9d5","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.1.1_1776336064512_0.8350478685424281","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"testpilot-dotnet","version":"0.1.2","_id":"testpilot-dotnet@0.1.2","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"73cccb1057b1d15533ad194a56376cff9f561ac4","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.1.2.tgz","fileCount":146,"integrity":"sha512-AchsoX6IKHudxelDFIqkLeqq+udWFtNroothFBnP789/hTuMhHdm+jy7ZKxUkmjs9N+EM92ef1xxcyYhyefLcA==","signatures":[{"sig":"MEQCIBtImV/AZ5UqlOb1OoHS4D91IOqTJK9kfJQxG8wqKpSeAiBMETO5QIuEzU3bdfEE2uy6xod+XHwmNdTcuKgoiX4C2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556578},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"377952654e7caf26295d7441504e7d118826f59d","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.1.2_1776398607400_0.2371890260937619","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"testpilot-dotnet","version":"0.1.3","_id":"testpilot-dotnet@0.1.3","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"382a393d65a74e0d2beb37d5d1e09cee64089992","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.1.3.tgz","fileCount":146,"integrity":"sha512-Wy8ib1TRdQVE1DwwxzHgahvq1p05P8fPjhlsjoqI4yrosaEq7nxc2INnLhN4QHt+kJXtriwFsi+zVm9pKpgtPQ==","signatures":[{"sig":"MEUCIBk24CPpnrVrEyrLhSQtAdhNkiwBCsepEfeRV2pArYiTAiEA+OvUM8l7Mpsgmzeiwjf3Jzfyg7sVXL31aQWrgPaeFuM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":557280},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"796aa6772c9f68e74e2b57203e504acd22223742","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.1.3_1776412616622_0.3296887333581078","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"testpilot-dotnet","version":"0.1.4","_id":"testpilot-dotnet@0.1.4","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"d0ea36cb1e63d044a07dc41eab4472bdaa9da257","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.1.4.tgz","fileCount":122,"integrity":"sha512-DNrOh9hIowaeFzD4LtqZ+TGHfjlTYqNLB0TA3HR95Uc9ZMYYgggrzUtGG6yeUsWQrsq5AHal9N0aQwjXDX5F4A==","signatures":[{"sig":"MEQCIFnbc8WEB45LTGr3iDZC0F2b9XtQx1dR6Ksc1npkJ7IIAiArNala9+zMzq7AWz7X9SqQsfr8htCqGDaYEMCt4/PAEw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":478417},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"796aa6772c9f68e74e2b57203e504acd22223742","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"10.8.2","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.1.4_1776669758372_0.20997814392850356","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"testpilot-dotnet","version":"0.2.0","_id":"testpilot-dotnet@0.2.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"6b445f32e0cdbb6f64f2770a323bfd1f135cfc34","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.2.0.tgz","fileCount":130,"integrity":"sha512-tU9DYkHUsDdTzxDrGg28ZbNLxNtWWpmXncx4QwwJbelKTS5hN+vvdMmmSDaFLI/iWHrqIhT0sZ0lAL64zZQldA==","signatures":[{"sig":"MEUCIFs9Jdsq/5TpJr+8gONabZ4SQZuQNFU3ZFEqyczcmEzwAiEArgR+/dz9DsQCupWsIMvwo5KbBSs9nJZyWnFWe9m3kXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":525035},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9639870219de4121462e77dca1b9aa0b17d01fe1","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.2.0_1778225032689_0.30693041459314596","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"testpilot-dotnet","version":"0.2.1","_id":"testpilot-dotnet@0.2.1","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"91ec48367f12be0b03b3372a54963afa9c18b491","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.2.1.tgz","fileCount":130,"integrity":"sha512-SdCTG2AAC5sjfxZkUJKgk6iK0DYulYrbaBHyypXBm9h/LKH9qDvA5Eb11FFIQsIsGq+EFHmGwQNmIMgPygTaiw==","signatures":[{"sig":"MEUCIFJwCk2GQoMAY+ra0FAw/p9ghgM9xLpZ/nDFII3bWD/sAiEAwyXCEuZgQGK+CbPbBorFNl6Zn4qB1E+60yzz2ossEcE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524278},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"1f6d5d96e303cd86beb0deb316ca297e65018486","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.2.1_1778482207240_0.49090852221200887","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"testpilot-dotnet","version":"0.2.2","_id":"testpilot-dotnet@0.2.2","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"7f2b48e486c908fa26096d4192a49c6a523d5ca8","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.2.2.tgz","fileCount":130,"integrity":"sha512-/r0YaF/tPUelpw4Y3EbB/BLA6uWRDcl+PpSWDLMmGFpQlkZqewODi7Wc0Fk5eZKEnPqCOptCWH5ndkQMUcrW+g==","signatures":[{"sig":"MEUCIQDB+xood2j/OlIr25e7t8bw1GWe9iEZFTnX0RbtbwrDQAIgdLn9GS+/biJ9cn/bRn2slzp2TGpWbBzlSQ5ag6XvQZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":525501},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"50cf2b7c5a56553ece30f73936fb7662ea8bd45b","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.2.2_1778544719643_0.07146407558285395","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"testpilot-dotnet","version":"0.2.3","_id":"testpilot-dotnet@0.2.3","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"360e2e95ea8a7ee3ce0a9a1b3e2e2650b3bd9c1d","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.2.3.tgz","fileCount":130,"integrity":"sha512-4xlA3pPR9OHPzYVLLZi5mtNf9Z4es/hJcpLBq1z3bymG/dL1dK2TzlJ792ihn7pMoFqGRo7zNfo8dFE48k06bA==","signatures":[{"sig":"MEUCIEm+AuMnTrdDKvk8kGguRgpXx3uMy6HZ0ZI2FQcQiSfUAiEAmpvMQNOzSttQk96eZIyyaFwmJBDQrS58KWPbfEdng/M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":525559},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"50cf2b7c5a56553ece30f73936fb7662ea8bd45b","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.2.3_1778544990354_0.7624313509770999","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"testpilot-dotnet","version":"0.3.0","_id":"testpilot-dotnet@0.3.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"6c5f22dcc4bb8535db083ae200b04f4a54e10821","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.3.0.tgz","fileCount":130,"integrity":"sha512-HcfgzMLjfw1gM1P/JMWgpJFDD8yEP7EpjqKt7GP3FptLLJoTYB5di8yL5xEfH4hzx0E/t167RkHHNrItZG0HNQ==","signatures":[{"sig":"MEYCIQD2zyagYne5aQkDbSndg9UDx8Iic8bHTazumsc5Z2ngwAIhAL3dbTo6oTKf86EZFXN8p9rRoJob5RP1TKTcnarC8UIN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":523707},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"5eb9faa00b4811c8ec276205112035018742454a","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.3.0_1778712286870_0.35592957967680916","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"testpilot-dotnet","version":"0.4.0","_id":"testpilot-dotnet@0.4.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"fcb63e72a8393db20070c2c26d31477c0969a2c7","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.4.0.tgz","fileCount":130,"integrity":"sha512-eY0ihjq11VFk1a9ISJqJszCD1RAZRRhNQrGirnK0WSQNDmMMMO/ke53hGQrfbVI6Ipe5IeXEJ/O9K3fK96aP4g==","signatures":[{"sig":"MEUCIQC+iPwf1VNAskgzXF73F6hxkQYsQBxgfqWLSNG+8d9CXAIgG1ibIzcKdPjStrWKDnuTCArtVDVwt7+Uy7JD/sKpNf8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":524597},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"4b62bab7926bc7c08e17190929883037c61c39d6","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.4.0_1779087358602_0.9982002453769587","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"testpilot-dotnet","version":"0.5.0","_id":"testpilot-dotnet@0.5.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"6d78fb4716baf92252df4a044a637e8e86c4448a","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.5.0.tgz","fileCount":130,"integrity":"sha512-J++GGcXUEKXDqN2J/5gMFmt04I4ePxpLPrYy8/i9XvLX1P/2rZV0WlOthaPC++2bFXG5pRFcCRX8UlP9f6kYhA==","signatures":[{"sig":"MEYCIQDzpeu4P4D1kvNJHf+o1Eh/6FPJsZxlBpd813oW3E2t0AIhAMaHJuN970i11CXkzsamm1L/9qZuYJ1G/uoJPjn9xMyD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":527047},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"2cd4d60abb2785c078d4a7c8f867f73e78da9102","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.5.0_1779287328250_0.37278931852835684","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"testpilot-dotnet","version":"0.6.0","_id":"testpilot-dotnet@0.6.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js"},"dist":{"shasum":"b06dcf806763188de7aa6e68381e125a08063377","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.6.0.tgz","fileCount":161,"integrity":"sha512-VfbItW4EmywjctdXW8Pan/+5OpPy5d+G/HPwHVkwjA+1N91ZdpswdX8IHSqqWiDMLUZQG2ugfX9Xs9zBFMcn4w==","signatures":[{"sig":"MEQCICcMjzhXyo6olHBosLVFhtvTrm4XJAvsIIxP3Kd0PK3yAiBxn4yjdcfhX8AQ3aVRivVtJq3DY076apwW9Ivdp1uZFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16865428},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7ef3c35403af77c14b97bf872d5c53e075853f7f","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.6.0_1780338499709_0.5862938405309654","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"testpilot-dotnet","version":"0.6.1","_id":"testpilot-dotnet@0.6.1","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"665a7272a085f41fc4c5c79b6a023f8a71c4010f","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.6.1.tgz","fileCount":161,"integrity":"sha512-4DQcWq8EACV8NaFmA5WGu7QDRgzPa9DjLeo0Y5QrUwawjZsfybpKIyRReZwRgfDy7D59p2/0vwiORv78Gg8MpQ==","signatures":[{"sig":"MEUCICUNM03WIJiRCNJFtFruZwf8cgkoWDz0y4FywllMc2i7AiEAiiNSXgvQrh5CdmG3UI097pgOKbNLxyD/pTY/Qio5I7c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16866333},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9876d05ef8b8ee425542707834e2623634944496","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.6.1_1780434715853_0.25833158788282495","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"testpilot-dotnet","version":"0.6.2","_id":"testpilot-dotnet@0.6.2","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"b92574b0ef6cf09e7dbfda025c85b57b58cd8224","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.6.2.tgz","fileCount":161,"integrity":"sha512-t3Vb94HJMMnrQ5AFbrncKmYCqvsZeOZ/b3/03qy3V3GG9d9BML5ftxq0jYlD9/USjv4BZRcKZYnUISxa/B7txA==","signatures":[{"sig":"MEYCIQCJHWdB8WjF1Uxyk43CmVGxuGYVvCLLqIvDGWkx1smwjQIhAMx5LAYQivxHY/8QsTcKBq1zFEZ9ZcGPpsTYdJDYTPhZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16869859},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"0a2e475ba517754d633f03fe9d28149c0b561005","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.6.2_1780442983883_0.1457228384723448","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"testpilot-dotnet","version":"0.7.0","_id":"testpilot-dotnet@0.7.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"0baca58bc48a00e6a73d8d4a1698bd7b862294ec","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.7.0.tgz","fileCount":161,"integrity":"sha512-GSdOBbXh3H2TQFS6er/lGw6wEMAqNfOkYuj9X1YyO/O8LdeyyOq1M1DPoEs69JF7+aY+tamdDy7kzjFB6Z4+mw==","signatures":[{"sig":"MEYCIQCfgmy501kgl/Ul4N3NTFhIDRX2/TSCRVJzajrFJQEGSwIhAMZVNLOKxhrN9W9U2odS9CDO1p66KOsC7d3LI1KLWYt/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16902435},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"17821ff1491cedc6fb8dbebdba67a692d4835526","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.7.0_1780471048600_0.5235036395686414","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"testpilot-dotnet","version":"0.8.0","_id":"testpilot-dotnet@0.8.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"a42fe9bdaa8090c5964c1dec434c71510c141a81","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.8.0.tgz","fileCount":177,"integrity":"sha512-Ulb7XCcb0iTekm4Yjdircaq+5GpZn53Zpe7GrLbOGt+z9NCbn9roWyQY8MvWUXMq2AWaFMHCd48lo6ljOBCKmg==","signatures":[{"sig":"MEYCIQDhNYmOJ1h1AMMZTn0vILeEi3aq2E4rpLgdnHYn0ATwGAIhAMGWSln+k5NtJIf9djFn+BnoL9snS+lmHYFq/sGXh1kf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16949073},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"99940777dbc553748373d72d22296a6bc9ee5aee","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.8.0_1780921932167_0.8437277098740765","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"testpilot-dotnet","version":"0.8.1","_id":"testpilot-dotnet@0.8.1","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"36b62d422a653df0cd33432daaa9ca0a9a6ff7ef","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.8.1.tgz","fileCount":177,"integrity":"sha512-ra6vNZHTxH1fX/uW5kyafpC4POgXaaGO5Ph6ygrnF+sXZ2L6nk7ZbtPe8tCMHxWO2zkXcM7kECgzBJH2Fyoiog==","signatures":[{"sig":"MEYCIQDlAvaJssL00ZVk/hm5C9HOMxORoQSwRpFF5sc8hQYmhwIhAN3Jv9kKHYmWvKfQWVoE0eSFFrwc9Z47D11kk2lO5wfp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16950605},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"66f257f7190aadd2d0d1e0de86a219fe9f7c4c60","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.8.1_1781090637164_0.3057132713287438","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"testpilot-dotnet","version":"0.8.2","_id":"testpilot-dotnet@0.8.2","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"7d848f95bece183fcf74d08cf068ba02d641669f","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.8.2.tgz","fileCount":177,"integrity":"sha512-Pd3yrFYUr395Zk+jX/5KsIXSuBL80yt9WsNqPDqIl4DCR5YhJZthuTK3DDflNQ0ezDqzFr8n8mnmb22cVWLSOQ==","signatures":[{"sig":"MEYCIQCmJoYJGsTP4L7tBTJW+QEDwd/+MRcSN6yqAnlP3gD4ygIhAN4QOAVupiHCuPSk+ixRVqyRGlfUehjPXZBAGRM9nW0z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16955793},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"53e847554d2a2f31738de0f693a452590413370f","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.8.2_1781094388429_0.9483916607342311","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"testpilot-dotnet","version":"0.8.3","_id":"testpilot-dotnet@0.8.3","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"1461d6aa6969bc698400dc0b2bf7c35fe0d9be7c","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.8.3.tgz","fileCount":177,"integrity":"sha512-boGf1389lDRQSxuvYpb5wZaum/Pd1EQeb4K9QqHp5AjbeOSzNwOHKBgHdhjuGTSlrVxLnesWbzrygndQS1oBqA==","signatures":[{"sig":"MEUCIE189AKGsH/U1qscgfZEguUaJhTVBtfvCHJ4p6ngaf67AiEAhG/OnH9+sxZi05WMqg/3JmHQxYbDdKrUOpCO63XK8tU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16957935},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"50140a880d4e3b55320d4f3e6091ce43a2a23124","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.8.3_1781109944359_0.053336288120292785","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"testpilot-dotnet","version":"0.8.4","_id":"testpilot-dotnet@0.8.4","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"64323a4e3f7598f30c31bdcc0aed46f1ae8e2127","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.8.4.tgz","fileCount":177,"integrity":"sha512-SBP75foYWljjkql6xAleP8d8rTjvkY6WyF0p8NYrxJR6QyUHWXA+oRluw4QCvEYCvBp2FcI9EdKIntJxmsrxKA==","signatures":[{"sig":"MEUCIQDOdN7TiUl1rJg4MRLFnhOL/50YIY3Y6jvvArVh17zkvAIgMLgT7OH9/0UcQ+jJxXDe9V7Ulwu4dqfN54J+WbWSLck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16959520},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"c2c12991203197e13ee96065ee4f9c714b18903b","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.8.4_1781116499992_0.14079146455618874","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"testpilot-dotnet","version":"0.9.0","_id":"testpilot-dotnet@0.9.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@zero1.team"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"ed2c95ba4eaf7b41124bca59e5c3529e8c06d982","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-0.9.0.tgz","fileCount":177,"integrity":"sha512-rp9GLKa24AhXINybWTdK6ncIs0NI0C4gbI4lEFjZjj6L/1ubp8mHVgScQqz+MGBJ2Vg/mStgt9dKo3Y4lrRd8Q==","signatures":[{"sig":"MEQCIE8KE60F2XSLcyK3xSW/edseaRF2i4eWFUyMGSxPNW7uAiBO9H2oaDDDqvbtOm//0MTC4NC38k7oK4iPKqZqqmT9nQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16966020},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"4c218f11c7a40495c33c4a71025979d6e4b96c54","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@zero1.team"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_0.9.0_1781535922199_0.16985018181622635","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"testpilot-dotnet","version":"1.0.0","_id":"testpilot-dotnet@1.0.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"324bce80d21e06a9a88c7c37d6894b2c972c31f5","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.0.0.tgz","fileCount":197,"integrity":"sha512-s5+vIKQMDcfXP1LmJIrjzYwN0IMx4266K0oO6VLv+O5f64L8nrlkivbSElNoHVZEv3ADThrcUddSiegx+MVj7g==","signatures":[{"sig":"MEQCIDEEbnKz9KInT30MTOqYiHNANrtOD5I9+03LtwoNHiFLAiAjwmdBhMstTPTka700a2SLxZGuvOKmmfFa0ehIG4nkpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17051287},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"105488a20691662560b7be6831d075fa9429a200","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.0.0_1781628693783_0.8654457741889074","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"testpilot-dotnet","version":"1.1.0","_id":"testpilot-dotnet@1.1.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"54cdae0580baa9407533b5f1bc1f2ac2d0f54dec","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.1.0.tgz","fileCount":201,"integrity":"sha512-l62/vrF0W5nH/alJVSC4rghuUw5QjiHVr2vHOCAyaRHv2N2gMBi3nf8UsDIn8tjWTuQ+JXP7WqtGOBN/pVBzow==","signatures":[{"sig":"MEYCIQC5FLvZS9HGVSP51hjbErL61iD3kD/DziDUz1U9dT72fgIhANgcSn7U/zN208KaRkn9fvTsndKbKCEUzSQ6xG3cyiNd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17150602},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"2377b6ac4d13ae9c838bb48122fc15723040b68d","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.1.0_1782107179914_0.06240676293174574","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"testpilot-dotnet","version":"1.1.1","_id":"testpilot-dotnet@1.1.1","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"05e880de6f243fc3f4023fda6fc37f89ca73bda9","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.1.1.tgz","fileCount":201,"integrity":"sha512-stY4uEroafT/aqaxwW6BbJQCt1tA/8XC7MFtvQZp6rRHFhM0NTazv0nkm6mPhKMI5b2Dcd6KClQeXQunobPJ/Q==","signatures":[{"sig":"MEUCIB7UpcPtGayNVktR7WieskM5zXHlH9hrMo6BvH9gq7/TAiEAvLY1mdpD4M80rhGibvy6AIVMZbYR+Hpcx7m6lnmHLRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17152808},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9b943ae706934593ebc3b88494a5134a106d58f2","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.1.1_1782283573889_0.02618698887312232","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"testpilot-dotnet","version":"1.1.2","_id":"testpilot-dotnet@1.1.2","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"042506a14f3d6d23d29473a2feb7e64f2d212236","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.1.2.tgz","fileCount":201,"integrity":"sha512-4ZqEs1QagvLn8YZse+KrMgzY/YKfykxwJXaHfUIGk7ghxGq5nfQL/bgq2BHsOqrY1tIxfwD6ZnrX9SCMa8JUBA==","signatures":[{"sig":"MEQCIHv2ryy8qCbFVLti6f55vaymQkzAeiMawX9Yxv7r1unDAiAPQtTZlW6uJ6EnTcdM5hBo7sUpCDi9Pt4u77dzBg9Bcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17155851},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"93983854e6381d8a948e31208fa380c7faec992d","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.1.2_1782681813927_0.13709545063283413","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"testpilot-dotnet","version":"1.1.3","_id":"testpilot-dotnet@1.1.3","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"d9c7716ea2bc85255556a75fbeb97f496e73c3c4","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.1.3.tgz","fileCount":201,"integrity":"sha512-ybvsI6zlVCrNUC9ZooU8676ujARLmDMxgHP0y+lVxgl1/MqTyR+A+Exirmyg0EkJMFucUiHgcedm7Pdn/A8dHQ==","signatures":[{"sig":"MEUCIBuV/59jX1V+mAFBDhrPGp80oQxiie2dO4RFISqmm7nrAiEA+X7vaHC8rDR+zXeruA43Kdgc38xjW8Q7428L9/rIA7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17156337},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"14cceeb8c869d8a8ee6c83274290e0b863329caa","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.1.3_1782850854381_0.35584314583569365","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"testpilot-dotnet","version":"1.1.4","_id":"testpilot-dotnet@1.1.4","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"eda75d7fe213e7b7048dc482034cd74c55b51847","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.1.4.tgz","fileCount":201,"integrity":"sha512-oGduOziiaVKAGy7shhnaH//A+Syj7T2bM3VjoZgEuEspBII8R5vDTAyn6g8E1TWhP4jEscimOwI8ZJNalGko/g==","signatures":[{"sig":"MEUCIFls+xUJ8UaT/IPpMXDcEBPZa0SBQKItpNTKvYvRi86BAiEAiEPfewUNMUDJVsbOFMyOCNoPD3bn1kA+FUUHCVgG+zw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17157068},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"f3073ae1ff570a102b0acf3f4ec00fe56f639aad","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.1.4_1782940308654_0.2601875091556989","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"testpilot-dotnet","version":"1.1.5","_id":"testpilot-dotnet@1.1.5","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"106efae480f9bbd449b20bcfa4f14fc653415f55","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.1.5.tgz","fileCount":201,"integrity":"sha512-U6tqJm+9fFjK5tvCz4GqUf4bMnWFY2KJz7I5SRoi5qW0gcECo/Zp5yttt58Yu0P3DfEW6AcohASUOzKzHbuUWg==","signatures":[{"sig":"MEYCIQCY+pFr1aeIVtRbCUql7bdVjKvLqz+JGvw2+arTPOZBNgIhANXPbwL7P7PQRGnwM6Jp8bF+mYmVqayIBsaipnC3t5Ds","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17157095},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"9e1838431f2e0d1b276a7750655cc9723bec744a","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.1.5_1783020361935_0.22077277609033974","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"testpilot-dotnet","version":"1.1.6","_id":"testpilot-dotnet@1.1.6","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"9ab0cb2f7273d69a8439037ff42c48f52fe130ef","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.1.6.tgz","fileCount":201,"integrity":"sha512-/Jyn6sDEuHUPvDkMSlIcJwF6eyBD/J5+AOB5EXh1QLcj3ZCiKs4muuBpr4XmWVg7GAzRsy+4lhz8MyyhEn8+Kg==","signatures":[{"sig":"MEYCIQDKfYTL2xgR2M4LgTE9s9vQR0IzgtxOTzpiPepvvv3KHQIhAKw96UkytnH2gU3RylL5FJoPVaXh5dNIqbrpezAIIIz6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17174971},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"1259c69489c96e8849d3d126add52383348fe01f","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.1.6_1783030608647_0.5164071045765868","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"testpilot-dotnet","version":"1.2.0","_id":"testpilot-dotnet@1.2.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"e81d2c63a0a202d839a128f06b9d1a4f372428c3","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.2.0.tgz","fileCount":201,"integrity":"sha512-GDaf+tWE6pLYXn80vhvqxaEKn0ph7e4mhP9VIUjEWKafYXIcV7FassRiZrWsgh1X4viD5oegBnTFpLxbZXXGhw==","signatures":[{"sig":"MEUCIQCJtcYOmbBu4K46436pxGSxsc2aEm+7NMsVSNp7HQGEDQIgL+1Bk/Ns+XPoCta++iiVYvvcQxBOn6ndBcdywst7Oa4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17234411},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"8653e7cb16c931c043daeb9fb185c39212dea8f0","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.2.0_1784495187646_0.3898637037350057","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"testpilot-dotnet","version":"1.2.1","_id":"testpilot-dotnet@1.2.1","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"3c0e44c6547cfd8cf74bdf7f9e39fe48c296bd37","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.2.1.tgz","fileCount":201,"integrity":"sha512-pHL+8Msly8Yd9e0/CfawCFmnYwyzFwoXqpE1b7oSq7kF1UH4QALYM+sveCnmR/3yHYL7BQ7nMYOHHEbW9YXsng==","signatures":[{"sig":"MEUCIEOd5AP7F8dfGg++9ocmvqtT2wGIKjLPMAUY/OaeXlbZAiEA3u7MnscoiF9JkR1RIhL81kvVT3J83eMOmcOubXCrc/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17239595},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"a71aea752d96d6e9195544784014c7ab0864b4cb","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.2.1_1784501163172_0.7210104422251034","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"testpilot-dotnet","version":"1.2.2","_id":"testpilot-dotnet@1.2.2","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"022ee3a2a5b91e9d3742096491fbf83fdb6e723a","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.2.2.tgz","fileCount":201,"integrity":"sha512-yGwfKCuuB7uMgPYnsjumA8Eg5atB0dVUOepcRXsyifj5ysF6Lzj7Tun4oY4YwbOF+9Pk8L33J1CIIBBvwuMbbQ==","signatures":[{"sig":"MEUCIDGYI6Es4eIwWi4AbPyB35A5cxD640DmmFPrJnLUPqFVAiEAqEB3vTudaGOTsOddrb1UOXFzKv1vJkZDxtWsRRC0k48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17246901},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"fc958172b106d4bfda4387ebee0565236ec56f86","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.2.2_1784615125977_0.7081208253251716","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"testpilot-dotnet","version":"1.2.3","_id":"testpilot-dotnet@1.2.3","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"85b89279b0c54bb6b6b90148a21b27d212351378","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.2.3.tgz","fileCount":201,"integrity":"sha512-UcuZ9TdXUqZejHASa9jOh/EW/fNCpAyo6P1XOqisEND26Mugwpt4EqoxcPKvVh5Y3NMlpBBxJsedrUdAid8E4w==","signatures":[{"sig":"MEYCIQC0zqDQX49FU3sZQADSCTWaRlj1HyI40Oijnr3XwaqENgIhANh0EF4y3UYcczOPMcyL8jUG19U1R5aqMQB9T0m553sn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17250912},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7e99daaafdbc1fe081dc2741274af7b054fb47eb","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.2.3_1784618801344_0.4807441161258035","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"testpilot-dotnet","version":"1.2.4","_id":"testpilot-dotnet@1.2.4","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"66efa48ad7cf3a134da508e0859303085a154a23","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.2.4.tgz","fileCount":201,"integrity":"sha512-snx2/CTAcxsMclX+DsiGG5kq405AkJfc8kNFh5wNGwCXLT01Td261HZRAIGlaGCzQa+QBwl1UOG6Ydf92wIhfg==","signatures":[{"sig":"MEUCIQCNRIEpljb6R4WFldTYHeXlZDeIHPMqos8RKN1QpTcWmQIgTj5JoBtctZc8/HPoGpS7i2u+Zq9mg75M/5kYjHHj8VM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17257245},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"7cf74c39f713ea4bf2eb0664229d36b07d1ba772","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.2.4_1785184523197_0.8197284192538465","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"testpilot-dotnet","version":"1.3.0","_id":"testpilot-dotnet@1.3.0","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"62065d8e6a17f52b779de08698059e80b5b19665","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.3.0.tgz","fileCount":201,"integrity":"sha512-PfJGF6gZ7n8eeS05Pxc1/JQyKIp7dzK5uHI8/ZBN2qLczJwwvsI7U1lGrVhcoRTvqW8d3zCUDmCOpm04v5zRHQ==","signatures":[{"sig":"MEUCIASUfD3McghE09hDkuEYpJ/lqjxPq3qr753FbbuQ8+RzAiEA20VZX5gibH/JRG4IWfGnNUz2DiIMH8R69f1QrOmgCjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17267646},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"1ca3e9767d8e47c800a4e5a7dfa4446bc1262e9c","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.3.0_1785189634398_0.7680391324205389","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"testpilot-dotnet","version":"1.3.1","_id":"testpilot-dotnet@1.3.1","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"73ce71f7d7d0a67d8af36adf64317b1fa59460d4","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.3.1.tgz","fileCount":201,"integrity":"sha512-9SKQngncMBYFCIsUONPWBHcgZb/wWS8cz25pZxhagsyGHQGd7El5gbQ0qAtTomvjisZ5i1lNsLMzw1z5Lpieqw==","signatures":[{"sig":"MEUCIQCw2sqYFiI9/xYLbA69kxLgJXenEkLxx2vxMrh+JembhwIgboJfH2irBbhDt8pXIAWiGo0vQ2yKNNPLMTFO2j2YIwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17276862},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"98e7840ede0b63e52c6ec73730ec88dd399bf3b6","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.3.1_1785195292447_0.5982169953003063","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"testpilot-dotnet","version":"1.3.2","_id":"testpilot-dotnet@1.3.2","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"dist":{"shasum":"5c6ac2554b92b120062d2bed18225c28bc4a3375","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.3.2.tgz","fileCount":201,"integrity":"sha512-ouAHy2ANZsVuh0EGTS34ludrU7tOAEmWYloymROXgskSB/+3A6yl3Zllz3rxgkXVz/3s/6dqze5YEnUxB5MgAQ==","signatures":[{"sig":"MEYCIQC63klid/J4oYCs+7Lrc402yfFJ+zuZaiV0k1u3lGJ7KwIhAOYUNaxpMQ9hVnx27IX8159UPUh3cPk4Tm4+s0aM2+II","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17276866},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"56ee9e6cb764926c614771271bd833924ab82a3a","scripts":{"dev":"tsx src/cli.ts","test":"vitest","build":"npm run build:roslyn && tsc","build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","prepublishOnly":"npm run build"},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"_npmVersion":"11.8.0","description":"AI-powered .NET unit test gap finder and generator","directories":{},"_nodeVersion":"24.13.1","dependencies":{"ora":"^8.0.0","chalk":"^5.3.0","fs-extra":"^11.2.0","commander":"^12.0.0","@anthropic-ai/claude-agent-sdk":"latest"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.4.0","typescript":"^5.4.0","@types/node":"^20.0.0","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/testpilot-dotnet_1.3.2_1785198667211_0.8486738998780168","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"testpilot-dotnet","version":"1.3.3","description":"AI-powered .NET unit test gap finder and generator","type":"module","engines":{"node":">=18.0.0"},"bin":{"testpilot":"dist/cli.js","testpilot-dotnet":"dist/cli.js"},"scripts":{"build:roslyn":"dotnet publish parser/TestPilot.Roslyn/TestPilot.Roslyn.csproj -c Release --no-self-contained -f net8.0 -o dist/roslyn-parser","build":"npm run build:roslyn && tsc","dev":"tsx src/cli.ts","test":"vitest","prepublishOnly":"npm run build"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"latest","chalk":"^5.3.0","commander":"^12.0.0","fs-extra":"^11.2.0","ora":"^8.0.0"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/node":"^20.0.0","tsx":"^4.7.0","typescript":"^5.4.0","vitest":"^1.4.0"},"gitHead":"70e578e4621b6e9b1fd0910b4252977a3b73c0e4","_id":"testpilot-dotnet@1.3.3","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-TBwd80uepqk0YnnMCpdQinkWlmPgAwgvzbobpTf3GkkV8oKObvyjKXGAUCL7DdtIuQ4eTNC0LNkToKRaHFZ6ww==","shasum":"616ca6975dd16e6476eb6d314d1762472175e1e9","tarball":"https://registry.npmjs.org/testpilot-dotnet/-/testpilot-dotnet-1.3.3.tgz","fileCount":201,"unpackedSize":17277863,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGTEHTL7PkPKZCdyemQ88KQprA/bnmLdEDJN4k/rcakUAiAcsv2kM7rtoqcCkObXdpk1SUczVpK6z80sMuRCMebmxg=="}]},"_npmUser":{"name":"zaid-ilyas","email":"zaid@0degrees.io"},"directories":{},"maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/testpilot-dotnet_1.3.3_1785201668656_0.30788147558680423"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-16T10:24:44.551Z","modified":"2026-07-28T01:21:09.167Z","0.1.0":"2026-04-16T10:24:44.782Z","0.1.1":"2026-04-16T10:41:04.718Z","0.1.2":"2026-04-17T04:03:27.595Z","0.1.3":"2026-04-17T07:56:56.757Z","0.1.4":"2026-04-20T07:22:38.540Z","0.2.0":"2026-05-08T07:23:52.826Z","0.2.1":"2026-05-11T06:50:07.391Z","0.2.2":"2026-05-12T00:11:59.823Z","0.2.3":"2026-05-12T00:16:30.514Z","0.3.0":"2026-05-13T22:44:47.130Z","0.4.0":"2026-05-18T06:55:58.749Z","0.5.0":"2026-05-20T14:28:48.410Z","0.6.0":"2026-06-01T18:28:20.030Z","0.6.1":"2026-06-02T21:11:56.084Z","0.6.2":"2026-06-02T23:29:44.151Z","0.7.0":"2026-06-03T07:17:28.879Z","0.8.0":"2026-06-08T12:32:12.444Z","0.8.1":"2026-06-10T11:23:57.464Z","0.8.2":"2026-06-10T12:26:28.665Z","0.8.3":"2026-06-10T16:45:44.683Z","0.8.4":"2026-06-10T18:35:00.265Z","0.9.0":"2026-06-15T15:05:22.468Z","1.0.0":"2026-06-16T16:51:34.105Z","1.1.0":"2026-06-22T05:46:20.181Z","1.1.1":"2026-06-24T06:46:14.199Z","1.1.2":"2026-06-28T21:23:34.202Z","1.1.3":"2026-06-30T20:20:54.735Z","1.1.4":"2026-07-01T21:11:48.963Z","1.1.5":"2026-07-02T19:26:02.263Z","1.1.6":"2026-07-02T22:16:48.958Z","1.2.0":"2026-07-19T21:06:27.909Z","1.2.1":"2026-07-19T22:46:03.413Z","1.2.2":"2026-07-21T06:25:26.311Z","1.2.3":"2026-07-21T07:26:41.630Z","1.2.4":"2026-07-27T20:35:23.491Z","1.3.0":"2026-07-27T22:00:34.643Z","1.3.1":"2026-07-27T23:34:52.689Z","1.3.2":"2026-07-28T00:31:07.490Z","1.3.3":"2026-07-28T01:21:09.012Z"},"description":"AI-powered .NET unit test gap finder and generator","maintainers":[{"name":"zaid-ilyas","email":"zaid@0degrees.io"}],"readme":"# testpilot-dotnet\r\n\r\nAI-powered unit test gap finder and writer for .NET projects.\r\n\r\nTestPilot scans your ASP.NET Core, Optimizely CMS, or Umbraco CMS project, finds classes with missing or incomplete tests, and writes production-ready unit tests using Claude AI — matching your team's existing style, frameworks, and naming conventions.\r\n\r\n## Installation\r\n\r\nNo installation needed — use `npx`:\r\n\r\n```bash\r\nnpx testpilot-dotnet <command>\r\n```\r\n\r\nOr install globally:\r\n\r\n```bash\r\nnpm install -g testpilot-dotnet\r\ntestpilot-dotnet <command>\r\n```\r\n\r\n## Requirements\r\n\r\n- Node.js 18+\r\n- .NET SDK or runtime 8.0+ (used by the bundled Roslyn parser; most .NET projects already meet this)\r\n- Anthropic API key set as an environment variable.\r\n\r\n**Windows (PowerShell):**\r\n\r\n```powershell\r\n# This session only\r\n$env:ANTHROPIC_API_KEY = \"sk-ant-...\"\r\n\r\n# Persist for future sessions (then open a new window)\r\nsetx ANTHROPIC_API_KEY \"sk-ant-...\"\r\n```\r\n\r\n**Windows (Command Prompt):**\r\n\r\n```bat\r\nset ANTHROPIC_API_KEY=sk-ant-...\r\n```\r\n\r\n**macOS / Linux:**\r\n\r\n```bash\r\n# This session only\r\nexport ANTHROPIC_API_KEY=sk-ant-...\r\n\r\n# Persist for future sessions\r\necho 'export ANTHROPIC_API_KEY=sk-ant-...' >> ~/.zshrc   # or ~/.bashrc\r\n```\r\n\r\nGet an API key at [console.anthropic.com](https://console.anthropic.com).\r\n\r\n> Running in CI? Don't set it in a shell — add `ANTHROPIC_API_KEY` as a secret\r\n> and expose it to the TestPilot step. See [CI Integration](#ci-integration-github-actions).\r\n\r\n## Quick Start\r\n\r\nRun these commands inside your .NET solution directory:\r\n\r\n```bash\r\nnpx testpilot-dotnet init        # Detect project configuration\r\nnpx testpilot-dotnet scan        # Find missing tests\r\nnpx testpilot-dotnet report      # View the gap report\r\nnpx testpilot-dotnet generate    # Write the missing tests\r\n```\r\n\r\n## CI Integration (GitHub Actions)\r\n\r\nTestPilot can run automatically on every pull request and commit generated tests back to your branch.\r\n\r\n**One-time setup — run this in your .NET project:**\r\n\r\n```bash\r\nnpx testpilot-dotnet ci-setup\r\n```\r\n\r\nThis creates `.github/workflows/testpilot.yml` in your repo. Then:\r\n\r\n1. Add your Anthropic API key as a GitHub secret:\r\n   - Repo → Settings → Secrets → Actions → New repository secret\r\n   - Name: `ANTHROPIC_API_KEY`\r\n2. Commit and push the workflow file\r\n\r\nFrom that point on, every pull request opened or updated against your configured branches (default `main` and `master`) will:\r\n- Detect which source files changed\r\n- Scan those files for missing tests\r\n- Generate and build-verify the tests\r\n- Commit the test files back to the same branch automatically\r\n\r\nTestPilot pushes using `GITHUB_TOKEN`, so the workflow's actor check (`github.actor != 'github-actions[bot]'`) prevents it from retriggering.\r\n\r\n## Commands\r\n\r\nAll commands accept an optional `[directory]` argument to specify the .NET project root (defaults to the current directory). Global options:\r\n\r\n| Option | Description |\r\n|---|---|\r\n| `-c, --config <path>` | Override config file path (default: `.testpilot.json`) |\r\n| `--model <name>` | Claude model for this run: `haiku`, `sonnet`, or `opus` (or a full `claude-*` id). See [Choosing a model](#choosing-a-model). |\r\n| `--verbose` | Detailed output |\r\n| `--json` | Output in JSON format |\r\n\r\n### `testpilot-dotnet init`\r\n\r\nScans your solution and creates a `.testpilot.json` config file. Reads all `.csproj` files to auto-detect your test framework, mocking library, and CMS version.\r\n\r\n| Option | Description |\r\n|---|---|\r\n| `-y, --yes` | Overwrite existing config without prompting |\r\n\r\n### `testpilot-dotnet scan`\r\n\r\nAnalyzes your source code and existing tests, then produces a gap report saved to `.testpilot.gap-report.json` (and `.testpilot.gap-report.md`).\r\n\r\n### `testpilot-dotnet generate`\r\n\r\nGenerates missing test files based on the gap report.\r\n\r\n| Option | Description |\r\n|---|---|\r\n| `--dry-run` | Preview what would be generated without writing files |\r\n| `--max-files <n>` | Limit number of test files to generate |\r\n| `--file <path>` | Generate tests for a specific source file only |\r\n| `--gap-type <type>` | Filter by gap type: `no-test-class`, `no-tests`, `missing-scenarios` |\r\n| `--min-priority <level>` | Minimum priority: `critical`, `high`, `medium`, `low` |\r\n\r\n### `testpilot-dotnet report`\r\n\r\nDisplays the gap report in the terminal.\r\n\r\n| Option | Description |\r\n|---|---|\r\n| `--output terminal` | Human-readable output (default) |\r\n| `--output json` | JSON format |\r\n| `--output markdown` | Markdown format |\r\n\r\n### `testpilot-dotnet ci-setup`\r\n\r\nGenerates a GitHub Actions workflow file that runs TestPilot on every pull request targeting your configured branches (default `main` and `master`).\r\n\r\n| Option | Description |\r\n|---|---|\r\n| `--platform <name>` | CI platform: `github` (default) |\r\n| `--dotnet-version <ver>` | .NET SDK version for the workflow (default: `8.x`) |\r\n| `--node-version <ver>` | Node.js version for the workflow (default: `20`) |\r\n| `--branches <list>` | Comma-separated PR base branches that trigger the workflow; globs allowed, e.g. `develop,release/**` (default: `main,master`) |\r\n\r\n### `testpilot-dotnet ci-run`\r\n\r\nRuns the full CI pipeline: detect changed files → scan → generate → optionally commit. Intended for use inside CI pipelines, not locally.\r\n\r\n| Option | Description |\r\n|---|---|\r\n| `--commit` | Commit and push generated test files back to the branch |\r\n| `--base <sha>` | Git SHA to diff against (defaults to `HEAD~1` or `TESTPILOT_BASE_SHA` env var) |\r\n\r\n## Supported Frameworks\r\n\r\n| Category | Supported |\r\n|---|---|\r\n| Test frameworks | xUnit, NUnit, MSTest |\r\n| Mocking | Moq, NSubstitute, FakeItEasy |\r\n| Test data | AutoFixture, Bogus |\r\n| CMS | Optimizely CMS 12+, Umbraco CMS 13+ / 17+ |\r\n| .NET versions | .NET 6, 8, 9, 10+ |\r\n\r\nAll frameworks are auto-detected from your `.csproj` PackageReference elements — no manual configuration needed.\r\n\r\n## Configuration\r\n\r\n`testpilot-dotnet init` creates a `.testpilot.json` file. All fields default to `\"auto\"`:\r\n\r\n```json\r\n{\r\n  \"solution\": \"./MySite.sln\",\r\n  \"sourceProjects\": [\"src/MySite.Web\"],\r\n  \"testProjects\": [\"tests/MySite.Web.Tests\"],\r\n  \"testFramework\": \"auto\",\r\n  \"mockingLibrary\": \"auto\",\r\n  \"testDataLibrary\": \"auto\",\r\n  \"cmsFramework\": \"auto\",\r\n  \"namingConvention\": \"MethodName_Scenario_ExpectedResult\",\r\n  \"model\": \"auto\",\r\n  \"patterns\": {\r\n    \"include\": [\"**/*.cs\"],\r\n    \"exclude\": [\"**/Migrations/**\", \"**/obj/**\", \"**/bin/**\", \"**/wwwroot/**\"]\r\n  }\r\n}\r\n```\r\n\r\n## Choosing a model\r\n\r\nYou decide which Claude model TestPilot uses, and you can switch per run — no config edit required. Pass a friendly alias or a full `claude-*` id:\r\n\r\n```bash\r\nnpx testpilot-dotnet scan --model sonnet\r\nnpx testpilot-dotnet generate --model opus\r\n```\r\n\r\n| Alias | Model | Relative cost | Good for |\r\n|---|---|---|---|\r\n| `haiku` | Claude Haiku 4.5 | $ (default) | Fast, cheapest — most scans and simple test generation |\r\n| `sonnet` | Claude Sonnet 5 | $$$ | Stronger generated tests on complex classes |\r\n| `sonnet-4.6` | Claude Sonnet 4.6 | $$$ | Previous-generation Sonnet, if you want to pin it |\r\n| `opus` | Claude Opus 4.8 | $$$$$ | Hardest classes where correctness matters most |\r\n\r\nAny full `claude-*` id also works (e.g. `--model claude-opus-4-6`) as an escape hatch for a model not in this list.\r\n\r\nPrecedence, highest first: the `--model` flag → the `TESTPILOT_MODEL` environment variable → the `\"model\"` field in `.testpilot.json` → the built-in default (`haiku`). Set `\"model\"` in your config for a persistent project default, or `TESTPILOT_MODEL` in CI. `TESTPILOT_FALLBACK_MODEL` overrides the model used if the primary is unavailable. TestPilot automatically uses adaptive thinking for the models that require it (Sonnet 5, Opus 4.8, Sonnet 4.6), so newer models work regardless of the bundled SDK version.\r\n\r\n## How It Works\r\n\r\n1. **Detect** — Reads `.csproj` files to identify frameworks, libraries, and CMS version\r\n2. **Scan** — Analyzes source classes to find testable methods and business logic\r\n3. **Match** — Compares source against existing tests to find gaps\r\n4. **Generate** — Uses Claude AI to write tests matching your team's style\r\n5. **Verify** — Runs `dotnet build` to ensure generated tests compile, auto-fixes up to 3 times\r\n\r\n## What TestPilot Will NOT Do\r\n\r\n- Modify your source code — it only writes inside test projects\r\n- Test auto-generated code (EF migrations, `.g.cs`, designer files)\r\n- Overwrite existing test methods — it appends only\r\n- Generate tests for thin CRUD-delegation classes with no real logic\r\n","readmeFilename":"README.md"}