{"_id":"pi-warden","_rev":"41-56051fd471f9470678ed54f8288dfd64","name":"pi-warden","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"pi-warden","version":"0.1.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.1.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"016e9e289d66cb81e14a1185f758a67d80af7d53","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.1.0.tgz","fileCount":14,"integrity":"sha512-fpigIgqvO4HxxKedUXvREvwvlNyHdMYdcaimzlxpH7Xag3Iw/tHT1uVVb2vd87fZ0eI4Xn82rk0OcXCYoBZ5Lg==","signatures":[{"sig":"MEYCIQDr98pgAa7HbwCtnhZWXA+QWM15YlBgLTVF6V7QNN9kgQIhANzI7TLPc9Wir7os9mdN4lm0sDigYj0wGK68F1Q/Dbpb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55649},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"ee1030434881f19fe8c973298d287ddc0b0d1c21","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Harness guardrails for Pi built on pi-typesafe: pattern checks plus Jev judgments flag irreversible or off-task bash, write, and edit calls before they run.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.1.0_1789531915880_0.4261434274295002","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"pi-warden","version":"0.1.1","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.1.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"d81ee97771d44d36a1d7f59d1237f42966faf7eb","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.1.1.tgz","fileCount":14,"integrity":"sha512-yiUSPH1ASNSoFkntEkQCFL88DfE6SC9nWGOjiseHI86e7Wq5tRJsRvJSrxXw7lOSN9G75QJ1FmhqLTMQ6cZzJw==","signatures":[{"sig":"MEQCIGmnBccVjjGTjSTHHbhBPMXuanDOjGYlmdMyZo2MMDgSAiAXwuyvq87Y3oWc+Mg/QmtYDJJ8pDB/k8OEi/O1wQeFdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCouY/srFKJ2KzjWVlMLFZlDzudtFctUpnA2oSKM+TiogIgcNEOmG4ixSnZwKgbWbW7r/knaZfwgaDamInaSSPpLm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56245},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"187f6613eb41e39a95fbbb23f05af0db367a75b0","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Harness guardrails for Pi built on pi-typesafe: pattern checks plus Jev judgments flag irreversible or off-task bash, write, and edit calls before they run.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.1.1_1789532761999_0.1081294667465853","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"pi-warden","version":"0.1.2","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.1.2","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"d792e752a8386047e9b6bdec4d267890cddf63da","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.1.2.tgz","fileCount":14,"integrity":"sha512-pmpyXg6NOGgwNHaHxls6Xc1WNSkxysVaglQIXyFGWhkAokF1i6CaNVbTtIR7zM9GLpDcMAM4amy6HShJy4kckA==","signatures":[{"sig":"MEQCIHFKjWsihQ3Bsjnv6g4kPxh6aEN7P0EaoPo3B09eKNefAiAd8dHHMQLUp0JDqDvfDJwVSOt54CONdNOEKIbF+neLzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDmPQgkQGaND5rmO0s1iJ2bQ1Mm/n9XEK0uZdK7gf06KgIgBledL/TecUvxeZjCmBhcXTgLZHYMOlgb5+BoV1oUTwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57920},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"84c3ef12eab6beb479a4a1d712a7250d18f060e6","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Harness guardrails for Pi built on pi-typesafe: pattern checks plus Jev judgments flag irreversible or off-task bash, write, and edit calls before they run.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.1.2_1789533038300_0.846821963030767","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"pi-warden","version":"0.2.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.2.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"e07723b6ffe2bff4313449d518e76ef9655b1e75","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.2.0.tgz","fileCount":18,"integrity":"sha512-HP2w3uGYEy3tp0Fq1cCrqU8sk8or+8rkaDzaKS5sh0ZBCeJkN9RaGkkrlRprx3ECmMcOD4G/i6SH0KJPhUOssA==","signatures":[{"sig":"MEUCIQDKkKJcdhz/ntCjTrTc7z6FtzP2vk6b4GEeFme77JUBuQIgN7oK02/xwqKeRG9wnnIZgxsuC+K4SF7z1nwkjUulKDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBC86cPXiEArgaHhmq7hfFYo+JgdwePussxITIRQeLrDAiEAx25MRnlDo845ApJicUAESCrhg4fqZ7Lc7BNsAAwvdGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105697},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"8db7705de751917830d7565c5333f4342bcb7413","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.2.0_1789534909632_0.016251461483685725","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"pi-warden","version":"0.2.1","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.2.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"b817e6b7585b53beb4a4759d704eb0677e3838a6","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.2.1.tgz","fileCount":18,"integrity":"sha512-dbaqtRTnbZWl61Y0UVa9+5R7ZF8V5yCKEjusc8HUbRNE6aYJHmKLwtxFVlA7X6G6so+tpBlPkzetANjjENVJGQ==","signatures":[{"sig":"MEUCIQDhMZwvfhdbnG7hZpMvFRpJju0iIGIg3DbgZHNnqMilaAIgXZqr/K1PBa0z8RRaPb9hpV4qughoQofO+8WZW3dprzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDsnrZUm2duMYoqnppg0fmCveR0DRHC4VDVWR/SRv6nGgIhAKD0WpC1vJrD8taMSWeYrp5IQkX1iyQuWdgsFhqSZ7hP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107510},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"8140ce5baf9cdde46769506dad5e844ee3ea73b8","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.2.1_1789535331606_0.008729321348363461","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"pi-warden","version":"0.3.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.3.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"bf8e7180f809d1aba5356abeec136765948f9e14","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.3.0.tgz","fileCount":26,"integrity":"sha512-4XXxcniDRTL75xwAuIilo3YFEmpysVxlo/AzhpdgbCI6qbJOrItpMd875GUQntXdRPA4ftFeRXxGHrFX/UlELg==","signatures":[{"sig":"MEYCIQDFBMX2/shPqcx6BsX3ZYfL6JlGKhbBHEarcuMjKVsG9AIhAL06Equ1XkLcXfAwfNsBwIeSmG85nPXzleyyK6mDs/2q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH1xd5UAd+Vkx8HxMGd/KeNZH7q876G6L5ZeJvdAyGfVAiAQRv1ERJA2Q1n3GlseQNYND0Id/3fqhD0u+9JmSJ1XOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140374},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"b99842f0d1ab942cc9ff392f56cced17a83452b8","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.3.0_1789536909829_0.6449449303406674","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"pi-warden","version":"0.4.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.4.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"a40e08e79332b37faf2204bf175ffd360d171baf","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.4.0.tgz","fileCount":28,"integrity":"sha512-7PI7VfIAV3VtFustBEBaahyNBrv5+ukQHqAcvgbmxXhb8CgjG5HDTEOBLjq9pd9HEE0Wi4eJYZNEDbIFpyHhDg==","signatures":[{"sig":"MEUCIAwylu+r/AXqbHqBUwn+8WpzELnYNHHjrwZXwLe0X+wQAiEAjX1HOn6TASqkHtg9A3WBg1Y+EUi+wZpGuY2OgmHF0D0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQChSQtC5iS2Cg4cQSuyGK42pEmyetv+a+Z1JQMpHPRSWQIgY65wSRGpUhfYwHC9nC9I6z+UTm9rBBq01XXCTDQVjSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159981},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"e892b7bc5bc58732c80598c833207f0084acb7db","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.4.0_1789537482374_0.4839431132704459","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"pi-warden","version":"0.5.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.5.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"1e1fa947728ddd08351b199b3f936d6e6ddbfdac","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.5.0.tgz","fileCount":30,"integrity":"sha512-NFCN9WooJOVIhKaXuxZOIWPpv8OT0+WT/Ge36tqIEVd6mu3o9JzRZqlfmyGzwwdrV1fBkoZ9TbSt2okWpdXJJA==","signatures":[{"sig":"MEUCIBHMT3JFyBXTEYPsgvFqbqIcbZvkgXs/6HcDz5ioCexpAiEA7nuJPArhkBwBAQu07iAuEPvAbUkcKiDOkT8yhQf4404=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFMC8H7qRmQbnzPGDF8XFdu5DCaxgMe8PiPPxCbDFnu/AiEAn24nbL8sfHPg0l3qm8NhY446RkRFtyBSK+LLWFqG4sY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186104},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"5401de983a0571ac00926d0cabbcbc2be775b378","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.5.0_1789541255887_0.9457521795452357","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"pi-warden","version":"0.5.1","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.5.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"ddae59773c9aab1b9b78c11de30c5f4f087195d2","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.5.1.tgz","fileCount":30,"integrity":"sha512-raK6UnVcKZXyt7N5UlB5Z1exbVZaYO8QT+ZfvOGezO8C8MM7RZzVxRvMURqTuDB4QNmQ2/UgQgOv4qaP1lrYwQ==","signatures":[{"sig":"MEUCIQDLl3aA32plZn+teRN5y9s5InjCV+KilGZ7SV55TPvf2QIgCeZOT5ct+4S2QKH4rhX9WDkSziQA5Gs1zdbd2G8vDHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEF2BrEkMh/Pb+yXv5ZYfxdvSTylX90vN/q7ssZxWf7NAiEAlcLzyYIQQCYphN4VCn5pcI5+yvMNEGA0NmGnUM/3kGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189807},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"d086de77e5206e929b89a56a463454a765519165","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.5.1_1789542474155_0.29904218178900854","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"pi-warden","version":"0.5.2","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.5.2","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"a4a17f69b69965d1af024e65ad77dd130da0291b","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.5.2.tgz","fileCount":32,"integrity":"sha512-JE5rm2D9OthH3bvn5CvwP381lvdFHYenOBmDpZBuBvx8vxUGQ61OIHL7PdFvDqKL5V8Wr4YEDH0ROpyUyVCVoA==","signatures":[{"sig":"MEUCIBhtvXHhspD439MDLleWkaRQTWboCUW9RFfAugNjOwzKAiEAnpOCKV7DP+1Sh4AzTnsjw5kV8NA2bjavcIFiIiY8dZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHcPP8GHCYW4kFbksjp9njA9aY1MkwYbplraT4dWuFnvAiEAxL4tdFljs8f8s/MshZMstRbqFaRR9voXovhZXBgw2Ls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197484},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"03d6f369f62867145e8dacbb5b72e1ef66cd8f92","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.5.2_1789544099353_0.06387780320563796","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"pi-warden","version":"0.5.3","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.5.3","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"2f1aff3aafd2e7f16ccee73fb727d559d88bd530","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.5.3.tgz","fileCount":34,"integrity":"sha512-VKC1VaMYGanMXJNi3Q21khLEfCbNWJ8zKTYWf/M5KBJrjyaItDArv5Tcisch3fBlEQ0/p5WSUJh65bAVRYoxCA==","signatures":[{"sig":"MEUCIQD2zNOPcd/3EV29MoskL9NtxTAZocnS9yyBlsCAqfK4zgIgfs4rCzazvTyXiecHJpOnXXT/vx6fwbi/6+7HZO4c18E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEwJX7naSyIzs0HC4HCu3TAoTqOF2rCXmxQhWz58RcivAiEAmmwi08zipi9g+uFuz41uHVEsdPtUPvFk+IquQ1uZib4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":203434},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"385a34c6bcfb80361d2326f1876724e7539ce8e9","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.5.3_1789544480454_0.20981626519475416","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"pi-warden","version":"0.5.4","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.5.4","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"555ce98696f848080f900a97c61eadc35a1b2d7e","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.5.4.tgz","fileCount":34,"integrity":"sha512-SQVH+YZsl+FtX2yP+RxMNyPSs+aF+yc/p3K1CLG2DBfdu3yyfzRl/QMu5Fi3aDz5mxClfiYOmCmfZLgRkvRnaQ==","signatures":[{"sig":"MEUCIQC4DJfutXX47m/1wS2vR8yh1K/B78liDrKsCc7tRVCbvAIgM+ZFVNOe/XQUWyJLDzzb0HagM60FpoXtlLqh+BS3tLQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDF8xEqR/WO+uZuoIsiJv6fnba1gS/kdcXNKXjfIiBEMAIgOgmJqXzB4V1LfqnpX1zTd9CIXDYj/PlfgBtXFEz6uJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206619},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"817f95d9d5a3564ee08a2a2e8a344a5a632efa9f","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.5.4_1789548284216_0.906507363413009","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"pi-warden","version":"0.5.5","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.5.5","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"a6806296ddc34d2d9768397be7482fe75402891f","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.5.5.tgz","fileCount":34,"integrity":"sha512-8zP0Pwk+fYTncCKJ98a2sVlr3Mb6hzar1xvaFKoeCCbwvquhAOacVTjWgUqFp0ts4/gFPmC+DqDB/sW/Og83BQ==","signatures":[{"sig":"MEUCICLlFmCbEVjeIVJB9w7rFOgwzu+y0OopwlyTRVETr3JXAiEAgiNHCr4iKfcTlrghVPmwZwT1AYY/yKwCNnZ0Nciz/QI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD00jGT7yD1bcNX43BsaQo0CabJEgR473DV9FfY600+UgIhAOlDLbVFty5lM+Yz0YMJuM4kOXnx+d2igXP0qx+evHaF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210110},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"65e69e5338c238b1d5ee1f198ff768d511a5772b","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.5.5_1789550747322_0.26590742626228026","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"pi-warden","version":"0.6.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.6.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"80813874fd1674642d3ca94f2d509f4872fd891e","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.6.0.tgz","fileCount":38,"integrity":"sha512-CeBrK3Wl5yKZj7rFVLnL5qd/DYmsttWCsS9gFwfWHFTZibF+1UQ7L6nv67Ci/YYBt8w8hrxZNJqyKlGUirlGAQ==","signatures":[{"sig":"MEUCIA4iSs4mZ51tdgQ8+o4Eb0W30UCxKhKrTxbja+DGrCnEAiEA2UAnjDx3UB41NorVpHTofLby6hga0hFqQtT1QWSjYXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF1YYo6Yl3X5qXV8RQrXJ67Xixk7wudSdCUeH9L2C4JDAiEAos7MWB3bfd7kJxBFiZAI7J3Xciacih/5sungulCu6Wc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215699},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"edb40f0b27950ec65b50626b833e4608e3809d6f","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.6.0_1789552776435_0.38529597599447674","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"pi-warden","version":"0.7.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.7.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"3eabef638ade34b315088e5703a3fbdf29e798f4","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.7.0.tgz","fileCount":42,"integrity":"sha512-wyy2SsG8MknqL9tRIGG/y/eAIPIZ3xfaafCPCWRIPMhhpZEPC698GmDI5h1ZOMXvOP7y8torTvaDuVZ+JeA6hQ==","signatures":[{"sig":"MEUCIQDXPR4AwVJy6pM5WaQvSw50zdC9+0lNADfO+Xc8r02pbAIgfu0q2onVj8ZP/hcssEs7BbSDw0KWhLJ4RWbxRWcMf+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD3+YW0mR2Sk0uQeV+gAowGLCEdFGGutfcLgh5iW0kUlgIhAJwQmz4E5ON7EVRzli+UKhIgknu2+ZYJtfqs4zLR8/PE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246013},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"84699535076fe9df3950179e244acac7dc06f52d","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.7.0_1789562561198_0.13872266376864273","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"pi-warden","version":"0.8.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.8.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"6587a5a4fef3511aaaac47269ad3f252e84eb5ef","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.8.0.tgz","fileCount":46,"integrity":"sha512-nzr4HO/X4mv1J5zAp1lE/5uei3ZSUPcm487lRe7jkeZ1fcdGaQ9lASI3pPYrA7xL08depwlVhlWG2zxpUrou5w==","signatures":[{"sig":"MEQCIHI5pEm1CewJpp6DqJEJA6ksPJs1i5nVs438qe9jqPxAAiAzYbDgDZaF2CoHVmm/8y5OMB8ba9GRjuBMw1JUy8a7MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCUntxhdC6fjM7nx/GGMgNyRWHPS3hrmI07jg0O8zyELgIgKakkUzIhRLEqHZLTlf967cST2ZBPXE6dmKpnShGf+T8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277760},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"4ebb42dd2ae71dc2084b1c4820569328a39b19b5","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, detects stuck loops, checks unverified done claims, and flags slop.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.8.0_1789569134935_0.21093969434701165","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"pi-warden","version":"0.9.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.9.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"f025bb6e78f3a5e23aead0aed7b5a6bad21625c7","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.9.0.tgz","fileCount":48,"integrity":"sha512-svXw69pF0u+XJas9TJl9gnQYYSzouUAVMc5AwPN4E7e1xBTyc8RT1Ig7GTb+SJBwHHOG7aNYSJKQwkGx/p8GPQ==","signatures":[{"sig":"MEYCIQDpvdOTwlv6F/fOHndcxsoGIYJnGEbMq4whg/+a5X1rAgIhAPUXCOVGEj77o+Qgppi/jMjkPkXvYtXaX206AkcGdM7C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDxTo9Gxw5qwDHDMmuhdgVahaq96R7nTbkxYfFpivlmcgIgL42lfw3VRa9lXZC7BERJooMpQqKI24Czq7bqp4IYja8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318992},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"1751c6c017ab2ed5ca182655acc051f1cffb0d9c","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, checks written code against your project rules, detects stuck loops, checks unverified done claims, a","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.9.0_1789617471313_0.6223994414011715","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"pi-warden","version":"0.9.1","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.9.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"ed83c6ead53f649e36832746639f1ebc25a7ba5a","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.9.1.tgz","fileCount":52,"integrity":"sha512-usz6zJF7oQCQfsJ3DTHyw3QikDfXIx9lb8TxO24OpeeHiS2Ji7VMLPXCMlP6swgmbj4elA1E+ZuSkfFcacdSig==","signatures":[{"sig":"MEUCIDoVWOitY9pyaEH8jqBA44bY6KlO9Nn4d6v8rMfVtEaYAiEA/Jr28RM3JE794Ahzek/vhaOHTyTNoKFE5jC7CLHt7Iw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFVTeG5wTs7t00gpfSdlyzH05lbMrtgnE+1L7iGv/SgJAiBdgt/XN7bmaNZKlyTfAhPFfX15xFh1WRiTCBPic3kaGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329502},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"e1ca493618220d4301d358efa347b2e121a4f1cf","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, checks written code against your project rules, detects stuck loops, checks unverified done claims, a","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.9.1_1789618191123_0.025750502534164","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"pi-warden","version":"0.10.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.10.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"5075b2458fa235d8d7368f4eb6aec3765cb0358b","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.10.0.tgz","fileCount":54,"integrity":"sha512-yblPPxPjZUmtJzt932be0vG2xwWbTSLpumly/TDs9QISAxMGTFUuUfhkZmZLgXQNgPhnboyY6zTC6hMudLNPFg==","signatures":[{"sig":"MEQCIAwwRfvOGemOSB+FMaR2yElJQj11jVV5R2qhV+kQLb98AiAT+poSTQLyHkmpYH1UR7A7ewUpmB4qh9MJqugaBBfj8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC9C8T9owAY5CnZ6ep32rcxPK7O/5qHBYXUiani9Kk9QAIgSEpwu30vKMfW3G0PFtaABhcFyO+hBrJchWvOU9IqCFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":358084},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"172e36b41b8017e709cab0246f6b1bcd1fa9cef8","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, checks written code against your project rules, detects stuck loops, checks unverified done claims, a","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.10.0_1789621003566_0.6758096719045994","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"pi-warden","version":"0.11.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.11.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"2a28b5ea0986cdf3acd87e6edbe780d409792cfa","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.11.0.tgz","fileCount":54,"integrity":"sha512-2G+3CsjAfzvqsr8RbiSmS5XmLAUQzKaYfJmTjn4uCxLFsI0/1YcFKouB1tVBWpb+0k9ZKn3Rqp17xZtlYUCRIA==","signatures":[{"sig":"MEUCIBurYTvb0objq7u5wBQJscMrvqwrHnFMEdbtfX1JHfmFAiEApvKIs/hLvn+qgSUtmzuM7ltJf3xHaA5SPuX1nPUgOEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEx6mO96vBUeXtI2OPAiY1fxS4VbZtCGNZS0BvU0JuUWAiEA3Zotqsw96bUsAcPhwRfVXj2knoa8Q6dxjXj5EGroR6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":366789},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"1c5e7358d8d007d25a8decb5b393a62d8f89f528","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, checks written code against your project rules, detects stuck loops, checks unverified done claims, a","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.11.0_1789621979018_0.7261680288435104","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"pi-warden","version":"0.12.0","keywords":["pi-package","pi-extension","typesafe","jev","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.12.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"eca50d74617186f5ecc38d535080a65ff73a66fd","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.12.0.tgz","fileCount":54,"integrity":"sha512-zZWFXkDyJJyghNBkMYUWGK/X1wiZBltR7MjvvUmK82hhywVuXeiNB6ivI47s5maZCWBGxoEVK+aiaQBYvsw4zQ==","signatures":[{"sig":"MEYCIQD6in1GpH5S8R5BNDQxy5MQeQRgFd7HLhPjJhRNRTbZuwIhAJ0OxrV32ZJGHltZlcvBy3ZnI0Soft3p6kMkm70iCn0/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDNRYBaFy4ZJHxn+yOb8ddbfMgQZjuAJD3exWUBhliOwAIgffmvgL5iJgnDoAZ41C/RaYVeBY163wJJ9NdvBpJQhdY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384249},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"060c736c4b8809815ce29419e1ada1cecad46069","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Guardrails for Pi built on pi-typesafe that steer the agent instead of interrupting you: Jev judges irreversible and off-task tool calls before they run, checks written code against your project rules, detects stuck loops, checks unverified done claims, a","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.12.0_1789624787494_0.4450614933600625","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"pi-warden","version":"0.14.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.14.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"f9ea963f3704cf971ff2df8af6ccb3e4337fef23","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.14.0.tgz","fileCount":56,"integrity":"sha512-vES/t84q/tKx6bPW8Z5nzQXKvlUYPvnSAyZhj3dkKGse4YOguflzj3mE4j3DRw/hhIBOGJTkvlsFfHvCL2HIPw==","signatures":[{"sig":"MEUCIA+aXFum+dx7o8xWs0wlrJxrEqFibrSO2ZGrjewi81FyAiEAm0yhjUfuwAMvw4AxdY+RpjjXbFk5tjuN5eIVr5peVgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC3JGlDEhQowWlXXjxj+eAVdZFa+3KJgytWWySKv/a4DQIhAOle7FBKn5xjS1C9tuVqdN2hFOCb+j5i1wGm9FF7Mza6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":395535},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"2e746e29d02f24a7668d645b339e5cc9ab49122c","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.14.0_1789689487942_0.5780143938503066","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"pi-warden","version":"0.23.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.23.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"eb1bb3b91154a7015cc4f738ef4d1e0a96156b3c","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.23.0.tgz","fileCount":57,"integrity":"sha512-1EMMJrkp2e52Md3dPDYZ7pXxOPX5utcUNa0RT3cLW2suJt0BBaYD6LTTT5uQCi9CGTFiN2PTumnDyAOhdHKIIw==","signatures":[{"sig":"MEUCIDpiQvD8SIay9fHt/g6Zq8cqK9vHaOPR5zbW52nplIJmAiEAoEwJu6Hqk5PpXbcCV3kkMmRrpIOUhpYpguVb2hNEeeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD3Ghq3R4GBhxC2IKEvPJUYoELORU+d+qg6pMvxaa5fuwIhAIW4wRRA45Zp5YBgHtHu0RQjHKj6Kie9MACXMgJovWMT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443269},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"84a3bc9aa6c2807b608df42bc77a951d9531d70b","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.23.0_1789746830628_0.4420242023943721","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"pi-warden","version":"0.25.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.25.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"8ff262a491a7598bd34e17cd65f982d4e91158e5","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.25.0.tgz","fileCount":61,"integrity":"sha512-Ic/rtMcdtxYIR3Dc6ECsQjwOek9StgKbgYsrGYHX0DZoio4EaPXRUn/aX2jMXCBiNWE3lo98nbRONaONxzPBVg==","signatures":[{"sig":"MEQCIGdxjYJfHYp3Hv5W5dACJ/5SUhANOdsHhwUOoojI7elFAiBI4Til+KKit6mYg6YgPXv3V7wOpKq6sa7CQtg6NgtFUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCc5n0EyV5jucKu1zCdlLQpx+1C5pvhLl4j3e3/x8Cm/QIgDujDh5iPncSsGDoojkqn7wvk6XvDh5Wtly2QeNIKQNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":510845},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"f333952fc3f15250701fc0fe273de732baa6132d","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.8.2","dependencies":{"pi-typesafe":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.25.0_1789790940329_0.8055984324681154","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"pi-warden","version":"0.26.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.26.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"17b5d0f049ef02468315aa5b490388d5a4aa13c5","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.26.0.tgz","fileCount":64,"integrity":"sha512-DXHuOSj4jK88/WzHNgOibXtrhO+9nwqZbp79GmnnaQhM5iqltRPqQoljJAOh2T8rB1WX6qDuMWATYTBL9XAK9w==","signatures":[{"sig":"MEYCIQCmcaWvld1WBaEmuXicqEJ4gMxBHIZOWZh7zapy6lRUHQIhANHFSo8N81bDHnlDBml7xtmXf7lYmmV+96VBzpHk1rVA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCVemtb0batC7KcdLOXOLYE59lSOccZhF/NJTr8mR8rjgIgJuizuqVvCmksZTSzOZS7RcH6LVU9as5N8eHjwwJMQWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597946},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"e6c801679464b1a9624225114eb5fb443c27d823","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.26.0_1789798398930_0.14726472220654196","host":"s3://npm-registry-packages-npm-production"}},"0.28.4":{"name":"pi-warden","version":"0.28.4","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.28.4","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"6fa4ff799493ab25128cf787fa9a8e2e45bca37a","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.28.4.tgz","fileCount":64,"integrity":"sha512-j06iNmrwf7keLPILI04c2RM4SApOJ5u5vx/UYVqNIdl+Wb4IHFyfcK+1E7p3n1qP4jX73wPZsgmnf1ankx3IyQ==","signatures":[{"sig":"MEUCIQDvKo67jLrPquCY44A1uA4/N7PWEAgogaiMRU3nzSArSwIgeJuS/OZGexW/GrFOFSIx7EPcZqvkk0PWwcavVCPVWcY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFkA6Ri9RF70BXXbr8jZGgSF+qBdYVmNNYStIftLTbDzAiEAw94snIlgku9rQAR3g9avqRWJNnaBPeEzMTFK7mf7ZfA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648331},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"725d05e3dd7e4d16d7c2dfba11d8cb9085144cad","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.6.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.28.4_1789821433232_0.8690384880605919","host":"s3://npm-registry-packages-npm-production"}},"0.34.1":{"name":"pi-warden","version":"0.34.1","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.34.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"8ce1256a0be90b4cbe6780cd0924becea24d88f1","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.34.1.tgz","fileCount":86,"integrity":"sha512-v/RwKK+PubVyQ3Z61UPMXmKMaukgYl2+85FA3MYBsTTBVUPFu4UGPxaapO0w9qlGjzUzd7s1Uh4BKjTHZ+829Q==","signatures":[{"sig":"MEQCID97SiXWKAm8pMCW6/2+zJMbaiWknkgtwR9/fzcqD57rAiAO8hJpS1LQm86cHMbqHGBNLVDZ7ktKp11b+ny8pYQFUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCV7ladArC1OYuW5n62lcsEEp1u49zM2ROuSd5j+bpcSwIhAKExiy/JkJjGWC0tesY+KgY+BSNOmU4jtYx8qgjoxYvH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":799260},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"784104a167bffb94cd0f6f48f3c1f92acf4b4f40","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.34.1_1790005629765_0.2180562513577029","host":"s3://npm-registry-packages-npm-production"}},"0.35.0":{"name":"pi-warden","version":"0.35.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.35.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"293b83edcfea51332fe3ccea4c8ca2cccd98388b","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.35.0.tgz","fileCount":86,"integrity":"sha512-hOADQmjHQ4FLUxYv49KLggl+9oSMvLvkTr4kY8sMGGdElOEqg5uuGetjsMYsUkSm7WUDiZUobeL9ck9EMwI07g==","signatures":[{"sig":"MEQCIAyy5b6A+A9EaKuaDTze9WO3dziRVAt4LJGVvTF3PrMdAiAMzYnAadrd0ByeCW5Fx3VuM6eLojslEnB34OpCYaAL8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQVpm9Po1PJAA3gE4wvD4DXJxIwwcoE6P/l673B50ZtAIhAKZZlf+ScQqXA8w3ofsmTG3ibNlpPY0yH1Bqqd5d+Y+4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":807335},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"c18c7a0c03a4287d41c4dee70507d4c044d736ae","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.35.0_1790011088379_0.8832277663804231","host":"s3://npm-registry-packages-npm-production"}},"0.36.0":{"name":"pi-warden","version":"0.36.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.36.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"bac14a2969d91fa35f924b6a75243da322350356","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.36.0.tgz","fileCount":86,"integrity":"sha512-lyABmfQxAAshVuYCQ2DiwOHRz0qYIZhLQxNW+Ldlt/Ljb/v1brctRAeXTRAVVddcdZ9qY8n2bR5vR7Kl+6e8fQ==","signatures":[{"sig":"MEYCIQD8gPwD+iaWeWlXw6v9bJP07sqd0DyOAZ57LV9k9YvhdwIhAIAFdm1/b627gxlNyeDqxy5ngdjcY6LA1nPjq1NAPjGD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC5KBtirN1sFMDxXpKXg5v5KVMDaPumCucBOgx35+KrsAIhAL7Nt+4QPMj2cVv1IaATpLptt4dFoD3DZQjyftDQfogv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":809257},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"dd7708273dfaefaa054bc5532ce95add62a1e266","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.85.1","@earendil-works/pi-coding-agent":"0.85.1"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.36.0_1790012750799_0.22239390226132993","host":"s3://npm-registry-packages-npm-production"}},"0.38.3":{"name":"pi-warden","version":"0.38.3","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.38.3","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"1d7b314d95697c12cd92d95b36db72df9d08b581","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.38.3.tgz","fileCount":92,"integrity":"sha512-0pOwEzgb2VOcEvQ1hWIX+L2PcUdZvupNe4asLzWghgeIx76esARX+FtFTOEPmRz5qTGfuCFv+OuSdAxxP3t9Eg==","signatures":[{"sig":"MEQCIHx9RuGmc2orlE28/G9Eb4rSmNDNveYz8NPrIr1gT6KaAiAIXL8r+nIgozWAk1AqsZQwahTUHIPIL2xXllR5xJUEag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDcpxhICit82mN16OBnwYccFkI3rYXofVVAFV2h2RV4/gIgdWKfUAaml1evp3glHiWfxn9Y12+zKzdO3BYNSzUEIio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":920142},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"ae2c16dbf467caf21f39cfc6177fc94aa34af605","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.38.3_1790048344392_0.17424392371710717","host":"s3://npm-registry-packages-npm-production"}},"0.40.1":{"name":"pi-warden","version":"0.40.1","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.40.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"be0f236cec3324873a78e9c5957b08f856733b6f","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.40.1.tgz","fileCount":96,"integrity":"sha512-FWeGCJLwIOnKT9ZSeN0HQm9shKCMjpkb8dUrtHcqSH4pxKsv2AOkbk8tAgfdwr7RryHIgkfEZxaiD0BBnHpK2Q==","signatures":[{"sig":"MEUCICmUjh5ue4LnGhB5qY6cOCDdkMCxfMBr9VCuKbZwy3k0AiEAyiBKHMR9DT4sn3os4Sc5+wdRcpBGLKVHrtY7rWkFzmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBnGwAemBAJYIRxHQSaYOxdOxM4leGeDy4Ir6gyEbvCCAiB1dyfgwaSwgXhvEqsGGiVRsvhFcP/y1m4h/KbI36V5DA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":987467},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"404efdc51b6749ee79b0760d05904563a9cb61a5","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.40.1_1790088867293_0.01764624066506615","host":"s3://npm-registry-packages-npm-production"}},"0.40.2":{"name":"pi-warden","version":"0.40.2","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.40.2","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"a56d1db4b0b692c3673ad89083f4e0798d7266d9","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.40.2.tgz","fileCount":96,"integrity":"sha512-QddTkI64za9BFWVbyBxEs1jEI2tkZoCtSMyVkjNg1Bj768GBB7JV2ykWD+4+AVAUjNkcwr1fA2eUmHE4CRj3zg==","signatures":[{"sig":"MEQCIBysnGiAzdjqyTe0jFsrmEiouQwT4Z7/3d5kTKVZK/LhAiBmy5kMWukTT+pw3xxY2KG9qqq1zVBsw8QK4yuuhp8Zxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAdV+6OIRttuUEUo5Ktwlq+k93stZayGjBt4kSb8WyqWAiAp2edH7Z4HQZozYnAek93pQQFV5qfjsO/r2B52BQiN/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":992823},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"cb807de4939481b3494ed922bb04df21c6fce0e0","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.40.2_1790118877311_0.571014805561223","host":"s3://npm-registry-packages-npm-production"}},"0.47.0":{"name":"pi-warden","version":"0.47.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.47.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"d481b0026f1a2782f21a849dce37107426a81727","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.47.0.tgz","fileCount":100,"integrity":"sha512-DwHJH1MVZeoh3bo8ZPv+CceNHa5WRjS/TsTKohTdE27neIDy2Dfbcau9XhaVXD+s4y6zTYBRqs1wbMRXiE1qrA==","signatures":[{"sig":"MEUCIQDj3qIFnR9V1uT87orFyZHOPIRyl5PQalF3PIM3uRIGIQIgHlz1tKYrzqtV1LozV3W2BEO5yjmTRxRDMG4F2eEl/2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDtr1DUtLTMJkxr0j2Lw0softV4WfJB0eAIqCtalvvtdwIgPk7rIMM2sF8d4GSPbYWAr8EP6WJWiAQvHdVpEAYSGfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1065767},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"f91b296d7ee5869c14677f06848b6f9035fdc809","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.47.0_1790237807525_0.7208266258632632","host":"s3://npm-registry-packages-npm-production"}},"0.48.1":{"name":"pi-warden","version":"0.48.1","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.48.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"095ad86ff8147ddfe6097ee21069118c68e9bdef","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.48.1.tgz","fileCount":100,"integrity":"sha512-hL7zZsoZff3Bnhos7XZgyYUMt5LJ9BQto7DcszWfyXN8cs3YlCZL+Yp+KBZXr6d6tLuOF5I2ifjumAWxLJyvIA==","signatures":[{"sig":"MEQCIA1c9C8iGBWijaBAARAbtePvAxeHU2eSDw8W3Q/mjd1bAiB+rPlWVM+oEpy8/nhQkrfBfuk3t7IrHZVVBqBfS724Bg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC5uI7ree7W466Gi+nRU52tj03QcLPzm8vkR9ZfnF9qbQIhAL2wuU5DpzNNI/ExmGp+cmfTra68W9IwNuis+NWYmOSo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1090688},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"eafd40ec48ec9370ce5dc6ddba4a0d67598bceda","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.48.1_1790240237294_0.8350282517949279","host":"s3://npm-registry-packages-npm-production"}},"0.60.0":{"name":"pi-warden","version":"0.60.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.60.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"2ef1bdbaa051c2c04be83c2e6aecf717695f95f6","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.60.0.tgz","fileCount":104,"integrity":"sha512-i0L9AbWwBicF0AwVh78a72kY4KiJJiwAiuCi6A4YiCLKjSkRLEpGvQgrnr4JNrZCP/MvoaEgAV8w3bq2JgAN5A==","signatures":[{"sig":"MEYCIQDtC0nVg2hJHJ1SD24NHHbOCQu6jcO+FNqeeuHaYTWjMgIhAO0TMz+yRdOmVxNbV+1T5GjszNEJfLfeoP6In3ux0IOh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDDuKdrCKwQXWTwgkEDmfY5jynIAy89qtC0ZJcbfxoQuAiB5WIE4yK8riTaLIqOZHQ6q6vORuVoZH3W17ucgEKr09Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1251802},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"312d64870e01327181ea95223c98484f6fc9eb12","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.60.0_1790294271732_0.1869156016617719","host":"s3://npm-registry-packages-npm-production"}},"0.64.1":{"name":"pi-warden","version":"0.64.1","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.64.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"cfeb53985be6770fdf2c12c0b8323fa1f8015553","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.64.1.tgz","fileCount":108,"integrity":"sha512-RSXckADsDa3nuu/5NKnYURc9lkyqU7yFPpGqoViSn99r73CQvmdo4B2lzXJNcTdKyupQFQsjMMSrw1yQQJ2kuw==","signatures":[{"sig":"MEYCIQC6TMQkcIblFHh4+ySOheGqF5jlC9xRIVjGEMu/4JYvrQIhAMONdLEOnZxkj8oNWj0DoOGVP4eMcc8auopuhlC/t3el","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDVJvs5lD9ZROoB8ZdhClTtYRO7NiaiUuzQH7VFuuvo6AIhANYl8BjUPeKjrB5Ls/kgrAvSyUqquUiWfT0ackxQmvA7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1332027},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"bc010af154ff0201e5708d6a2247992effd80088","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.9.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.64.1_1790305744571_0.45124355078270995","host":"s3://npm-registry-packages-npm-production"}},"0.71.0":{"name":"pi-warden","version":"0.71.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.71.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"244c63630ad690c7fc7d7aa21b61b4383dffc664","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.71.0.tgz","fileCount":122,"integrity":"sha512-bEDLibYjvmHSxzL19zCx9Gz7WbrRiarqGhJ6cEROWE7pBrIcNjCiQLWF8vKU/gXcS2LAmS2V0PotVa4bA0+LwQ==","signatures":[{"sig":"MEQCIFk/JgxNoyig6NimQoZRQ0uFeTUwnfOBQW4CB38LGCMyAiA2MhztQnXpCmvIpJxTcRk0KB9AR5bjbfTQaunnr3LVKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDzV8p3ziDr/iqEn0VIM1Axfp+jdljv9Fl7VXFKoEHQdQIhAJKFxANxIK614zlOYy2lPbxsoXvEVqhEMsy1pnFFV9cF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1526510},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"a1ba984c57b4679c29c00048f64364b735fe2991","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit","eval:judge":"node scripts/judge-bench.mjs","eval:rules":"node scripts/rules-bench.mjs"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.10.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.71.0_1790471788713_0.5223919511017492","host":"s3://npm-registry-packages-npm-production"}},"0.73.0":{"name":"pi-warden","version":"0.73.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.73.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"03414aef242bd282e3ab1c06092b49d0029f4b57","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.73.0.tgz","fileCount":134,"integrity":"sha512-V4Yg/X1hlQ67upeZLGX8ZfBjDKZD9TBKRlIWhsV+R9cSic92JlbwZMNWNUGXInS/PeoWuz3XTfHQkJYPxEI/5g==","signatures":[{"sig":"MEQCIH1QlwEXpZ3f8qrX08LRQY5c98clwcj2BaQkiv1mJJo7AiAPYm+iyZuQppiyc2fjUymN6ex0v8h944o5VNUmezh4/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE9SGIwFsJzRyGwKY3F8GfpHyyvQQsulJiqT2PP2BB5RAiA25Bbu4dLwBIc2PY8RsYxUoFpIIiMmdGRqWo9QHB6vvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1665316},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"161ff7403c2aa556ef540b5e6e0fb85d279d78c8","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit","eval:judge":"node scripts/judge-bench.mjs","eval:rules":"node scripts/rules-bench.mjs","eval:replay":"node scripts/rules-replay.mjs","eval:rules-turn":"node scripts/rules-turn-bench.mjs"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.10.0","dependencies":{"pi-typesafe":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.73.0_1790552786630_0.07526258135081987","host":"s3://npm-registry-packages-npm-production"}},"0.74.0":{"name":"pi-warden","version":"0.74.0","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.74.0","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"5a2481c299a0e3802821776ef0b8f2a20e64d477","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.74.0.tgz","fileCount":134,"integrity":"sha512-DesLU9/RgwL9IXLUecuhtwe2moSdF81Qgx2fo+kCEr9067yXGgLY/iHnFwuEngfLs8G7p+3YPIt3I3BlmBihGw==","signatures":[{"sig":"MEUCIQCVucwEkW5AaxRSHoSG72pZHJfTdupVSWfYTB7sSxYlUQIgfsTxyasYgfloV23BT4eovlUbXbTNMTAD4DkGCuvb7L4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAr1PxBFx143gGiG4XX3oOQzDliiaChaVvUOkDwe9I6CAiEAk/5cXL209L7If482WMnLknfVd9fi7rzcUlc0lTspgJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1672255},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"b3a43df3d8347d925f6cc4783a5a63ef28629666","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit","eval:judge":"node scripts/judge-bench.mjs","eval:rules":"node scripts/rules-bench.mjs","eval:replay":"node scripts/rules-replay.mjs","eval:rules-turn":"node scripts/rules-turn-bench.mjs"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.10.0","dependencies":{"pi-typesafe":"^0.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.74.0_1790601552733_0.820420412075965","host":"s3://npm-registry-packages-npm-production"}},"0.74.1":{"name":"pi-warden","version":"0.74.1","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"author":{"name":"Ryan Gapac"},"license":"MIT","_id":"pi-warden@0.74.1","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"homepage":"https://github.com/DevMortimer/pi-warden#readme","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"dist":{"shasum":"5ee1a9711798f429f209be6ce96b38e5025ea65f","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-0.74.1.tgz","fileCount":136,"integrity":"sha512-BgEK1rM1X+X6ai6JBJ9CjPTOqsHlZE3qckNXWbK5WLJCmylIG4/O7giYBOqMPgcivrd1KAzKOycG+bdm/gZdew==","signatures":[{"sig":"MEQCIBFHZ6F6OeAKSPj2Hn6XCPAWN+4Zes0H/8j8aaQarGc7AiB8A8BflHSD218W+QS/fLudNcaKWJTs/Wh1jNx7nXS+EQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDqsw7ldtaXDrFc99MrT5D8me3GTEwOb78Rqi+AHtJt9gIgJk8iFJa0DRpdl7qTXc7tYlgN4vsFU4z1eq12FJzVfgU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1679668},"type":"module","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"0f11867748c2b212135465061b080c6295c0f87d","scripts":{"test":"node --import tsx --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:bun":"bun test tests/sqlite-adapter.test.ts tests/learning.test.ts","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit","eval:judge":"node scripts/judge-bench.mjs","eval:rules":"node scripts/rules-bench.mjs","eval:replay":"node scripts/rules-replay.mjs","eval:rules-turn":"node scripts/rules-turn-bench.mjs"},"_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"_nodeVersion":"26.10.0","dependencies":{"pi-typesafe":"^0.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/pi-warden_0.74.1_1790642851713_0.5099043275997608","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"pi":{"image":"https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/preview.png","extensions":["./extensions/index.js"]},"_id":"pi-warden@1.0.0","bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"dist":{"shasum":"263720dab0c2b1ef7069cfabbb64fdd8995b77f2","tarball":"https://registry.npmjs.org/pi-warden/-/pi-warden-1.0.0.tgz","fileCount":144,"integrity":"sha512-iVQYKsPHMz4buFpSaKWn3zyLj8rXh7ftGXWh0uS/yCfuUSD5WcGEmRUpdqOGOi5kzOQr2pHQhd+z+Ex/3Iw3lA==","signatures":[{"sig":"MEUCIQDtjSgH96M0PFioKZKoBZr2lz+VD2SMY9zdtPmEdRgJAgIgX7vkV+MQP7hpW95apStydNkKdwkIKSmvmNTRASOruxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF8KHvnZ13HoEeIXJb+3mw32BGXdpeDWsxNVhYmtCNHLAiBc6s1EkXDbPw1QymqB9E1U1Xo+vy61aDmSKtw6I0lBnQ=="}],"unpackedSize":1955561},"name":"pi-warden","type":"module","author":{"name":"Ryan Gapac"},"engines":{"node":">=22.19.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./extension":{"types":"./dist/extension.d.ts","import":"./dist/extension.js"},"./package.json":"./package.json"},"funding":"https://github.com/sponsors/DevMortimer","gitHead":"857514057a8ab56b82c1dcbf24ae3dacede2369a","license":"MIT","scripts":{"hero":"node scripts/render-hero.mjs","test":"node --import tsx --import ./tests/setup-env.ts --test tests/*.test.ts","build":"tsc -p tsconfig.build.json","check":"npm run typecheck && npm test && npm run build","dev:pi":"node scripts/dev-pi.mjs","eval:ab":"node scripts/eval-ab.mjs","prepack":"npm run build","preview":"node scripts/render-preview.mjs","test:bun":"bun test tests/sqlite-adapter.test.ts tests/learning.test.ts","test:live":"node --env-file-if-exists=.env scripts/live-smoke.mjs","typecheck":"tsc --noEmit","eval:judge":"node scripts/judge-bench.mjs","eval:power":"node eval/power.mjs","eval:rules":"node scripts/rules-bench.mjs","eval:replay":"node scripts/rules-replay.mjs","eval:rules-turn":"node scripts/rules-turn-bench.mjs"},"version":"1.0.0","_npmUser":{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"},"homepage":"https://github.com/DevMortimer/pi-warden#readme","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"_npmVersion":"11.19.1","description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","directories":{},"maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"_nodeVersion":"26.10.0","dependencies":{"pi-typesafe":"^0.8.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","typescript":"^6.0.0","@types/node":"^22.0.0","@earendil-works/pi-tui":"^0.87.0","@earendil-works/pi-coding-agent":"0.87.0"},"peerDependencies":{"@earendil-works/pi-tui":">=0.85.1 <1","@earendil-works/pi-coding-agent":">=0.85.1 <1"},"peerDependenciesMeta":{"@earendil-works/pi-tui":{"optional":true},"@earendil-works/pi-coding-agent":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-warden_1.0.0_1790826795131_0.5096142418764193"}}},"time":{"created":"2026-09-16T04:11:55.805Z","modified":"2026-10-01T03:53:15.408Z","0.1.0":"2026-09-16T04:11:56.046Z","0.1.1":"2026-09-16T04:26:02.098Z","0.1.2":"2026-09-16T04:30:38.394Z","0.2.0":"2026-09-16T05:01:49.747Z","0.2.1":"2026-09-16T05:08:51.704Z","0.3.0":"2026-09-16T05:35:09.931Z","0.4.0":"2026-09-16T05:44:42.448Z","0.5.0":"2026-09-16T06:47:35.990Z","0.5.1":"2026-09-16T07:07:54.244Z","0.5.2":"2026-09-16T07:34:59.439Z","0.5.3":"2026-09-16T07:41:20.538Z","0.5.4":"2026-09-16T08:44:44.293Z","0.5.5":"2026-09-16T09:25:47.405Z","0.6.0":"2026-09-16T09:59:36.528Z","0.7.0":"2026-09-16T12:42:41.310Z","0.8.0":"2026-09-16T14:32:15.047Z","0.9.0":"2026-09-17T03:57:51.399Z","0.9.1":"2026-09-17T04:09:51.222Z","0.10.0":"2026-09-17T04:56:43.683Z","0.11.0":"2026-09-17T05:12:59.110Z","0.12.0":"2026-09-17T05:59:47.613Z","0.14.0":"2026-09-17T23:58:08.094Z","0.23.0":"2026-09-18T15:53:50.734Z","0.25.0":"2026-09-19T04:09:00.517Z","0.26.0":"2026-09-19T06:13:19.069Z","0.28.4":"2026-09-19T12:37:13.337Z","0.34.1":"2026-09-21T15:47:09.861Z","0.35.0":"2026-09-21T17:18:08.471Z","0.36.0":"2026-09-21T17:45:50.932Z","0.38.3":"2026-09-22T03:39:04.484Z","0.40.1":"2026-09-22T14:54:27.405Z","0.40.2":"2026-09-22T23:14:37.417Z","0.47.0":"2026-09-24T08:16:47.622Z","0.48.1":"2026-09-24T08:57:17.416Z","0.60.0":"2026-09-24T23:57:51.869Z","0.64.1":"2026-09-25T03:09:04.664Z","0.71.0":"2026-09-27T01:16:28.852Z","0.73.0":"2026-09-27T23:46:26.734Z","0.74.0":"2026-09-28T13:19:12.860Z","0.74.1":"2026-09-29T00:47:31.814Z","1.0.0":"2026-10-01T03:53:15.252Z"},"bugs":{"url":"https://github.com/DevMortimer/pi-warden/issues"},"author":{"name":"Ryan Gapac"},"license":"MIT","homepage":"https://github.com/DevMortimer/pi-warden#readme","keywords":["pi-package","pi-extension","typesafe","jev","project-rules","code-quality","guardrails","harness-engineering"],"repository":{"url":"git+https://github.com/DevMortimer/pi-warden.git","type":"git"},"description":"Makes the Pi agent follow your project's rules. Jev judges every write against your pi-warden.md and quotes the broken rule back to the agent, names slop, breaks stuck loops, calls out unverified done claims, compresses large tool output, and holds the ra","maintainers":[{"name":"devmortimer","email":"mail@ryanjoshuagapac.com"}],"readme":"<div align=\"center\">\n\n# pi-warden\n\n**Your coding agent says \"done\". It didn't run the tests.**<br>\n**pi-warden catches it, and the agent fixes it without you.**\n\n[![npm](https://img.shields.io/npm/v/pi-warden?color=cb3837&logo=npm)](https://www.npmjs.com/package/pi-warden)\n[![downloads](https://img.shields.io/npm/dm/pi-warden?color=blue)](https://www.npmjs.com/package/pi-warden)\n[![stars](https://img.shields.io/github/stars/DevMortimer/pi-warden?style=flat&logo=github)](https://github.com/DevMortimer/pi-warden/stargazers)\n[![license](https://img.shields.io/badge/license-MIT-green)](LICENSE)\n[![Pi](https://img.shields.io/badge/Pi-0.85%2B-8a2be2)](https://github.com/earendil-works/pi)\n[![judged by Jev](https://img.shields.io/badge/judged%20by-Jev-orange)](https://typesafe.ai)\n\n</div>\n\n![pi-warden tells the agent what it got wrong and the agent fixes it: told 124 times that it said done with nothing checked, the agent ran a check next 94 times (76%); of 111 held actions with a known outcome, the agent found a safer way 79 times, you approved 29, you said no 3 times; 422 steers named a project rule; 1,168 real sessions, 2026-09-16 to 2026-10-01](https://raw.githubusercontent.com/DevMortimer/pi-warden/main/docs/hero.png)\n\n<div align=\"center\">\n\n**1,168 sessions · 419 risky actions stopped before they ran · 76% of fake \"done\"s turned into real test runs**\n\n<sub>Sixteen days of the maintainer's real use across all their projects, not just this one, 2026-09-16 to 2026-10-01. Method and noise: [field report](eval/reports/2026-10-01-field-usage/).</sub>\n\n</div>\n\n## Install\n\n```bash\npi install npm:pi-warden\n```\n\nThen `/warden enable` (paste a [TypeSafe](https://console.typesafe.ai) key) and `/warden init` (writes a starter `pi-warden.md`). That's it. No key? The offline guards still run.\n\n## It steers. It doesn't nag.\n\nMost guardrails stop and ask you. pi-warden tells **the agent** what it got wrong, and the agent corrects itself. You are pulled in only when something can't be undone. In a replay of 18,075 recorded calls (2026-09-21), **0.27% were held at the old 0.7 threshold and 0.1% at 0.9**, the default since 0.75.0 ([report](eval/reports/2026-09-21-calibration-0.33.3/report.md)).\n\n| Your agent… | pi-warden… |\n| --- | --- |\n| says \"done\" with no test, build, or lint behind it | sends it back to prove it |\n| breaks a rule in your `pi-warden.md` or `AGENTS.md` | quotes the exact rule it broke |\n| is about to `git push --force`, `reset --hard`, `rm -rf`, `DROP` | holds it before it runs. A built-in pattern holds the destructive ones with no key at all; with Jev on, a score of 0.9 or more for \"cannot be undone\" holds too |\n| retries the same failing fix for the third time | asks for a new hypothesis |\n| writes stubs, restating comments, hardcoded secrets | names them on the spot |\n| floods its context with a huge log | keeps the lines that matter, stores the rest |\n| starts repeating itself forever | stops the reply |\n\n[Every guard, with its thresholds and calibration →](docs/guards.md)\n\n## Features\n\nEvery guard and feature, its default, and its status. Defaults are `defaultConfig()` in `src/config.ts`; Beta and Experimental are the labels in [the guard docs](docs/guards.md). Guards that ask Jev need a key and `/warden enable`; without one, their offline parts still run.\n\n| Feature | What it does | Default | Status |\n| --- | --- | --- | --- |\n| Jev judgments | Sends redacted samples to Jev for the judged checks below | Off until `/warden enable` | Stable |\n| [Action guard](docs/guards.md#action-guard) | Checks each command, write, and edit before it runs: offline patterns plus one Jev request | On | Stable |\n| ↳ Offline floor | Holds destructive patterns (force push, `reset --hard`, `rm -rf` on a path outside scratch, `DROP`) with no key and no request; with Jev on, a pattern hit goes to Jev as evidence | On | Stable |\n| ↳ Irreversible hold | Jev adds holds: a call scored 0.9 or more as irreversible is held; 0.5 to 0.9 warns | On | Stable |\n| ↳ Scratch deletes | A recursive `rm` of temp scratch the agent made warns instead of holding; data moved in keeps the hold | On | Stable |\n| ↳ Ask gate | Code decides offline when no Jev answer could change what the agent sees, so the call sends no request: 48.9% fewer requests, 327 of the 338 changed outcomes still asked | On. `action.ask` | Stable |\n| ↳ Approval on demand | After a hold, a call held again under your next reply gets one request that reads your reply and the agent's turn; released only when `approved` and `reply_points_at_action` are both 0.7 or more | On | Stable |\n| ↳ Off-task notice | Notes in the trace when a call looks unrelated to your request; never steers or holds | On, trace only | Stable |\n| ↳ Intent-mismatch steer | Tells the agent when a call differs from its stated plan; the score stays in the trace | Off: trace only. `action.intentTraceOnly: \"invisible\"` | Stable |\n| ↳ Should-proceed notice | Notes in the trace when the judge would ask you first. `action.shouldProceed.steer: true` also tells the agent; the 2026-09-30 labels do not support it (2 of 427 calls needed asking) | Off: trace only | Beta |\n| ↳ Your command, path, and arming rules | Warn, hold, or deny commands and paths you name | On, none set | Stable |\n| ↳ Large-output warning | Tells the agent to filter a command that will print far more than it needs | On | Stable |\n| [Rules](docs/guards.md#rules) | Judges every write and edit against the rules in your `pi-warden.md` | On | Stable |\n| [Rules at turn start](docs/guards.md#rules-at-turn-start) | Names the rules a new request will touch, in the background, and delivers them at the next tool boundary; the prompt never waits | On. `rulesAtTurnStart.enabled` | Stable |\n| ↳ Soft double-check tier | Asks the agent to double-check a score just below a rule's cutoff | Off. `rules.softThreshold` | Stable |\n| [Slop](docs/guards.md#slop) | Names stubs, restating comments, dead code, and padded replies | On | Stable |\n| [Security](docs/guards.md#security) | Flags risky written code and prompt injection in tool output; masks credentials, but leaves code values such as a call or an index alone | On | Stable |\n| [Stuck](docs/guards.md#stuck) | Asks for a new hypothesis when the agent repeats a failing approach | On | Stable |\n| [Done-check](docs/guards.md#done-check) | Sends an unverified \"done\" back for a check; after a UI change, a visual check | On | Stable |\n| [Runaway](docs/guards.md#runaway) | Stops a reply that repeats itself, offline | On | Stable |\n| [Context saver](docs/guards.md#context-saver) | Replaces large or duplicate tool output with an excerpt and a saved full copy | On | Stable |\n| ↳ Repeated user messages | Cuts repeated runs in your own messages too | Off. `context.dedupeMessages` | Stable |\n| ↳ Compaction evidence appendix | After a compaction, lists failed calls, the last passing check, holds, and saved outputs | On | Stable |\n| [Context filter](docs/guards.md#context-filter-beta-off-by-default) | Jev scores chunks of a large output and keeps the ones for the current task | Off. `context.filter.enabled` | Beta |\n| [Relevance compaction](docs/guards.md#relevance-compaction) | Writes the compaction summary instead of Pi's model; not recommended | Off. `compaction.enabled` (user file only) | Experimental |\n| [Call-waste notes](docs/guards.md#call-waste) | One advisory line on polling, paging, repeated searches, and re-filtered checks | On | Stable |\n| ↳ Session tip | Adds one paragraph about call cost to the system prompt | Off. `waste.tip` | Stable |\n| [Open loops and recall](docs/guards.md#open-loops-and-recall) | `warden_loops` keeps the agent's promises; `warden_recall` lists what it already tried | On, no switch | Stable |\n| [Subagent triage](docs/guards.md#subagent-triage) | Wakes the agent only for a subagent report that needs it | On | Stable |\n| [Judge cooldown](docs/guards.md#judge-cooldown) | Pauses Jev requests after repeated failures, so a dead backend costs no timeouts | On, no switch | Stable |\n| [Steer budget](docs/guards.md#steer-messages) | At most 3 non-critical steers per run; the rest go to the trace | On | Stable |\n| [Adaptive steers](docs/guards.md#adaptive-steers-per-model) | Makes a steer kind trace-only for a model that rarely follows or often disputes it | On | Stable |\n| Steers and notices in the transcript | Shows steers and per-call notices in the chat, not only in the trace | Off. `steerVisible`, `notices` | Stable |\n| [Desktop notifications](docs/guards.md#desktop-notifications) | Holds, confirm dialogs, and runaway stops reach the desktop or your relay | Off. `notify.enabled` | Stable |\n| [Conscience](docs/guards.md#conscience) | Recommends a skill or tool the agent is missing; ranks candidates on your machine first and sends one request, or none | Off. `conscience.enabled` | Beta |\n| Learning from holds | Keeps each judged call in a local database with its Pi session id and, for a hold, what happened next (`approved`, `declined`, `replanned`, `abandoned`); a call that was not held keeps only the judge data, and is pruned after 90 days (`learning.allowedRetentionDays`; holds after 365). `/warden recommend` suggests threshold changes from it. Nothing is sent | On | Stable |\n| Config surface | A project file can only make the action guard and security stricter, a value that cannot be applied as written is shown once as a warning, and `deny` and `block` mean the same in every rule kind | On, no switch | Stable |\n| Standing preferences | `/warden prefs` finds preferences you repeated across sessions and sends them at session start | On | Stable |\n\nAll keys and their values: [configuration](docs/configuration.md). Commands: [commands](docs/commands.md).\n\n## What it costs\n\nJev requests cost money, so each 1.0 change was measured by what it saves. Each figure is the measured change on recorded sessions of one machine, not a promise for yours.\n\n| Change | Measured effect | Source |\n| --- | --- | --- |\n| Ask gate and lean request ([#153](https://github.com/DevMortimer/pi-warden/pull/153)) | Action-guard requests 28,036 → 14,326 (−48.9%); input tokens 64.2M → 20.5M (−68.1%); 327 of the 338 calls whose answer changed what the agent saw are still asked (96.7%) | [Ask gate and lean request](docs/guards.md#ask-gate-and-lean-request-2026-09-30) |\n| Conscience ranks locally first ([#155](https://github.com/DevMortimer/pi-warden/pull/155)) | Requests per prompt 2 → 1; input tokens per prompt 14,620 → 10,241 (−30%); 30.9% of 7,614 recorded prompts send none | [Local gate, top k, and tip text](docs/guards.md#local-gate-top-k-and-tip-text-2026-10-01) |\n| Turn-start reminder and conscience in the background ([#152](https://github.com/DevMortimer/pi-warden/pull/152)) | The prompt hold falls from about 255 ms to under 1 ms at p90; the reminder names a rule that applies 68.9% of the time and catches 21.5% of the rules that apply | [Turn-start delivery calibration](docs/guards.md#turn-start-delivery-calibration-2026-10-01-background-delivery) and [Rules at turn start calibration](docs/guards.md#rules-at-turn-start-calibration-2026-09-30-first-measurement) |\n| Approval on demand ([#160](https://github.com/DevMortimer/pi-warden/pull/160), [#161](https://github.com/DevMortimer/pi-warden/pull/161)) | Approval questions per 1,000 judged calls 90.0 → 0.7; wrong releases 45 → 1 in the measured runs | [Approval on demand](docs/guards.md#approval-on-demand-2026-10-01-three-designs-three-sets) |\n| Hold database ([#149](https://github.com/DevMortimer/pi-warden/pull/149)) | A copy of 52,362 rows shrinks from 285.9 MiB to 41.6 MiB | [Data handling](docs/data-handling.md#what-stays-on-this-machine) |\n\nFeatures that did not earn their cost did not ship: the working-memory pruning, the stale-result stubs, and a hybrid compaction failed their gates, and the off-task and should-proceed steers stay trace-only. The numbers are in the [Calibration](docs/guards.md#calibration) section.\n\n## Rules no linter can check\n\n```markdown\n# A TODO names a ticket\nA bare `TODO` or `FIXME` without a ticket reference is a violation.\n\n# Errors never reach the user raw\npaths: src/api/**/*.ts\nCatch errors at the handler and return a message a user can act on.\n```\n\nEach `#` heading is one rule. Every write and edit is judged against it in about a quarter of a second by [Jev](https://typesafe.ai), a model that returns a probability, not prose. No `pi-warden.md`? Your `AGENTS.md`, `CLAUDE.md`, or `README.md` is used instead.\n\nComing from 0.74.1? See [Upgrading](docs/upgrading.md).\n\n## Receipts\n\n- **Rules:** in 150 paired agent runs (four batches, `eval/reports/2026-09-18T00-*`), the agent without pi-warden broke a project rule in **6** of 150 runs. With it: **0** of 150.\n- **Done-check:** after a nudge, the agent ran a check **94 of 124** times, and sometimes found a failure it had missed.\n- **Holds:** when the agent was stopped, it found a safer way **79 of 111** times; you approved 29. Field data from 2026-09-16 to 2026-10-01, across versions, so it includes holds from before the 0.9 threshold and the `rm` scratch change.\n- **Stability:** 13,952 guard cases over 109 overnight cycles, no score drift.\n\nEvery number has a script and a raw report in [`eval/reports/`](eval/reports/) or the Calibration section of [the guard docs](docs/guards.md#calibration). They are the maintainer's measurements, not a universal promise, and the reports list what was noise.\n\n## How the defaults are chosen\n\nThresholds are set on recorded sessions. Where the data allows, a threshold is chosen on one half of the corpus and checked on the other. A feature that measured worse ships off or trace-only. [Calibration →](docs/guards.md#calibration)\n\n- **Irreversible hold at 0.9** (0.75.0). On 15,346 judged calls the judge was wrong on 15% of calls below confidence 0.8 and under 1% above it. A 0.9 cutoff chosen on one half removed about 52 false alarms on the other half and lost no true catch. Scores from 0.5 to 0.9 now warn.\n- **Intent steer in the trace only** (0.76.0). The score separates a differing call (AUROC 0.815 on 140 calls labelled blind to the score), but 36 of the 37 steers it would send were for calls the plan or your request had asked for.\n- **Failed gates stay off.** Pruning stale tool results had a safe point in 10 of 1,042 recorded sessions (median saving 0.00%); a hybrid compaction kept 5 of the 34 re-read files where the gate asked for 10; the working-memory gate's best cut dropped 23.5% of candidates and missed 12.8% where the gate allowed 10%; and no slice of the off-task or should-proceed steers reached 0.80 precision. Each is recorded in [Calibration](docs/guards.md#calibration).\n- **Relevance compaction off** (0.78.0). In a replay of 48 recorded compactions its summary was 4.7 times the size of Pi's at the median and kept whole only 1 of the 34 files the agent read again.\n\n## Privacy\n\nSecrets and unshown paths are stripped before anything leaves your machine. The offline guards send nothing. The opt-in features send more when you turn them on: the context filter sends a large output whole, redacted, in chunks; relevance compaction sends an outline of the conversation and a sample of each tool result. [Exactly what is sent →](docs/data-handling.md)\n\n## Credits\n\n- **Confidence bands for the irreversible hold:** Li, Miao, Krishnan, Padman, \"JEV-as-a-Judge: Accept When Confident, Escalate When Unsure\", [arXiv:2609.26550](https://arxiv.org/abs/2609.26550).\n- **Chunk scoring in the context filter:** GPT Researcher's [context filter](https://docs.gptr.dev/docs/gpt-researcher/gptr/context-filter).\n- **The judge:** [Jev](https://typesafe.ai) by TypeSafe.\n\n## Versioning\n\nFrom 1.0, pi-warden follows semver for: the documented config keys and their defaults (except `compaction.*`, `context.filter.*`, `conscience.*`, and `action.shouldProceed.steer`, which are experimental or beta); the `/warden` commands and their arguments; the `warden_remember`, `warden_loops`, and `warden_recall` tools; the documented `PI_WARDEN_*` environment variables; the widget template tokens; and the exports named in [docs/extension-authors.md](docs/extension-authors.md). The trace file format, the files in pi-warden's data folder, session message types, and every other export are internal and may change in any release.\n\n## Docs\n\n[Guards](docs/guards.md) · [Configuration](docs/configuration.md) · [Commands](docs/commands.md) · [FAQ](docs/faq.md) · [Data handling](docs/data-handling.md) · [Examples](docs/examples.md)\n\n## Development\n\n```bash\nnpm install\nnpm run check        # typecheck + offline tests + build\n```\n\nMIT licensed.\n","readmeFilename":"README.md"}