{"_id":"@0xcraft/powershot","_rev":"13-d8b5a61c4e5f60f2e51b948a005976a6","name":"@0xcraft/powershot","dist-tags":{"latest":"1.3.3"},"versions":{"1.0.0":{"name":"@0xcraft/powershot","version":"1.0.0","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.0.0","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"95c1c145085202633bfe6ec045909e3239d3509e","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.0.0.tgz","fileCount":87,"integrity":"sha512-tb5jl6B1C12j7yi5zUztWQGwlIr5H/+JoIHOekYUzG+HOITo6rU/6uu8+7GNqCGeloNCu94mNktjvFXmrtb63Q==","signatures":[{"sig":"MEUCIQC7qlgjII57uIsBombGTY6uyeymf4KZr1eXelKidW3RcQIgWi2RiCSJCGyD6Zy9oEXMHxslPZNVESB3Ry7R34gwyWQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":906249},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.0.0.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.0.0.tgz","_integrity":"sha512-tb5jl6B1C12j7yi5zUztWQGwlIr5H/+JoIHOekYUzG+HOITo6rU/6uu8+7GNqCGeloNCu94mNktjvFXmrtb63Q==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.0.0_1787516124370_0.6261609874164551","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@0xcraft/powershot","version":"1.0.1","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.0.1","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"9c08837db704dd821691465ecb97d7bf7622ff49","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.0.1.tgz","fileCount":87,"integrity":"sha512-F/xs1DRvxNkWrPXPxt6m9DlLEPCiEMGLFNbMHSpHqS0vBtY8EYH1PDmLXHoWaI1uGhwHgBwNE4RqxThmvaPuSA==","signatures":[{"sig":"MEUCICqbwm9EgpizN3zPGBVIKp/zSc1VpFjR83pM/21U9NlOAiEAyPcc/caQ7P97zWs3QA5zJx59qghF9UnrRParP90WaKo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":906863},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.0.1.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.0.1.tgz","_integrity":"sha512-F/xs1DRvxNkWrPXPxt6m9DlLEPCiEMGLFNbMHSpHqS0vBtY8EYH1PDmLXHoWaI1uGhwHgBwNE4RqxThmvaPuSA==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.0.1_1787576113819_0.5040448017895991","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@0xcraft/powershot","version":"1.1.0","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.1.0","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"ac14e4a8d8aeefa0297240cf948cd5f8d8881980","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.1.0.tgz","fileCount":88,"integrity":"sha512-W+zu7fmWEL5b6quys5spz3atSG08HqrFsS7rhepYHMD2EGVYwZBBk1CYmZXBxlq4as1BwLHfRRptmsOLs5ZxDA==","signatures":[{"sig":"MEYCIQD8/KtmldDm8Ma7uiV+ZbbLgnI2DN7+5FJvzBf+YFEytgIhAKq+4mT2Kxe66P2ZAa43waQ6S7qaMmljGQw18SW4SkEs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":936825},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.1.0.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.1.0.tgz","_integrity":"sha512-W+zu7fmWEL5b6quys5spz3atSG08HqrFsS7rhepYHMD2EGVYwZBBk1CYmZXBxlq4as1BwLHfRRptmsOLs5ZxDA==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.1.0_1787584147372_0.03307977555166697","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@0xcraft/powershot","version":"1.1.1","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.1.1","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"9c2386c2c4dbc96d204eabccfe9861e0ee67dc39","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.1.1.tgz","fileCount":88,"integrity":"sha512-yR2ztaAAm6Pp+Gpzl1DBpbGQ4s3goxfTz+6eH8mJ30pJ3A6qGDZiCTrsUkSN7v2nduPOJf6MTeY7QYkrus+4pA==","signatures":[{"sig":"MEUCIEEfTiCiLY5YzRIuZIeOjy0+jDpUrr7JAm6ykVbsekZYAiEA/go3TDvoBQlKbe6fr0oHRyJxNnIAQTsnTlMPOGdjIps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":953267},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.1.1.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.1.1.tgz","_integrity":"sha512-yR2ztaAAm6Pp+Gpzl1DBpbGQ4s3goxfTz+6eH8mJ30pJ3A6qGDZiCTrsUkSN7v2nduPOJf6MTeY7QYkrus+4pA==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.1.1_1787588184299_0.7276736877750454","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@0xcraft/powershot","version":"1.1.2","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.1.2","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"7f4dce7e44982cccdc2f3478ba40fc94fec36bb9","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.1.2.tgz","fileCount":89,"integrity":"sha512-igi8dqHZlRj0FHuTljaPh/7BHKW85/0LA4GBvVtqot+IQG4RMvr6EI/TcXkqsuC5i6Y0aQ9aqeIuy5tt1tQgUQ==","signatures":[{"sig":"MEQCIDXjw+SJvDCil10I5WOz4PQVtWaSky9g9wy7wQXaIly7AiB5mtI10ohUYKK99Z6BRw7hZB9r3OdN1WCcqLPpzzIaRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":984429},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.1.2.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.1.2.tgz","_integrity":"sha512-igi8dqHZlRj0FHuTljaPh/7BHKW85/0LA4GBvVtqot+IQG4RMvr6EI/TcXkqsuC5i6Y0aQ9aqeIuy5tt1tQgUQ==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.1.2_1787592738955_0.39191051830087664","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@0xcraft/powershot","version":"1.1.3","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.1.3","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"3f897812d3c048f27a37c003b7bf7ca405645a7d","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.1.3.tgz","fileCount":92,"integrity":"sha512-YKLPkOenF9UbXGJPeanuzMRcI+wGevZ1T4EHevsoo1T7GLI9qSon+RltmYnFH6oewE4UgRGssygb7jG3xE/X3g==","signatures":[{"sig":"MEYCIQCeBKLiJYqGV+g0fMHj0DzXNIXmjedOClN2zZgSgbDn+AIhAJArolIdraMSfYp7bLtaXulAVx490Io/oop1QOgYlLQj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1023023},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.1.3.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.1.3.tgz","_integrity":"sha512-YKLPkOenF9UbXGJPeanuzMRcI+wGevZ1T4EHevsoo1T7GLI9qSon+RltmYnFH6oewE4UgRGssygb7jG3xE/X3g==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.1.3_1787601938544_0.08757843971195145","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@0xcraft/powershot","version":"1.1.4","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.1.4","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"b56452aeaf063a927519e5b4bf0f532f16deaab3","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.1.4.tgz","fileCount":93,"integrity":"sha512-+UEAaMqD1gxNt+G44gWs9M5MnylvFYsGu2jlDfppqOensTRPHguxPJF6A6vDCo7a+reX9sB7gGvTXaSSAcTktQ==","signatures":[{"sig":"MEUCIQCRFgUzv0MwGFmNCzpk8fxiM4Qqvo+9/gsijNYX1n8r7gIgNoROa9CQJ6FrWOfuDdUTdCOgv9BwMEBTrST3Bxn9s5M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1046594},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.1.4.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.1.4.tgz","_integrity":"sha512-+UEAaMqD1gxNt+G44gWs9M5MnylvFYsGu2jlDfppqOensTRPHguxPJF6A6vDCo7a+reX9sB7gGvTXaSSAcTktQ==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.1.4_1787606329023_0.3446188830889225","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@0xcraft/powershot","version":"1.1.5","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.1.5","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"2aba1d66663cca19b5f29d079d47939543f61af4","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.1.5.tgz","fileCount":94,"integrity":"sha512-CQocMzhSOW2LwZbuRpFBFFnjj42tfyub+Zib7nSC56RacgJ38dmXHyi5F7KpS9VIInEHV1nQiQW3rJCaJnhXJQ==","signatures":[{"sig":"MEQCIFxYCWoobzD5krGUh27DgQUwafbsmSYMQguWqoEQHpfOAiAFQY+G42iVx4oQcko8QtiEd0O0AlidzAzx0AQJZQZyLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1159265},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.1.5.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.1.5.tgz","_integrity":"sha512-CQocMzhSOW2LwZbuRpFBFFnjj42tfyub+Zib7nSC56RacgJ38dmXHyi5F7KpS9VIInEHV1nQiQW3rJCaJnhXJQ==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.1.5_1787669332043_0.7919272498387973","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@0xcraft/powershot","version":"1.2.0","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.2.0","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"b8d01e0f024424e5fddf44dc9c22d679ad263061","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.2.0.tgz","fileCount":94,"integrity":"sha512-lu6kwuQ4xNNAl3UKZkT6g7N4l2LebR14F3YqJczVj7vZkTPp7MPwXyVv8wH/45kEAJfEcfHjguCj2F6UWwV73Q==","signatures":[{"sig":"MEQCICS/KNiW5rsXMHTtzO8fIh5biQoQihNvy+EaqooubvdjAiBeMuCgZP7m8OuNMfTnvmJPPew24M6zuVNE9Mv+51sVig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1170324},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.2.0.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.2.0.tgz","_integrity":"sha512-lu6kwuQ4xNNAl3UKZkT6g7N4l2LebR14F3YqJczVj7vZkTPp7MPwXyVv8wH/45kEAJfEcfHjguCj2F6UWwV73Q==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.2.0_1788088560048_0.4985721482330958","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@0xcraft/powershot","version":"1.3.0","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.3.0","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"137b37b21001616d6e9c4e683d92972e44313fc3","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.3.0.tgz","fileCount":94,"integrity":"sha512-Ca0fFALzGRqWDGdfo/IjUIgVnTi9y8Or+mlUdme4Fueq/aStP5qpIdLp38dam6u3D+P/p+vn3Q03CsKKOepHAw==","signatures":[{"sig":"MEYCIQCecldkofzZBno/OCXKjwwzszDSToatV0PZ+Pxo+kKHDAIhAPtyTYN+xhJCkuz7/Ql4clyn4i4RBFfv1dWRlGfQ5GCS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1176654},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.3.0.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.3.0.tgz","_integrity":"sha512-Ca0fFALzGRqWDGdfo/IjUIgVnTi9y8Or+mlUdme4Fueq/aStP5qpIdLp38dam6u3D+P/p+vn3Q03CsKKOepHAw==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.3.0_1788090122035_0.8370106200933078","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@0xcraft/powershot","version":"1.3.1","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.3.1","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"c151e97a78659180e8bc794a01f0bcff2b124348","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.3.1.tgz","fileCount":94,"integrity":"sha512-wS9HEFACkFbbMi70dI6zwhivC3sJjvmEazfvXOu8d35ac8vP6PYrdHxsUw/XYTT2HB+aZoa9HXxxoT6Dz3WJ/Q==","signatures":[{"sig":"MEUCIDMsYHA36qvDgRkGYiCdThoUgbRxkVgykCIdQQIdbC3uAiEAkjowQzL1FmNoOXqrUIMv55Ky3aCdFP79u1CffAtNkIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1182811},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.3.1.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.3.1.tgz","_integrity":"sha512-wS9HEFACkFbbMi70dI6zwhivC3sJjvmEazfvXOu8d35ac8vP6PYrdHxsUw/XYTT2HB+aZoa9HXxxoT6Dz3WJ/Q==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.3.1_1788092842033_0.9965654711687473","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@0xcraft/powershot","version":"1.3.2","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","_id":"@0xcraft/powershot@1.3.2","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"bin":{"psh":"dist/cli.js","powershot":"dist/cli.js"},"dist":{"shasum":"69cf5d4346bff0bc83d800d4470d8508b3b85d98","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.3.2.tgz","fileCount":94,"integrity":"sha512-Z3LpkkASxk56HZebj8fLRVewn0j6B3cYq51mmy0cRi1AAxwj9YU0d11hN/VxYci7ELFLRcQUPGqfzQPvoLOR0w==","signatures":[{"sig":"MEYCIQCBWwyLsQOxbR/UNkwa9CW24kw9O2xS9pc3qTvLiyEuygIhANQlW3mbEp7W7r6DEU1Q1j+STOPGvm6GzR7SuqhYR5UG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1184168},"type":"module","_from":"file:dist-pack/0xcraft-powershot-1.3.2.tgz","engines":{"node":">=24"},"imports":{"#app/*.js":"./dist/*.js"},"scripts":{"dev":"tsc --watch","psh":"npm run build && node dist/cli.js","test":"npm run build && node dist/selftest.js && node dist/langtest.js","build":"tsc","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","smoke":"node dist/package-smoke.js","prepack":"npm run clean && npm run build && npm test"},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.3.2.tgz","_integrity":"sha512-Z3LpkkASxk56HZebj8fLRVewn0j6B3cYq51mmy0cRi1AAxwj9YU0d11hN/VxYci7ELFLRcQUPGqfzQPvoLOR0w==","repository":{"url":"git+https://github.com/xcrft/powershot.git","type":"git"},"_npmVersion":"11.17.0","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.14.0"},"_npmOperationalInternal":{"tmp":"tmp/powershot_1.3.2_1788094638028_0.7747806073553278","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@0xcraft/powershot","version":"1.3.3","description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","license":"Apache-2.0","author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"repository":{"type":"git","url":"git+https://github.com/xcrft/powershot.git"},"homepage":"https://github.com/xcrft/powershot#readme","bugs":{"url":"https://github.com/xcrft/powershot/issues"},"type":"module","imports":{"#app/*.js":"./dist/*.js"},"bin":{"powershot":"dist/cli.js","psh":"dist/cli.js"},"publishConfig":{"access":"public"},"engines":{"node":">=24"},"scripts":{"clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","build":"tsc","dev":"tsc --watch","test":"npm run build && node dist/selftest.js && node dist/langtest.js","psh":"npm run build && node dist/cli.js","prepack":"npm run clean && npm run build && npm test","smoke":"node dist/package-smoke.js"},"dependencies":{"ts-morph":"^23.0.0","web-tree-sitter":"0.22.6","tree-sitter-wasms":"0.1.13"},"devDependencies":{"@types/node":"^20.14.0","typescript":"^5.5.0"},"_id":"@0xcraft/powershot@1.3.3","_integrity":"sha512-tNsYQU9G71WgOqiv6BcrHXPdmTKjUDVUDOUvwABhCalKOIZVTvBGW3H2ptJ8jTdFbQAOSJUsDYplvHFuKocYPA==","_resolved":"/home/runner/work/powershot/powershot/dist-pack/0xcraft-powershot-1.3.3.tgz","_from":"file:dist-pack/0xcraft-powershot-1.3.3.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-tNsYQU9G71WgOqiv6BcrHXPdmTKjUDVUDOUvwABhCalKOIZVTvBGW3H2ptJ8jTdFbQAOSJUsDYplvHFuKocYPA==","shasum":"140427ee75c1ca37c1d3972b8817e95065f8d077","tarball":"https://registry.npmjs.org/@0xcraft/powershot/-/powershot-1.3.3.tgz","fileCount":95,"unpackedSize":1195616,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@0xcraft%2fpowershot@1.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDy5QiTT+GDUhDffQfbGZdR4fP7EGFTLKleh1TuAPpVsAIgApaxIUnSiqyjwREcQOGddydrsExzZCfafnzNHOlc4SA="}]},"_npmUser":{"name":"0xcraft","email":"alina.glumova@gmail.com"},"directories":{},"maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/powershot_1.3.3_1788111515002_0.11745121427184624"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T20:15:24.198Z","modified":"2026-08-30T17:38:35.526Z","1.0.0":"2026-08-23T20:15:24.572Z","1.0.1":"2026-08-24T12:55:14.001Z","1.1.0":"2026-08-24T15:09:07.548Z","1.1.1":"2026-08-24T16:16:24.449Z","1.1.2":"2026-08-24T17:32:19.115Z","1.1.3":"2026-08-24T20:05:38.823Z","1.1.4":"2026-08-24T21:18:49.232Z","1.1.5":"2026-08-25T14:48:52.190Z","1.2.0":"2026-08-30T11:16:00.207Z","1.3.0":"2026-08-30T11:42:02.229Z","1.3.1":"2026-08-30T12:27:22.184Z","1.3.2":"2026-08-30T12:57:18.245Z","1.3.3":"2026-08-30T17:38:35.210Z"},"bugs":{"url":"https://github.com/xcrft/powershot/issues"},"author":{"name":"aglumova","email":"alina.glumova@gmail.com"},"license":"Apache-2.0","homepage":"https://github.com/xcrft/powershot#readme","keywords":["ai","ci","cli","code-review","developer-tools","github-actions","static-analysis","typescript"],"repository":{"type":"git","url":"git+https://github.com/xcrft/powershot.git"},"description":"Oracle-first code review for machine-written code, with deterministic verification and CI-ready reports.","maintainers":[{"name":"0xcraft","email":"alina.glumova@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"docs/assets/powershot-logo.png\" width=\"156\" alt=\"PowerShot logo\">\n</p>\n\n<h1 align=\"center\">PowerShot</h1>\n\n<p align=\"center\">\n  <strong>Oracle-first code review for machine-written code.</strong><br>\n  Verify with code. Judge with the model.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/xcrft/powershot/actions/workflows/ci.yml\"><img alt=\"CI\" src=\"https://github.com/xcrft/powershot/actions/workflows/ci.yml/badge.svg\"></a>\n  <a href=\"https://www.npmjs.com/package/@0xcraft/powershot\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/@0xcraft/powershot.svg?logo=npm\"></a>\n  <img alt=\"Node.js 24 or newer\" src=\"https://img.shields.io/badge/Node.js-24%2B-5FA04E.svg\">\n  <a href=\"LICENSE\"><img alt=\"Apache-2.0 license\" src=\"https://img.shields.io/badge/license-Apache--2.0-3B82F6.svg\"></a>\n</p>\n\nPowerShot reviews the failure modes that plausible-looking generated code tends to\nhide: invented APIs, undeclared dependencies, dropped guards, swallowed errors,\ntests that prove nothing, bent expectations, stale callers, and duplicated helpers.\n\nIt asks self-contained parsers, manifests, and pre/post ASTs first, then uses compiler\ntypes and reference graphs when the environment can supply them. Optional model judges\nonly handle questions that still require judgement.\n\n<table>\n  <tr>\n    <td width=\"33%\"><strong>Deterministic first</strong><br>Local checks need no model, key, tokens, or network calls.</td>\n    <td width=\"33%\"><strong>Honest coverage</strong><br>Portable, full, partial, and failed runs stay distinguishable.</td>\n    <td width=\"33%\"><strong>CI-native output</strong><br>One run emits terminal, Markdown, JSON, SARIF, manifest, and Code Quality reports.</td>\n  </tr>\n</table>\n\n## See it in action\n\nThis is real output from a deterministic scan of an empty `catch` block:\n\n![PowerShot CLI reporting a proven swallowed error](docs/assets/cli-preview.svg)\n\n## Quick start\n\nPowerShot requires Node.js 24 or newer.\n\n```bash\nnpm install --global @0xcraft/powershot\npsh review --verify-only\n```\n\nThe package also installs the longer `powershot` command:\n\n```bash\npowershot scan src/ --verify-only\n```\n\n## How a review moves\n\n```mermaid\nflowchart LR\n    subgraph input[\"Change\"]\n      DIFF[\"Workspace · range · commit · scan\"]\n    end\n\n    subgraph engine[\"PowerShot engine\"]\n      SNAP[\"Target snapshot\"]\n      GROUND[\"Ground<br/>parsers · types · symbols\"]\n      PLAN[\"Plan<br/>file-level capabilities\"]\n      VERIFY[\"Verify<br/>deterministic oracles\"]\n      JUDGE[\"Judge<br/>optional model\"]\n      MANIFEST[\"Manifest<br/>authoritative state\"]\n    end\n\n    subgraph output[\"Reports\"]\n      HUMAN[\"Terminal · Markdown\"]\n      MACHINE[\"SARIF · JSON · Code Quality\"]\n    end\n\n    DIFF --> SNAP --> GROUND --> PLAN --> VERIFY --> MANIFEST\n    PLAN -. only when enabled .-> JUDGE --> MANIFEST\n    MANIFEST --> HUMAN\n    MANIFEST --> MACHINE\n\n    classDef change fill:#172033,stroke:#57a6ff,color:#f0f6fc,stroke-width:2px\n    classDef core fill:#251a20,stroke:#ff675c,color:#f0f6fc,stroke-width:2px\n    classDef report fill:#17251f,stroke:#4ac58b,color:#f0f6fc,stroke-width:2px\n    class DIFF change\n    class SNAP,GROUND,PLAN,VERIFY,JUDGE,MANIFEST core\n    class HUMAN,MACHINE report\n```\n\n1. **Snapshot** resolves the exact tree the review is about.\n2. **Ground** builds the available type, syntax, dependency, and reference oracles.\n3. **Plan** assigns baseline checks and enriched semantic capabilities to each file individually.\n4. **Verify** runs deterministic checks and records what actually executed.\n5. **Judge** optionally reviews bounded bundles of related files.\n6. **Manifest** decides whether the result is complete, partial, or failed.\n7. **Report** renders the same result for people and CI consumers.\n\nRead the full [architecture guide](docs/architecture.md) for module boundaries,\nruntime sequence, invariants, and extension paths.\n\n## Findings you can calibrate\n\nEvery finding says where it came from:\n\n| Class | Confidence | Meaning |\n|---|---|---|\n| `verified` | `proven` | An oracle answered the exact question |\n| `verified` | `firm` | A deterministic heuristic fired; inspect the evidence |\n| `judged` | `firm` or `tentative` | A model supplied the judgement and provenance |\n\nPublication formats make that calibration enforceable: Markdown, SARIF, and GitLab\nCode Quality include `firm` agent findings and withhold `tentative` suspicions.\nThe JSON report, terminal, viewer, session, and judge cache retain tentative output\nfor inspection without presenting it as an actionable review finding.\n\nPortable coverage is the default: self-contained oracles run without bootstrapping the\nreviewed repository, while unavailable compiler/reference depth stays visible in the\nmanifest and reports. Set `\"coverage\": \"strict\"`, or explicitly select a check with\n`--checks`, when a missing semantic oracle must make the run partial. An unavailable\noracle is never counted as a pass in either profile.\n\n## Deterministic checks\n\n| Check | Detects | Evidence |\n|---|---|---|\n| `phantom-api` | Missing members, invalid calls, incompatible APIs | Type checker |\n| `phantom-dep` | Imports absent from project manifests | Dependency manifests |\n| `phantom-config` | Configuration keys with no declared source | Repository config index |\n| `contract-drift` | Signature changes with callers left behind | Types and references |\n| `reinvented` | New cross-file declarations with a token-identical implementation, package, visibility, wrapper, and binding context | Base declaration + scoped token fingerprint |\n| `dropped-guard` | Early-exit guards deleted while every other token in the file and changed source set stays unchanged | Pre/post control-flow AST |\n| `swallowed-error` | Empty or ineffective error handling | AST shape |\n| `vacuous-test` | Tests that do not assert behavior | Test AST |\n| `assertion-drift` | Expectations changed under stable behavior | Pre/post test AST |\n| `copy-paste-drift` | Clones with an inconsistent rename | Token and AST comparison |\n| `dead-on-arrival` | Added code with no reachable reference | Reference graph |\n| `scope-creep` | Files touched without a program-level change | Token comparison |\n| `lying-comment` | Documentation contradicted by a signature | Signature and comment parser |\n\n## CLI\n\n```bash\n# Staged, unstaged, and untracked work\npsh review --verify-only\n\n# Branch range or single commit\npsh review --verify-only --from main --to HEAD\npsh review --verify-only --commit <sha>\n\n# Existing files without Git history\npsh scan src/\n\n# Select checks and severity\npsh review --verify-only --checks phantom-api,swallowed-error\npsh review --verify-only --min-severity high\n\n# Create several artifacts from one verdict\npsh review --verify-only \\\n  --report sarif=out/powershot.sarif \\\n  --report markdown=out/powershot.md \\\n  --report json=out/powershot.json\n```\n\nUseful options:\n\n| Option | Purpose |\n|---|---|\n| `--verify-only` | Run deterministic checks only |\n| `--checks a,b` | Run only named checks |\n| `--min-severity <level>` | Filter below `info`, `low`, `medium`, `high`, or `critical` |\n| `--format <format>` | Select the primary output format |\n| `--report <format>=<path>` | Add an output artifact; repeat as needed |\n| `--max-bundle <lines>` | Bound each optional judge unit |\n| `--budget k=v,...` | Bound requests, tokens, tools, elapsed time, or units |\n| `--resume <id>` | Continue a compatible saved session |\n| `--no-cache` | Ignore cached judge answers |\n\nRun `psh --help` for sessions, dismissals, delegation, agent setup, and benchmark\ncommands.\n\n## Completion is a contract\n\n```mermaid\nflowchart LR\n    START[\"Selected files and checks\"] --> ACCOUNT{\"Required work accounted for?\"}\n    ACCOUNT -- \"yes\" --> DEPTH{\"Enriched semantic depth available?\"}\n    DEPTH -- \"yes\" --> FULL[\"full applicable-oracle coverage\"]\n    DEPTH -- \"no · portable policy\" --> PORTABLE[\"portable oracle coverage · gaps named\"]\n    FULL --> FINDINGS{\"Findings?\"}\n    PORTABLE --> FINDINGS\n    FINDINGS -- \"no\" --> CLEAN[\"exit 0 · complete and clean\"]\n    FINDINGS -- \"yes\" --> FOUND[\"exit 1 · complete with findings\"]\n    ACCOUNT -- \"required oracle or budget gap\" --> PARTIAL[\"exit 3 · partial\"]\n    ACCOUNT -- \"required stage failed\" --> FAILED[\"exit 3 · failed\"]\n\n    classDef neutral fill:#172033,stroke:#57a6ff,color:#f0f6fc,stroke-width:2px\n    classDef good fill:#17251f,stroke:#4ac58b,color:#f0f6fc,stroke-width:2px\n    classDef warn fill:#2a2117,stroke:#f2b84b,color:#f0f6fc,stroke-width:2px\n    classDef bad fill:#2a191b,stroke:#ff675c,color:#f0f6fc,stroke-width:2px\n    class START,ACCOUNT,DEPTH,FINDINGS neutral\n    class CLEAN good\n    class FULL,PORTABLE,FOUND,PARTIAL warn\n    class FAILED bad\n```\n\n| Exit | Contract |\n|---:|---|\n| `0` | Review completed in full or portable coverage and found nothing at the selected severity |\n| `1` | Review completed in full or portable coverage and reported findings |\n| `2` | Command or Git input was invalid |\n| `3` | Review is incomplete; findings may be missing |\n\nA clean report names its effective severity threshold, deterministic/model mode,\nreviewed/changed file ratio, check count, and oracle coverage level. A partial or\nfailed review instead says it is not a verdict and keeps the missing work visible. Use\n`--format manifest` to inspect file dispositions, executed and unavailable checks,\nfailures, judge units, and `notLookedAt`.\n\n## CI integration\n\nThe composite action is the shortest setup for GitHub:\n\n```yaml\n- uses: actions/checkout@v7\n  with:\n    fetch-depth: 0\n\n- uses: xcrft/powershot@v1\n  with:\n    verify-only: 'true'\n    upload-sarif: 'true'\n    comment: 'true'\n    inline-comments: 'true'\n    fail-on-findings: 'true'\n```\n\nThe default portable profile needs no install from the checked-out repository. That is\nthe safe default for private monorepos and fork pull requests: do not expose a package\nregistry credential merely to enrich a review of untrusted code. If a trusted job\nalready has dependencies, PowerShot uses their TypeScript declarations automatically.\nSet `\"coverage\": \"strict\"` when missing compiler/reference oracles must block instead.\n\nPowerShot discovers `tsconfig.json` and `tsconfig.*.json` along the ancestor chain of\neach changed file. One review can use several independent package projects, skip\nempty solution configs in favour of their leaf configs, and type-check test files\nthat a production config excludes. Discovery is change-scoped: unrelated packages\nand configless source trees are not crawled just to build the TypeScript ground.\n\n`@v1` follows compatible `1.x` releases. Pin the action to a full commit SHA in a\nprotected required workflow when immutable dependencies are required.\n\n`inline-comments` is opt-in. It posts at most ten `verified` + `proven` findings of\n`medium` severity or higher as one GitHub review, and only when GitHub confirms the\nfinding line was added by the pull request. Reruns keep matching bot comments and\nretire stale PowerShot copies that have no replies. Human comments and discussions\nare preserved. The JSON report retains every finding. The summary publishes\ndeterministic and `firm` agent findings and reports how many `tentative` agent\nsuspicions it withheld.\n\nThe [CI guide](docs/ci.md) covers exit handling, Git history, one-run/many-report\nartifacts, GitLab Code Quality, local parity, and recommended gate policies.\n\nCopy-paste examples:\n\n- [GitHub composite Action](examples/github-actions/action.yml)\n- [GitHub direct CLI workflow](examples/github-actions/cli.yml)\n- [GitLab Code Quality job](examples/gitlab/.gitlab-ci.yml)\n\n## Optional model judges\n\nJudges cover plausible logic, test adequacy, change intent, and repository conventions.\nAnthropic, OpenAI, Gemini, and GLM providers are supported.\n\n```json\n{\n  \"provider\": \"anthropic\",\n  \"model\": \"claude-sonnet-5\",\n  \"verifiers\": { \"enable\": [\"*\"] },\n  \"judges\": {\n    \"enable\": [\"plausible-logic\", \"test-adequacy\", \"intent\"]\n  },\n  \"coverage\": \"portable\",\n  \"minSeverity\": \"low\",\n  \"ignore\": [\"**/generated/**\"],\n  \"promptCache\": true\n}\n```\n\nSave this as `powershot.config.json`, set the provider key in the surrounding\nenvironment, and omit `--verify-only`:\n\n```bash\nexport ANTHROPIC_API_KEY=...\npsh review --from main --to HEAD\n```\n\nFor GLM, select the provider and model in `powershot.config.json`:\n\n```json\n{\n  \"provider\": \"glm\",\n  \"model\": \"glm-5.3-flash\"\n}\n```\n\nSet `GLM_API_KEY` in the surrounding environment. PowerShot uses the Z.AI general API\nby default; set inherited `AI_BASE_URL` only for another compatible regional endpoint\nor proxy. For the GLM 5.3 family, PowerShot uses the required thinking mode at low\neffort with an 8K output ceiling, which keeps a short review bounded while leaving\nroom for the final JSON answer.\nIn GitHub Actions, pass the same secret through `glm-api-key`:\n\n```yaml\n- uses: xcrft/powershot@v1\n  with:\n    verify-only: 'false'\n    glm-api-key: ${{ secrets.GLM_API_KEY }}\n```\n\nIf your coding agent already has a model, delegate the judgement instead of paying for\nanother call:\n\n```bash\npsh delegate > /tmp/powershot-brief.md\n# Follow the brief and write its JSON array to /tmp/powershot-findings.json\npsh review --verify-only --absorb /tmp/powershot-findings.json\n```\n\nDelegation uses the same `SelectionPlan` and target snapshot as a real review. The\nbrief names every changed file as selected, policy-waived, or failed, so unsupported\nor oversized files cannot disappear between task creation and absorption. For an\nagent that consumes structured input, request the versioned task directly:\n\n```bash\npsh delegate --format json > /tmp/powershot-task.json\n```\n\n`powershot.delegate/v1` contains the resolved file dispositions, applicable judges,\nbounded review units, changed-line excerpts, intent, and the exact output contract.\nCreating either form is LLM-free and does not create a session. Deterministic checks\nrun when the returned finding array is absorbed by `psh review --verify-only`.\n\n## Language coverage\n\n| Language | Available oracles |\n|---|---|\n| TypeScript, JavaScript | Compiler types, references, manifests, syntax, pre/post AST |\n| Python | Tree-sitter syntax and dependencies; optional `pyright` adds semantic checks |\n| Ruby | Tree-sitter syntax and dependency manifests |\n| Go, Java, C#, C++, PHP, Kotlin, Rust | Declared syntax-backed checks |\n| C | Syntax-backed checks that do not require exception semantics |\n| Solidity | Declared syntax-backed checks |\n\nEvery declared language is parsed in disposable, language-isolated workers. Sources\nare sent in bounded batches, so a mixed-language monorepo does not accumulate every\ncompiled WASM grammar in one process. If a declared parser cannot run, the review\nfails loudly; it is never silently waived. All eleven packs plus TypeScript and\nJavaScript are exercised together by the integration suite.\n\n## Project guide\n\n| Document | Use it for |\n|---|---|\n| [Architecture](docs/architecture.md) | Module boundaries, runtime sequence, invariants, extensions |\n| [CI integration](docs/ci.md) | Gate policy, GitHub, GitLab, artifacts, exit handling |\n| [Contributing](CONTRIBUTING.md) | Setup, change placement, verification, pull requests |\n| [Security policy](SECURITY.md) | Reporting a vulnerability |\n\n## Development\n\n```bash\nnpm ci\nnpm test\nnode dist/cli.js review --verify-only\n```\n\n`npm test` builds the project, runs the core self-check suite, and validates every\nenabled language pack. `npm run smoke` packs the project, installs the tarball into a\nclean repository, and exercises the public binary.\n\n## License\n\nPowerShot is available under the [Apache License 2.0](LICENSE).\n","readmeFilename":"README.md"}