{"_id":"@ontrails/warden","_rev":"44-f64461b4663878cef50fe03032400141","name":"@ontrails/warden","dist-tags":{"latest":"0.2.3"},"versions":{"1.0.0-beta.0":{"name":"@ontrails/warden","version":"1.0.0-beta.0","_id":"@ontrails/warden@1.0.0-beta.0","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"2cf2bd4511d33cdde9f5b50f0546e92b8af3ed33","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.0.tgz","fileCount":118,"integrity":"sha512-838RwlwxPv3CEfeCcWVV2Of33ybzcFR3WoQTb5190EMupfbiZBMSfet6QD2XDNWfoA/euOpLkSPpo3NEc0AG4w==","signatures":[{"sig":"MEQCIAQu97TEctxjVLc/2hfcxrOxrFZ7rjwvreVL4nGdmsjJAiBW1As0bOraa7DnwVC+/CPa4eeW014QyZMGjsfo+AUx+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272996},"type":"module","exports":{".":"./src/index.ts","./package.json":"./package.json"},"gitHead":"f2a785777ba9cb2d540c0fd79c80b43d4cb934d3","scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_npmVersion":"11.11.0","description":"Governance and contract enforcement for Trails. Lint rules that keep agents (and humans) on trails, surface lock drift detection, and a CLI runner for CI gating.","directories":{},"_nodeVersion":"25.8.1","_hasShrinkwrap":false,"devDependencies":{"zod":"catalog:","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"workspace:*","@ontrails/schema":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.0_1774697885248_0.9825374129876772","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.1":{"name":"@ontrails/warden","version":"1.0.0-beta.1","_id":"@ontrails/warden@1.0.0-beta.1","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"4302a330a31a9e3a5f409241c335a94518212eaf","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.1.tgz","fileCount":118,"integrity":"sha512-+DQIJRZDMQmvT7N3qFiECcKwZN7l6wLqp57NsAhimgu3Z5bYWg4mf5h7xEzMLYxfv+H5EwwZNKJazdChjRS44g==","signatures":[{"sig":"MEUCIGGbTmZTzyjh1UuaGoyR/9+3+Wf0GlTk/2ojxupXS8USAiEAqT9Xh50S0nyH59/IqZxUG6q5wAMWEjlj/uXjdd1HA8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271701},"type":"module","exports":{".":"./src/index.ts","./package.json":"./package.json"},"gitHead":"7065b55568dced6df9f8687288842cdbbfd7f6e4","scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_npmVersion":"11.11.0","description":"AST-based code convention rules for Trails. 10 lint rules that catch contract violations at development time, plus surface lock drift detection and CI formatters.","directories":{},"_nodeVersion":"25.8.1","_hasShrinkwrap":false,"devDependencies":{"zod":"catalog:","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"workspace:^","@ontrails/schema":"workspace:^"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.1_1774700737489_0.2695112169358833","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.2":{"name":"@ontrails/warden","version":"1.0.0-beta.2","_id":"@ontrails/warden@1.0.0-beta.2","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"12eb968b42850e18c806c5c16038bd65d3dd8e9d","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.2.tgz","fileCount":118,"integrity":"sha512-jCL4wjzyfN8YDdCWdQm/llMHEbWImLVO4VzWMd6HWaLYIdBAPJss5iJjwlKQqo6I462q7cCs1T5YpW/ujr6vrw==","signatures":[{"sig":"MEUCICtpap2q8wksvIXSc670wGtc5EYs/+bHRk9VctztsjKkAiEAnY7o93jW24TuNJJFqqWDTJRpTVJ+Ee+8FcX6dSfCxCo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271980},"type":"module","shasum":"12eb968b42850e18c806c5c16038bd65d3dd8e9d","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-jCL4wjzyfN8YDdCWdQm/llMHEbWImLVO4VzWMd6HWaLYIdBAPJss5iJjwlKQqo6I462q7cCs1T5YpW/ujr6vrw==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.0","@ontrails/schema":"^1.0.0-beta.0"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.2_1774701838587_0.5430355573463352","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.3":{"name":"@ontrails/warden","version":"1.0.0-beta.3","_id":"@ontrails/warden@1.0.0-beta.3","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"fc4ff2e1200115bee048c4ed9ce40b4d6269bd22","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.3.tgz","fileCount":118,"integrity":"sha512-pU+xlXR+F0nAAlVQEBgv4uHBIr/13qRu9ukpUg20XtYoCsBF/I7Cx3bKFDbRhe5CG3NHssdaQNUl3R3bnU6pzQ==","signatures":[{"sig":"MEYCIQC6BXHVPfjZ+aWnzAWJDfgpV3qShCFqMwTiA64/Asi9JAIhALELFoxQP3C58VSM8w5GSFP3ZqpdVbTE3udCKRlgHb0H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279641},"type":"module","shasum":"fc4ff2e1200115bee048c4ed9ce40b4d6269bd22","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-pU+xlXR+F0nAAlVQEBgv4uHBIr/13qRu9ukpUg20XtYoCsBF/I7Cx3bKFDbRhe5CG3NHssdaQNUl3R3bnU6pzQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.0","@ontrails/schema":"^1.0.0-beta.0"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.3_1774706013416_0.3366415774662459","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.4":{"name":"@ontrails/warden","version":"1.0.0-beta.4","_id":"@ontrails/warden@1.0.0-beta.4","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"93a87336d29f42f786d36cfdfe10c48bb99aa1dd","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.4.tgz","fileCount":118,"integrity":"sha512-VYuSWJIy6Yseyj0DhcdB1bkN22xeDgZ23jaMfllme290lSbN/AGL9TlG2zHa2OWqsxz8oZX8Sg05uGCm4tgYVA==","signatures":[{"sig":"MEUCIEi4vWfT+c/6vB0VPQMGmM0/zb80uXCOuOtRpD/C5TwwAiEA9NQEeNLSjfqoNH8/kr0RL8D/ENuzvgELcZdAdCAyMfk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":278566},"type":"module","shasum":"93a87336d29f42f786d36cfdfe10c48bb99aa1dd","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-VYuSWJIy6Yseyj0DhcdB1bkN22xeDgZ23jaMfllme290lSbN/AGL9TlG2zHa2OWqsxz8oZX8Sg05uGCm4tgYVA==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.0","@ontrails/schema":"^1.0.0-beta.0"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.4_1774733064789_0.6896291180816345","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.5":{"name":"@ontrails/warden","version":"1.0.0-beta.5","_id":"@ontrails/warden@1.0.0-beta.5","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"9ce25db22165dc9ab12061713ff97696f78a9a74","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.5.tgz","fileCount":124,"integrity":"sha512-+1l62bSOICx4iFKqE2PyJIncUozDHb+Cb9WnAkVbQ1ln0rmzGa8LZoMbcU6WVhVfgHmcEYL/FVklmClhq5HSxw==","signatures":[{"sig":"MEQCICV+bniex28HOamye2Uv4por90Je0C/jqtNKtAx11JaWAiA3ipQscI08vmPz0OpSoqw2wgXkiSRh19V7f/yTl0zeaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306409},"type":"module","shasum":"9ce25db22165dc9ab12061713ff97696f78a9a74","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-+1l62bSOICx4iFKqE2PyJIncUozDHb+Cb9WnAkVbQ1ln0rmzGa8LZoMbcU6WVhVfgHmcEYL/FVklmClhq5HSxw==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.0","@ontrails/schema":"^1.0.0-beta.0"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.5_1774787348324_0.2817450368455052","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.6":{"name":"@ontrails/warden","version":"1.0.0-beta.6","_id":"@ontrails/warden@1.0.0-beta.6","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"0c16840a0f045b1ba919b62ec0141ba15c0f1c05","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.6.tgz","fileCount":124,"integrity":"sha512-iWrBR8V0XA2faKiSrQ+Kpn7T9VcblgixuKKvKR5rh1XUeSMtkzTqWGHmyW3HOTrAkOE5ZT6zkmEJUHcQC+YjJg==","signatures":[{"sig":"MEYCIQDWqMsm4m7RhpEKaaihoJA4aWamehJd2xljHX1dQRbROAIhAIP9TNAhr0kk5G6UM5DFCpLc4eZhQMgBMNW65YFeec6I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324441},"type":"module","shasum":"0c16840a0f045b1ba919b62ec0141ba15c0f1c05","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-iWrBR8V0XA2faKiSrQ+Kpn7T9VcblgixuKKvKR5rh1XUeSMtkzTqWGHmyW3HOTrAkOE5ZT6zkmEJUHcQC+YjJg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.0","@ontrails/schema":"^1.0.0-beta.0"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.6_1774788898106_0.3856213841378475","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.7":{"name":"@ontrails/warden","version":"1.0.0-beta.7","_id":"@ontrails/warden@1.0.0-beta.7","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"59a8a4904a336517edada9381d7f393723cabecf","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.7.tgz","fileCount":124,"integrity":"sha512-Kq8HjJdeWXnndnN0M0Ulxqh5U6K1Il9Bd75Lz2avQ1+MttUAW2CFRcNXdL/0b2ZN58mief0ohr09KmsVR+RHCg==","signatures":[{"sig":"MEUCIQC1dJEjl5KiyZCZxoG7Wad5AVTv2JhslUvnFxuCVH11nAIgehUHv7aOs3pahgwpFhhuuyIt1mjb9B8wGduQbzu4C3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324567},"type":"module","shasum":"59a8a4904a336517edada9381d7f393723cabecf","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-Kq8HjJdeWXnndnN0M0Ulxqh5U6K1Il9Bd75Lz2avQ1+MttUAW2CFRcNXdL/0b2ZN58mief0ohr09KmsVR+RHCg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.6","@ontrails/schema":"^1.0.0-beta.6"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.7_1774790093778_0.09313670508074612","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.8":{"name":"@ontrails/warden","version":"1.0.0-beta.8","_id":"@ontrails/warden@1.0.0-beta.8","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"00510fb2c6947f922bf261a2ec449f05da625924","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.8.tgz","fileCount":124,"integrity":"sha512-ELsJ7Lj6Yz6jYbdNAvacokjDYsxWohOW9svVQVc2vn4rkF9voa336MPdrkc55NdalM+sHBV6akwoRXyCQK0tlw==","signatures":[{"sig":"MEUCIQDt3+ZFAxbcsc1Wm2Qy8V5HT5fWNAmF2qHeDFXTURKHqwIgHVFXRBREubAwIeAfwW4aXc7Nr72RJZL85WvhTOpjnXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":324693},"type":"module","shasum":"00510fb2c6947f922bf261a2ec449f05da625924","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-ELsJ7Lj6Yz6jYbdNAvacokjDYsxWohOW9svVQVc2vn4rkF9voa336MPdrkc55NdalM+sHBV6akwoRXyCQK0tlw==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.6","@ontrails/schema":"^1.0.0-beta.6"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.8_1774795271337_0.8743252001252284","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.9":{"name":"@ontrails/warden","version":"1.0.0-beta.9","_id":"@ontrails/warden@1.0.0-beta.9","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"9391edf55b87ca8ee3488d69b492c92b234b9eee","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.9.tgz","fileCount":205,"integrity":"sha512-rKHxuOmU02aErY0HFlVmsKrVu/+Bxxv2nbDGhas6aZF5OvtWRDlC1IH5Keou2TDsd4TQaKJxqITQLHjmxJmwSQ==","signatures":[{"sig":"MEUCIAEg6v84ILDhONc/L56Yl8M92x4GsxfF0pm4B/pkQJlFAiEAgOWNRS4oYzK5nX6H5NqhtihoiR1ePgvkDQO6fLrr7Lg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":378817},"type":"module","shasum":"9391edf55b87ca8ee3488d69b492c92b234b9eee","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-rKHxuOmU02aErY0HFlVmsKrVu/+Bxxv2nbDGhas6aZF5OvtWRDlC1IH5Keou2TDsd4TQaKJxqITQLHjmxJmwSQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@ontrails/testing":"^1.0.0-beta.8","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.8","@ontrails/schema":"^1.0.0-beta.8"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.9_1774811009582_0.14134900814644613","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.10":{"name":"@ontrails/warden","version":"1.0.0-beta.10","_id":"@ontrails/warden@1.0.0-beta.10","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"e8220355a62c0fe533fbc752d2579085bcdd5390","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.10.tgz","fileCount":205,"integrity":"sha512-y2tk/rP6JC3EqAqKVoYkllr2EX7zcjRTT0w1EEPqnJ3v+Q1NDg/Jx/MF+srKDlCtktvEydC2wNhUDnxe0U6CrA==","signatures":[{"sig":"MEYCIQDoqfaIpU0Br/flkXbJok519uzAhUDzol8ba3qmc9MFRAIhAN8XJgj3Gsxs7O7pfD5ywauPnbnd5TXtzS0r1BTQ01av","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":379786},"type":"module","shasum":"e8220355a62c0fe533fbc752d2579085bcdd5390","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-y2tk/rP6JC3EqAqKVoYkllr2EX7zcjRTT0w1EEPqnJ3v+Q1NDg/Jx/MF+srKDlCtktvEydC2wNhUDnxe0U6CrA==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@ontrails/testing":"^1.0.0-beta.8","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.8","@ontrails/schema":"^1.0.0-beta.8"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.10_1774817639759_0.7103504345804494","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.11":{"name":"@ontrails/warden","version":"1.0.0-beta.11","_id":"@ontrails/warden@1.0.0-beta.11","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"f133ca406f0c9800a3a5a9b9af463af181813d0e","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.11.tgz","fileCount":228,"integrity":"sha512-8Awoz2P4dwWaXrVkso3rOOjwR+43PCtEIMWTdLwqIpySSUxL+zE6qWWPKcoAsA2FuNTIcUxhCN654IeSqiC7/w==","signatures":[{"sig":"MEYCIQDNPwexW5Uri+lYmysb8mdds6avm4MAxq5n1qCyp8IKGgIhAPDM9rdDJD5dk4i13N2DSo3Zvri4pZP1LROF5pwKB0x6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475007},"type":"module","shasum":"f133ca406f0c9800a3a5a9b9af463af181813d0e","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-8Awoz2P4dwWaXrVkso3rOOjwR+43PCtEIMWTdLwqIpySSUxL+zE6qWWPKcoAsA2FuNTIcUxhCN654IeSqiC7/w==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@ontrails/testing":"^1.0.0-beta.8","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.8","@ontrails/schema":"^1.0.0-beta.8"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.11_1774905701788_0.09658116544269624","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.12":{"name":"@ontrails/warden","version":"1.0.0-beta.12","_id":"@ontrails/warden@1.0.0-beta.12","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"0ebc3e9aaa0bc8f8cb431faad3d29ec42c1aa04e","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.12.tgz","fileCount":228,"integrity":"sha512-eumw3N9EP0MtcTBeTDQp2HFFKgb3vgcIrw4RzbZ2rqgCjOVYFKuJIRmy9GUY9xl8FZcbMCsCqMFG7Ij81BuhgQ==","signatures":[{"sig":"MEUCIC+7H4ofydyJdwUsSeXQRXuPUymql/5gEmkEaOef4Ti/AiEA+9uQlx85vxjh9JY5YmdsSXuoh3dkfk721PnYCpBy5qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475139},"type":"module","shasum":"0ebc3e9aaa0bc8f8cb431faad3d29ec42c1aa04e","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-eumw3N9EP0MtcTBeTDQp2HFFKgb3vgcIrw4RzbZ2rqgCjOVYFKuJIRmy9GUY9xl8FZcbMCsCqMFG7Ij81BuhgQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@ontrails/testing":"^1.0.0-beta.12","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.12","@ontrails/schema":"^1.0.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.12_1775046716372_0.40814008717202954","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.13":{"name":"@ontrails/warden","version":"1.0.0-beta.13","_id":"@ontrails/warden@1.0.0-beta.13","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"9494734929f7f423811e6657647039e615ce3729","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.13.tgz","fileCount":260,"integrity":"sha512-0FBNCTov1+nKn7YTmj8rP0PFFhqW5wcavYysgGk9bcZY8c4FdC+YsHLkdqbxjDvwYmT7i95km7mxa1knIYyXPw==","signatures":[{"sig":"MEYCIQDms3P5hB+UAAlZS2bsI/jIwmIwNcgkTcadYbbOLQ86egIhAKWLnwBGNrFfGghwiehNTB8+bKLTkYk4fbiJVVDhHgCh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549098},"type":"module","shasum":"9494734929f7f423811e6657647039e615ce3729","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-0FBNCTov1+nKn7YTmj8rP0PFFhqW5wcavYysgGk9bcZY8c4FdC+YsHLkdqbxjDvwYmT7i95km7mxa1knIYyXPw==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@ontrails/testing":"^1.0.0-beta.12","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.12","@ontrails/schema":"^1.0.0-beta.12"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.13_1775151150707_0.46441402623228334","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.14":{"name":"@ontrails/warden","version":"1.0.0-beta.14","_id":"@ontrails/warden@1.0.0-beta.14","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"49614c80e9b0eca285b27592aaa4e5546a362393","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.14.tgz","fileCount":275,"integrity":"sha512-XMw7uJQTZRR9wTD6Cc1DWepUhtuobMr1gw4mCivS4ZhaLyhtIVkFZbpW34/R9+xiC0KD/qAItnM3QXUjyhFJjg==","signatures":[{"sig":"MEUCIQCqeHYedMl7M4rMK8IJEFsS0h3hCAzQXPd9gh1iwO/LlQIgeR9KfJEbTtMMSu8+YX8B4pcA7BZHgwKbGRBQyGpMIoQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":583087},"type":"module","shasum":"49614c80e9b0eca285b27592aaa4e5546a362393","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-XMw7uJQTZRR9wTD6Cc1DWepUhtuobMr1gw4mCivS4ZhaLyhtIVkFZbpW34/R9+xiC0KD/qAItnM3QXUjyhFJjg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@ontrails/testing":"^1.0.0-beta.13","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.13","@ontrails/schema":"^1.0.0-beta.13"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.14_1775385734887_0.628548790162081","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.15":{"name":"@ontrails/warden","version":"1.0.0-beta.15","_id":"@ontrails/warden@1.0.0-beta.15","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"dist":{"shasum":"6bfc90b69f0f2c0576f037d0db3d59cd2d559099","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.15.tgz","fileCount":503,"integrity":"sha512-ulE1PIps2aECX0QQSmc97SZggZsMkGiswjQVf5gjA/pbKxfIB1SGE/uatD2b+CaPJ1mhwQPgmO2k59QSgpWNpg==","signatures":[{"sig":"MEQCIHXknwlOb8ZuM+8D6QBxexeSxWIK4YmqTONhsvUj8HScAiBJBaGJ8NFzO+KE+spzVOc79nChFo2GMzmfn4KVtbpdvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1778060},"type":"module","shasum":"6bfc90b69f0f2c0576f037d0db3d59cd2d559099","exports":{".":"./src/index.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-ulE1PIps2aECX0QQSmc97SZggZsMkGiswjQVf5gjA/pbKxfIB1SGE/uatD2b+CaPJ1mhwQPgmO2k59QSgpWNpg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@ontrails/permits":"^1.0.0-beta.14"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","@ontrails/testing":"^1.0.0-beta.14","@oxc-project/types":"^0.122.0"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.14","@ontrails/schema":"^1.0.0-beta.14"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.15_1777054172222_0.5766309649932644","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.16":{"name":"@ontrails/warden","version":"1.0.0-beta.16","_id":"@ontrails/warden@1.0.0-beta.16","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"747b4fdee5a4785368cca93165f0d07c729227a7","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.16.tgz","fileCount":128,"integrity":"sha512-AT6xdEFpKTgvqI+6fYUgnHoKE4t5iqbaUyWTQuv99OzwtTc10/8ZCgtzwl4C5iReHy6WwIp+uqGyfhWs5jKTGA==","signatures":[{"sig":"MEUCIQCBk3endf3owpMgsAlnvBV6LtKsazrlLfC6NluxZduc7AIgQuRNEqOC7Xfp0Zh/rBWL9C9KCGRyCGehL8DbrT2LYJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":774893},"type":"module","shasum":"747b4fdee5a4785368cca93165f0d07c729227a7","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-AT6xdEFpKTgvqI+6fYUgnHoKE4t5iqbaUyWTQuv99OzwtTc10/8ZCgtzwl4C5iReHy6WwIp+uqGyfhWs5jKTGA==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.15","@ontrails/store":"^1.0.0-beta.15","@ontrails/permits":"^1.0.0-beta.15"},"_hasShrinkwrap":false,"devDependencies":{"@ontrails/config":"^1.0.0-beta.15","@ontrails/testing":"^1.0.0-beta.15"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.15","@ontrails/topographer":"^1.0.0-beta.15"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.16_1778682412796_0.7317257851102097","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.17":{"name":"@ontrails/warden","version":"1.0.0-beta.17","_id":"@ontrails/warden@1.0.0-beta.17","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"a7304722a5c1f5493bd2a1ac3c76bd801cdb0236","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.17.tgz","fileCount":128,"integrity":"sha512-dxWZQok2nSggg8b60A5d0u9XDV6sUoV1RGCN03XhsOfHa5woUYanoftEsz2N//9oJYJFI3HIX3SP5UPtz5r53Q==","signatures":[{"sig":"MEQCIAEFkWARoxjCdYBFjpUsmnQ8hrziJK1qnZaFMCQ3R4FyAiBIQ156W2ozB54Z4bi7zzCCtzVMFRtDS0aJT1DysgeKMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":775172},"type":"module","shasum":"a7304722a5c1f5493bd2a1ac3c76bd801cdb0236","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-dxWZQok2nSggg8b60A5d0u9XDV6sUoV1RGCN03XhsOfHa5woUYanoftEsz2N//9oJYJFI3HIX3SP5UPtz5r53Q==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.16","@ontrails/store":"^1.0.0-beta.16","@ontrails/permits":"^1.0.0-beta.16"},"_hasShrinkwrap":false,"devDependencies":{"@ontrails/config":"^1.0.0-beta.16","@ontrails/testing":"^1.0.0-beta.16"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.16","@ontrails/topographer":"^1.0.0-beta.16"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.17_1778760572276_0.27603548677516687","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.18":{"name":"@ontrails/warden","version":"1.0.0-beta.18","_id":"@ontrails/warden@1.0.0-beta.18","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"768994ad82cbfdc7bd2ab7ba0516d1dc1fcd7f08","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.18.tgz","fileCount":128,"integrity":"sha512-xTEosjjgT3ee4WLkixMgGAc9/698T7DIf9cMW1tXN9ZPLvqisReuJoFySVqbtrpleILX40agLGGnJmrHiXl2LA==","signatures":[{"sig":"MEQCID6IM7V7lW119H5OxXcEoRcg6WXqr9Bdn9VU7WPuFi7AAiA07Cwq8n7DQbM+YQ7KlXLttErgCLnuVNW9lJk5SdoEqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":775375},"type":"module","shasum":"768994ad82cbfdc7bd2ab7ba0516d1dc1fcd7f08","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-xTEosjjgT3ee4WLkixMgGAc9/698T7DIf9cMW1tXN9ZPLvqisReuJoFySVqbtrpleILX40agLGGnJmrHiXl2LA==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.17","@ontrails/store":"^1.0.0-beta.17","@ontrails/permits":"^1.0.0-beta.17"},"_hasShrinkwrap":false,"devDependencies":{"@ontrails/config":"^1.0.0-beta.17","@ontrails/testing":"^1.0.0-beta.17"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.17","@ontrails/topographer":"^1.0.0-beta.17"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.18_1779127347986_0.5674966852845087","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.19":{"name":"@ontrails/warden","version":"1.0.0-beta.19","_id":"@ontrails/warden@1.0.0-beta.19","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"40127aa4b33cab18d7329294f795bee8561cbcea","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.19.tgz","fileCount":147,"integrity":"sha512-TcYKhassISsadKs2PUFSJN8MERsVGzXylplENU8khW9/bCbdPukfq7gL/MXFTNUIZLxaP0H2dXF9uvCnSJ6xFg==","signatures":[{"sig":"MEUCIQCTF3C0vUObP0u7XnhFf2QAH3nn/5MxpSrluS6uVG35TgIgeJywiDx0fn8xbJ1EcYj2nBukxFbXI2+vaYERlCtdTKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":900026},"type":"module","shasum":"40127aa4b33cab18d7329294f795bee8561cbcea","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-TcYKhassISsadKs2PUFSJN8MERsVGzXylplENU8khW9/bCbdPukfq7gL/MXFTNUIZLxaP0H2dXF9uvCnSJ6xFg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.19","@ontrails/store":"^1.0.0-beta.19","@ontrails/permits":"^1.0.0-beta.19","@ontrails/adapter-kit":"^1.0.0-beta.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/config":"^1.0.0-beta.19","@ontrails/testing":"^1.0.0-beta.19"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.19","@ontrails/topographer":"^1.0.0-beta.19"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.19_1780496213075_0.1136952981715682","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.21":{"name":"@ontrails/warden","version":"1.0.0-beta.21","_id":"@ontrails/warden@1.0.0-beta.21","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"19a20fec47a65e2c241e64081b0dc5930c9a251d","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.21.tgz","fileCount":153,"integrity":"sha512-Y374XxxEYOQtqfS5BKPZy9CAWwExbQeiBQVsCqFJ9j+R/ULjF8FGUNoDR5ROP8J2HDVnZSRraEPU2UI7MBdq2w==","signatures":[{"sig":"MEYCIQCbULCuVO6FkhsU0QqlA80Tdnbk19KL6/hpV4IE3U9MFQIhALraHqA7YnTiBUFip3kGWnXVyumT3sjD/aibY9btSlOC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":941196},"type":"module","shasum":"19a20fec47a65e2c241e64081b0dc5930c9a251d","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-Y374XxxEYOQtqfS5BKPZy9CAWwExbQeiBQVsCqFJ9j+R/ULjF8FGUNoDR5ROP8J2HDVnZSRraEPU2UI7MBdq2w==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.21","@ontrails/store":"^1.0.0-beta.21","@ontrails/permits":"^1.0.0-beta.21","@ontrails/adapter-kit":"^1.0.0-beta.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/config":"^1.0.0-beta.21","@ontrails/testing":"^1.0.0-beta.21"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.21","@ontrails/topographer":"^1.0.0-beta.21"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.21_1781199620388_0.8031598007692653","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.22":{"name":"@ontrails/warden","version":"1.0.0-beta.22","_id":"@ontrails/warden@1.0.0-beta.22","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"344991310b6d511317bdea6f9979f85d6b822f8a","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.22.tgz","fileCount":153,"integrity":"sha512-xQrbTtlFtDfvCww3jiK20ZxhXuI/mlfO6vrokZwwOob9lm9hj14v3lT2Sbt/wvB8NkF0NG3zAgPrCac8JEVpVQ==","signatures":[{"sig":"MEQCIBpI+mX0at/I9ZnJAgOesv/5q1HbRIRcRrAC+AlYyTxiAiBktPNn0XvWayCAKcaPglVvWv7GwF1ra3JFQ+72g7QJKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":941437},"type":"module","shasum":"344991310b6d511317bdea6f9979f85d6b822f8a","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-xQrbTtlFtDfvCww3jiK20ZxhXuI/mlfO6vrokZwwOob9lm9hj14v3lT2Sbt/wvB8NkF0NG3zAgPrCac8JEVpVQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.22","@ontrails/store":"^1.0.0-beta.22","@ontrails/permits":"^1.0.0-beta.22","@ontrails/adapter-kit":"^1.0.0-beta.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/config":"^1.0.0-beta.22","@ontrails/testing":"^1.0.0-beta.22"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.22","@ontrails/topographer":"^1.0.0-beta.22"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.22_1781202359095_0.9738245418030471","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.23":{"name":"@ontrails/warden","version":"1.0.0-beta.23","_id":"@ontrails/warden@1.0.0-beta.23","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"f50c8720a11dc437a483ebc8837c4885efbba370","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.23.tgz","fileCount":153,"integrity":"sha512-jVySqRPVW3cfX1VS4293DeUH7h/naaWXwaQVXBi8woEliaG5XQqfmEPsp8lKmTHCB32BCkGzeIHG4c4E9lILwg==","signatures":[{"sig":"MEUCIQCrMopEu5fQCHKUYRZLlL9lq0bwwffcJwknFowHxyVOCAIgastXLeAeBrQBNMEzP09FxrYJ7ghe5Vu+rk0zhkCY+6U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":941678},"type":"module","shasum":"f50c8720a11dc437a483ebc8837c4885efbba370","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-jVySqRPVW3cfX1VS4293DeUH7h/naaWXwaQVXBi8woEliaG5XQqfmEPsp8lKmTHCB32BCkGzeIHG4c4E9lILwg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.23","@ontrails/store":"^1.0.0-beta.23","@ontrails/permits":"^1.0.0-beta.23","@ontrails/adapter-kit":"^1.0.0-beta.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/config":"^1.0.0-beta.23","@ontrails/testing":"^1.0.0-beta.23"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.23","@ontrails/topographer":"^1.0.0-beta.23"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.23_1781266869443_0.8126321353975821","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.24":{"name":"@ontrails/warden","version":"1.0.0-beta.24","_id":"@ontrails/warden@1.0.0-beta.24","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"7e358ae0ee8e9b376436f0bbb05b6b46bfd2a720","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.24.tgz","fileCount":153,"integrity":"sha512-shSlGdKfCmYLXs45895YylM/SFkLZtQzHNRNCCz/EvEY8ckV92jQNnnDkLmeRfH0sFKlt85t3qRr76aquUqCqQ==","signatures":[{"sig":"MEQCIGvz301TQXsUdIoBf2dCa3aImmo/pdz8chf2Pk0oXywjAiB7ofI3nrXVnlrzuIGhiERZozxBT0MvP4V8hg5cqSc5tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":941919},"type":"module","shasum":"7e358ae0ee8e9b376436f0bbb05b6b46bfd2a720","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-shSlGdKfCmYLXs45895YylM/SFkLZtQzHNRNCCz/EvEY8ckV92jQNnnDkLmeRfH0sFKlt85t3qRr76aquUqCqQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.24","@ontrails/store":"^1.0.0-beta.24","@ontrails/permits":"^1.0.0-beta.24","@ontrails/adapter-kit":"^1.0.0-beta.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/config":"^1.0.0-beta.24","@ontrails/testing":"^1.0.0-beta.24"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.24","@ontrails/topographer":"^1.0.0-beta.24"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.24_1781269868715_0.5411854779103502","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.29":{"name":"@ontrails/warden","version":"1.0.0-beta.29","_id":"@ontrails/warden@1.0.0-beta.29","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"ab367136e4636bdc175bdad06aa42d6ac9be6f5c","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.29.tgz","fileCount":164,"integrity":"sha512-cnf7i86/EXNiUqNsk8/9q4N1zSM3P5kf3e0p3kx8/HMWBsz6gshRyCbiX39ZEJx5cKnBEm47D1HYhDxlzF/vvw==","signatures":[{"sig":"MEUCIQCcDwxl492JD5000OF/3cH5tmWqisGEr2SJsVdFSnXKAQIgQYP1YHer5u9rD/dcpbUee521Pob3ctrrc91h1c4Hdq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1037848},"type":"module","shasum":"ab367136e4636bdc175bdad06aa42d6ac9be6f5c","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-cnf7i86/EXNiUqNsk8/9q4N1zSM3P5kf3e0p3kx8/HMWBsz6gshRyCbiX39ZEJx5cKnBEm47D1HYhDxlzF/vvw==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-walker":"^1.0.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.29","@ontrails/store":"^1.0.0-beta.29","@ontrails/config":"^1.0.0-beta.29","@ontrails/permits":"^1.0.0-beta.29","@ontrails/adapter-kit":"^1.0.0-beta.29"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.29"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.29","@ontrails/topographer":"^1.0.0-beta.29"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.29_1782404751788_0.4689227478009763","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.30":{"name":"@ontrails/warden","version":"1.0.0-beta.30","_id":"@ontrails/warden@1.0.0-beta.30","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"d4171fe408622d009ab3df6ede85041fd19fef3c","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.30.tgz","fileCount":164,"integrity":"sha512-wy5fXiT4auE7WJvrB061FRi0hFYByvOWtUbs7uBJEWMtriaFL6EGnrBzQlMiO8ZCkmGqmC+VT4Za2yQJjje+dg==","signatures":[{"sig":"MEYCIQDcRg6oUiKpdaLDcBgCDRdppGUmIT3kYzDYzK+7Fl1RwAIhALDhth/DSveJQsVOuiunLGJQxphyUEpT+cQ/doifh36a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1038122},"type":"module","shasum":"d4171fe408622d009ab3df6ede85041fd19fef3c","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-wy5fXiT4auE7WJvrB061FRi0hFYByvOWtUbs7uBJEWMtriaFL6EGnrBzQlMiO8ZCkmGqmC+VT4Za2yQJjje+dg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-walker":"^1.0.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.30","@ontrails/store":"^1.0.0-beta.30","@ontrails/config":"^1.0.0-beta.30","@ontrails/permits":"^1.0.0-beta.30","@ontrails/adapter-kit":"^1.0.0-beta.30"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.30"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.30","@ontrails/topographer":"^1.0.0-beta.30"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.30_1782407835711_0.2520787575621797","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.32":{"name":"@ontrails/warden","version":"1.0.0-beta.32","_id":"@ontrails/warden@1.0.0-beta.32","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"58058806606582bf2b57e277671e6a9dd9f411ea","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.32.tgz","fileCount":164,"integrity":"sha512-KziXRzHDgopuQyZuNNdTXsSWaXkuCjsM6P6w4T00p6JZ+V44YgxhsoocF6QhQeOulZAmj85Fb6+MNWC8RMHZ7w==","signatures":[{"sig":"MEYCIQCpAK33IVhPtOc0PrAqRrN94z5tzZuSQnuquSJoxpA3JAIhAPVRp3MEfDHGnIr7NHlg4qwTsijndVRu9VEhxsEswlEV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1041879},"type":"module","shasum":"58058806606582bf2b57e277671e6a9dd9f411ea","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-KziXRzHDgopuQyZuNNdTXsSWaXkuCjsM6P6w4T00p6JZ+V44YgxhsoocF6QhQeOulZAmj85Fb6+MNWC8RMHZ7w==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-walker":"^1.0.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.32","@ontrails/store":"^1.0.0-beta.32","@ontrails/config":"^1.0.0-beta.32","@ontrails/permits":"^1.0.0-beta.32","@ontrails/adapter-kit":"^1.0.0-beta.32"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.32"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.32","@ontrails/topographer":"^1.0.0-beta.32"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.32_1782840654343_0.8276958417990234","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.39":{"name":"@ontrails/warden","version":"1.0.0-beta.39","_id":"@ontrails/warden@1.0.0-beta.39","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"33a9f4ba32d29a43573caef3cf7f1120071fce85","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.39.tgz","fileCount":175,"integrity":"sha512-nh8PgtKYvcAjygWW8i82ZcdFlR3zgNvFkhP87BzxaJKNx4nFcoBJ/z40P99JcBQ8c+qAax2e9cRNWA3WWBc+OQ==","signatures":[{"sig":"MEYCIQCbOV4FbTUN6pX5qj22Nd74bXTJqy3CKxk2vYVsA883pgIhAM+yFMxbHcv2nFcccpNxOa0NpVE5xZlPn+ONwbQIVkUE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1139499},"type":"module","shasum":"33a9f4ba32d29a43573caef3cf7f1120071fce85","exports":{".":"./src/index.ts","./ast":"./src/ast.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-nh8PgtKYvcAjygWW8i82ZcdFlR3zgNvFkhP87BzxaJKNx4nFcoBJ/z40P99JcBQ8c+qAax2e9cRNWA3WWBc+OQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-parser":"^0.121.0","oxc-walker":"^1.0.0","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.39","@ontrails/store":"^1.0.0-beta.39","@ontrails/config":"^1.0.0-beta.39","@ontrails/permits":"^1.0.0-beta.39","@ontrails/adapter-kit":"^1.0.0-beta.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.39"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.39","@ontrails/topographer":"^1.0.0-beta.39"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.39_1783432293636_0.7244988028207218","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.41":{"name":"@ontrails/warden","version":"1.0.0-beta.41","_id":"@ontrails/warden@1.0.0-beta.41","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"f3396b777ce2eb0fe9f742513c8073a0faaf78d8","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.41.tgz","fileCount":182,"integrity":"sha512-kdcihzXKa3fFC2P3WJFRF10tBdKWd0dpYAgW0l0gG3kqYHb2NUvylnprCs3XLvdWYblwI9qPohcLUPzdcg58fg==","signatures":[{"sig":"MEUCIQCsQbx4ZOa7rzWexNhaoI47TGWzoIbS0uGccXs40ceatgIga0TDdrtw479KGvKG+crZbdFbWdD0+XfbCW3LYgYRxjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1112970},"type":"module","shasum":"f3396b777ce2eb0fe9f742513c8073a0faaf78d8","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-kdcihzXKa3fFC2P3WJFRF10tBdKWd0dpYAgW0l0gG3kqYHb2NUvylnprCs3XLvdWYblwI9qPohcLUPzdcg58fg==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.41","@ontrails/store":"^1.0.0-beta.41","@ontrails/config":"^1.0.0-beta.41","@ontrails/source":"^1.0.0-beta.41","@ontrails/permits":"^1.0.0-beta.41","@ontrails/adapter-kit":"^1.0.0-beta.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.41"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.41","@ontrails/topography":"^1.0.0-beta.41"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.41_1783856403276_0.6810747344215395","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.42":{"name":"@ontrails/warden","version":"1.0.0-beta.42","_id":"@ontrails/warden@1.0.0-beta.42","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"2dc5ebed53e09b49cfdabc727716889f4c947df2","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.42.tgz","fileCount":182,"integrity":"sha512-3OR1Q/O0Kix/7kI5RrALLuceot8fRjBfVRWWi6ve9Mc+369SeDnGyaCpLbKhP8cbwaBE2o98FO93r65RYDsvWw==","signatures":[{"sig":"MEQCIDLg3ckGuMJlkzMYEJbnosXM8zVDx2VAr//hWsuziMmuAiBVEdKmSIjDlmT66EzuI/FRzDYVFBGrCYWlwlYB/UMKOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1112988},"type":"module","shasum":"2dc5ebed53e09b49cfdabc727716889f4c947df2","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-3OR1Q/O0Kix/7kI5RrALLuceot8fRjBfVRWWi6ve9Mc+369SeDnGyaCpLbKhP8cbwaBE2o98FO93r65RYDsvWw==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.42","@ontrails/store":"^1.0.0-beta.42","@ontrails/config":"^1.0.0-beta.42","@ontrails/source":"^1.0.0-beta.42","@ontrails/permits":"^1.0.0-beta.42","@ontrails/adapter-kit":"^1.0.0-beta.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.42"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.42","@ontrails/topography":"^1.0.0-beta.42"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.42_1783976112851_0.9913429339004836","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.43":{"name":"@ontrails/warden","version":"1.0.0-beta.43","_id":"@ontrails/warden@1.0.0-beta.43","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"1435b5d10e065650774dee57a04442f7b478d194","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.43.tgz","fileCount":185,"integrity":"sha512-Q82MebmKeWNKVo5HQKG6VZzxNlxdjCxyQohnWDDY5g0zFOp1PqUiE+pOgirtMmB/wkqU0DQoRPK4Bbw8WF7YXQ==","signatures":[{"sig":"MEUCIQCYiOezT05LJRWZA5YbgTFkiJQpA6lyNKNSR96qJkKWLgIgHp8WdZV8OkQ84T7txGk25GxAUUohY75b++yafr0Cqow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1180885},"type":"module","shasum":"1435b5d10e065650774dee57a04442f7b478d194","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_integrity":"sha512-Q82MebmKeWNKVo5HQKG6VZzxNlxdjCxyQohnWDDY5g0zFOp1PqUiE+pOgirtMmB/wkqU0DQoRPK4Bbw8WF7YXQ==","_npmVersion":"10.8.3","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.43","@ontrails/store":"^1.0.0-beta.43","@ontrails/config":"^1.0.0-beta.43","@ontrails/source":"^1.0.0-beta.43","@ontrails/permits":"^1.0.0-beta.43","@ontrails/adapter-kit":"^1.0.0-beta.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.43"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.43","@ontrails/topography":"^1.0.0-beta.43"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.43_1784121147877_0.8195282288659993","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.45":{"name":"@ontrails/warden","version":"1.0.0-beta.45","_id":"@ontrails/warden@1.0.0-beta.45","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"d39b734470c476bb65181af17d4177604363f3f8","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.45.tgz","fileCount":185,"integrity":"sha512-Fa0tR/zpQq+pRySSB6OM8hktrYm9hAbdqs+ZglfIuinBeAqJ2sehJUknzH2f1jWqAosSqOLZXTverz772bfhtw==","signatures":[{"sig":"MEQCIFV5pMqILZyxtt87+tGyJeu4XMXY0ZV/YQzfsTSrPaigAiAxhkxp/t9nKEndhrEFN6/Ip50TtHriDwY399ZHbuL2jw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@1.0.0-beta.45","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1183854},"type":"module","_from":"file:/tmp/trails-publish-0XI7xQ/ontrails-warden-1.0.0-beta.45.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-0XI7xQ/ontrails-warden-1.0.0-beta.45.tgz","_integrity":"sha512-Fa0tR/zpQq+pRySSB6OM8hktrYm9hAbdqs+ZglfIuinBeAqJ2sehJUknzH2f1jWqAosSqOLZXTverz772bfhtw==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.45","@ontrails/store":"^1.0.0-beta.45","@ontrails/config":"^1.0.0-beta.45","@ontrails/source":"^1.0.0-beta.45","@ontrails/permits":"^1.0.0-beta.45","@ontrails/adapter-kit":"^1.0.0-beta.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.45"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.45","@ontrails/topography":"^1.0.0-beta.45"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.45_1784207531555_0.2370893770658662","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.46":{"name":"@ontrails/warden","version":"1.0.0-beta.46","_id":"@ontrails/warden@1.0.0-beta.46","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"5ca2bc2c19b82944fe49b62b44d04b6029ff22c4","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.46.tgz","fileCount":186,"integrity":"sha512-vvbb4qOE0kVUB76HJA6cdTmO3jNC0lBjcVAjiPva9Pap47lqwWYF9L9h+57ZTq6y10Mygt20QzeFL/vAraPQGw==","signatures":[{"sig":"MEUCIQDZGXf1ULR1n8InEN6JcUOneWFRnMoCejmQQcWo48xFRAIgTV5LmZs+zL+L966OWqYLadGL5QMReq4CxP4VDrtv8ew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@1.0.0-beta.46","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1187575},"type":"module","_from":"file:/tmp/trails-publish-lE2fr8/ontrails-warden-1.0.0-beta.46.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-lE2fr8/ontrails-warden-1.0.0-beta.46.tgz","_integrity":"sha512-vvbb4qOE0kVUB76HJA6cdTmO3jNC0lBjcVAjiPva9Pap47lqwWYF9L9h+57ZTq6y10Mygt20QzeFL/vAraPQGw==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.46","@ontrails/store":"^1.0.0-beta.46","@ontrails/config":"^1.0.0-beta.46","@ontrails/source":"^1.0.0-beta.46","@ontrails/permits":"^1.0.0-beta.46","@ontrails/adapter-kit":"^1.0.0-beta.46"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.46"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.46","@ontrails/topography":"^1.0.0-beta.46"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.46_1784380890611_0.7152107195561923","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.47":{"name":"@ontrails/warden","version":"1.0.0-beta.47","_id":"@ontrails/warden@1.0.0-beta.47","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"cd49e0f3f4df1920c57f8e2a758e0b78f2c6779d","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.47.tgz","fileCount":186,"integrity":"sha512-9u7ZfGwb3g47ewTYLtVrCooM+8MY2mQfzG8FGz1HPdXuEbugzJqOQy0AAEVM9YwoLuvug8sQZrGKXEjHiAP0HA==","signatures":[{"sig":"MEQCIFd666a18yBQe3PLoGnCTrAUZ1trCwymk7R8l9HBI49bAiAGFy0pvjDSi9E1a29jvkkQqGHSUvEG5F/+qFvfznT20g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1192284},"type":"module","_from":"file:/var/folders/b3/yvjlcyr172z__9w1kvv4dl3c0000gn/T/trails-publish-A8U1nt/ontrails-warden-1.0.0-beta.47.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"galligan","email":"matt.galligan@gmail.com"},"_resolved":"/var/folders/b3/yvjlcyr172z__9w1kvv4dl3c0000gn/T/trails-publish-A8U1nt/ontrails-warden-1.0.0-beta.47.tgz","_integrity":"sha512-9u7ZfGwb3g47ewTYLtVrCooM+8MY2mQfzG8FGz1HPdXuEbugzJqOQy0AAEVM9YwoLuvug8sQZrGKXEjHiAP0HA==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.12.1","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.47","@ontrails/store":"^1.0.0-beta.47","@ontrails/config":"^1.0.0-beta.47","@ontrails/source":"^1.0.0-beta.47","@ontrails/permits":"^1.0.0-beta.47","@ontrails/adapter-kit":"^1.0.0-beta.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.47"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.47","@ontrails/topography":"^1.0.0-beta.47"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.47_1786043799601_0.6472005204718871","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.48":{"name":"@ontrails/warden","version":"1.0.0-beta.48","_id":"@ontrails/warden@1.0.0-beta.48","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"14849048a2785f93b75a9043ff7b9507795e41fd","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.48.tgz","fileCount":186,"integrity":"sha512-t78iwbeiBxEHqzVTbKbchUthy8MxVjyC0z7CAke1D5nn5gdjVoiM/SC59GmqTnW6tIz3kyiKU+OMOwy4bf7yyQ==","signatures":[{"sig":"MEQCIAby9BTYOCfXdUgGgTUvfV680Nl0owKWP3fWOTyKbOE/AiBYsnXD09Y82VNJixQMs2qsXlG105jgD/AcBGSYbf35FA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@1.0.0-beta.48","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1192302},"type":"module","_from":"file:/tmp/trails-publish-HEaf8Q/ontrails-warden-1.0.0-beta.48.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-HEaf8Q/ontrails-warden-1.0.0-beta.48.tgz","_integrity":"sha512-t78iwbeiBxEHqzVTbKbchUthy8MxVjyC0z7CAke1D5nn5gdjVoiM/SC59GmqTnW6tIz3kyiKU+OMOwy4bf7yyQ==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.48","@ontrails/store":"^1.0.0-beta.48","@ontrails/config":"^1.0.0-beta.48","@ontrails/source":"^1.0.0-beta.48","@ontrails/permits":"^1.0.0-beta.48","@ontrails/adapter-kit":"^1.0.0-beta.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.48"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.48","@ontrails/topography":"^1.0.0-beta.48"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.48_1786476688406_0.0073792935554883865","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.49":{"name":"@ontrails/warden","version":"1.0.0-beta.49","_id":"@ontrails/warden@1.0.0-beta.49","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"88934c3e6a1cbdeeda47e44126e0c93a5c14ab69","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.49.tgz","fileCount":186,"integrity":"sha512-3eyDon7yiNIu45PwT9j4LfKAX6Ht+Jpi1r7uueu2BhT9Yel/4Ub7Q7MpPqCKhQnXKonOGvID+4jhYepO3EnPDw==","signatures":[{"sig":"MEUCIQCw3d4+BxrW2RUC4xMnLA6KL/gZ9kZ/EWHbJs2SuzbcXgIgfFh0cskdLY2hDMrs7rPFlthFTQ9ItDI3UH+VzUDnaOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@1.0.0-beta.49","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1192320},"type":"module","_from":"file:/tmp/trails-publish-o2kgIA/ontrails-warden-1.0.0-beta.49.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-o2kgIA/ontrails-warden-1.0.0-beta.49.tgz","_integrity":"sha512-3eyDon7yiNIu45PwT9j4LfKAX6Ht+Jpi1r7uueu2BhT9Yel/4Ub7Q7MpPqCKhQnXKonOGvID+4jhYepO3EnPDw==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.49","@ontrails/store":"^1.0.0-beta.49","@ontrails/config":"^1.0.0-beta.49","@ontrails/source":"^1.0.0-beta.49","@ontrails/permits":"^1.0.0-beta.49","@ontrails/adapter-kit":"^1.0.0-beta.49"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.49"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.49","@ontrails/topography":"^1.0.0-beta.49"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.49_1787263113252_0.2956984233738187","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-beta.50":{"name":"@ontrails/warden","version":"1.0.0-beta.50","_id":"@ontrails/warden@1.0.0-beta.50","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"7dc613271bac59bc40f9816572cb8414f988eb5a","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-1.0.0-beta.50.tgz","fileCount":186,"integrity":"sha512-MmukRzE6Q6OCElh2ZLC8hC3joU0pCoed+jUwhl+mVW5sORXc1Pxwr1gm3pUBFSAzIRdjSF+Ch5D3ymKC7jyYcA==","signatures":[{"sig":"MEQCIEUbtmvo15ZXbB1HsePZ5ci1E3HypPFlJZ0kaJ4b5onjAiBFsiS3mzC9CUxDpnF9vYxnv3hngBnH36LyO0pPXaUnbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@1.0.0-beta.50","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1192338},"type":"module","_from":"file:/tmp/trails-publish-2RBD1x/ontrails-warden-1.0.0-beta.50.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-2RBD1x/ontrails-warden-1.0.0-beta.50.tgz","_integrity":"sha512-MmukRzE6Q6OCElh2ZLC8hC3joU0pCoed+jUwhl+mVW5sORXc1Pxwr1gm3pUBFSAzIRdjSF+Ch5D3ymKC7jyYcA==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^1.0.0-beta.50","@ontrails/store":"^1.0.0-beta.50","@ontrails/config":"^1.0.0-beta.50","@ontrails/source":"^1.0.0-beta.50","@ontrails/permits":"^1.0.0-beta.50","@ontrails/adapter-kit":"^1.0.0-beta.50"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@ontrails/testing":"^1.0.0-beta.50"},"peerDependencies":{"@ontrails/core":"^1.0.0-beta.50","@ontrails/topography":"^1.0.0-beta.50"},"_npmOperationalInternal":{"tmp":"tmp/warden_1.0.0-beta.50_1787266790319_0.15554920545846063","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ontrails/warden","version":"0.2.0","_id":"@ontrails/warden@0.2.0","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"bb1d61071f5c226088e0eb632b8009ce9f811e8a","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-0.2.0.tgz","fileCount":188,"integrity":"sha512-DDiies5qbVM9yAjzcRLDj+5QxKuN5vnS+YEV7ofEI6mh0s3epsu3Cz17SOtz+GmU3CuqWvMaaFYlpwqTFuWLJw==","signatures":[{"sig":"MEQCICGLri4hElNH2R9nE8Gsr32gllqDxqyRVDhNvAy3vnf1AiA5Y+K05fo4zGouoKYlL/IJRMEV7pi9lOrRcgOgmRwypg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIByVLA8fUXl9R8oJXq1Jau/wK1cwF1rOTE7+y8EfqRojAiA7WhNEbLePTbzEfBbPi4OBTSafFOC/jCDQsz/U8Om27w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1284924},"type":"module","_from":"file:/tmp/trails-publish-qNRFHe/ontrails-warden-0.2.0.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-qNRFHe/ontrails-warden-0.2.0.tgz","_integrity":"sha512-DDiies5qbVM9yAjzcRLDj+5QxKuN5vnS+YEV7ofEI6mh0s3epsu3Cz17SOtz+GmU3CuqWvMaaFYlpwqTFuWLJw==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^0.2.0","@ontrails/store":"^0.2.0","@ontrails/config":"^0.2.0","@ontrails/source":"^0.2.0","@ontrails/permits":"^0.2.0","@ontrails/adapter-kit":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"@ontrails/testing":"^0.2.0"},"peerDependencies":{"@ontrails/core":"^0.2.0","@ontrails/topography":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/warden_0.2.0_1789154781157_0.9436411877745252","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ontrails/warden","version":"0.2.1","_id":"@ontrails/warden@0.2.1","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"f5e7e64365e048cffc7240b4aeb0f2e207a0699e","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-0.2.1.tgz","fileCount":188,"integrity":"sha512-GHjn9D3dONWFFL2oO+y+gfXZnUIuxIVZ9wTKSqsA7euJMnf2iU/RAms9qMbuOKJROIJvpCKwsgFZ6ibH3rc81g==","signatures":[{"sig":"MEQCIAwbkWNH7/WRiL0K/YiF6D2EoQt4m14Yn1yYW65PcCwrAiBtJpMdvQjRoejx5AKTPbWfdDLsbpIwbVF/P/OhRIAbcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCn2D+opEZNfOzuVzP0SkytKLTFLxASXjR1s5VuiE+LbgIgEM9a6QnRI8VqDTLNJ7OWxmXQE0wStB4EXNlPXBAgvNo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1285470},"type":"module","_from":"file:/tmp/trails-publish-0h802h/ontrails-warden-0.2.1.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-0h802h/ontrails-warden-0.2.1.tgz","_integrity":"sha512-GHjn9D3dONWFFL2oO+y+gfXZnUIuxIVZ9wTKSqsA7euJMnf2iU/RAms9qMbuOKJROIJvpCKwsgFZ6ibH3rc81g==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^0.2.1","@ontrails/store":"^0.2.1","@ontrails/config":"^0.2.1","@ontrails/source":"^0.2.1","@ontrails/permits":"^0.2.1","@ontrails/adapter-kit":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"@ontrails/testing":"^0.2.1"},"peerDependencies":{"@ontrails/core":"^0.2.1","@ontrails/topography":"^0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/warden_0.2.1_1789172158339_0.1356482133584591","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ontrails/warden","version":"0.2.2","_id":"@ontrails/warden@0.2.2","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"2b95f5ffef06273bd65437ad0660c9e9d77f3608","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-0.2.2.tgz","fileCount":188,"integrity":"sha512-Pgr1Py52jBtzm/TqXKThIWtdXhvVOOnPqCppSqrD/N/hd9C0Z3t0pVXMAsQsDXQGVmKUi8B/tL74/Vc2y131lA==","signatures":[{"sig":"MEYCIQCr52w/oDJfDRjxIMIiST9Qm6YI/atRp9flXvwbXFQz7gIhAK24F6vC//6hTnFoRGggLnBh9mhSYzDHYZHwfJbbawJW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCQt1dNF0DTargc9UFjbZpkjxhRKNlSHM211HSr4nuKnQIgUfJPi1tzuMQTtJTRsCU2YNvB5YSClEFXpKEqomY5e0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1285509},"type":"module","_from":"file:/tmp/trails-publish-WIqJMv/ontrails-warden-0.2.2.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-WIqJMv/ontrails-warden-0.2.2.tgz","_integrity":"sha512-Pgr1Py52jBtzm/TqXKThIWtdXhvVOOnPqCppSqrD/N/hd9C0Z3t0pVXMAsQsDXQGVmKUi8B/tL74/Vc2y131lA==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^0.2.2","@ontrails/store":"^0.2.2","@ontrails/config":"^0.2.2","@ontrails/source":"^0.2.2","@ontrails/permits":"^0.2.2","@ontrails/adapter-kit":"^0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"@ontrails/testing":"^0.2.2"},"peerDependencies":{"@ontrails/core":"^0.2.2","@ontrails/topography":"^0.2.2"},"_npmOperationalInternal":{"tmp":"tmp/warden_0.2.2_1789233030068_0.8088825101290584","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@ontrails/warden","version":"0.2.3","_id":"@ontrails/warden@0.2.3","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"homepage":"https://github.com/outfitter-dev/trails#readme","bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"bin":{"warden":"bin/warden.ts"},"dist":{"shasum":"9731f01016acbc3f800c92fb0fff308a04c35a49","tarball":"https://registry.npmjs.org/@ontrails/warden/-/warden-0.2.3.tgz","fileCount":188,"integrity":"sha512-F5o3jm5p2ItttCnIgee8YFiRadn+jEZa/gJWvuYO/Ubtq6wPJ7KaEcZqteCDg5Xh7ANhPoUCFajayD4aPg47mQ==","signatures":[{"sig":"MEUCIQD4lVO75N8Vf2QL4r81BUBmXZ5RYdqXxrYz219anp6VbQIgUlzNoXkHBQb/d1Vtc2aGvfGzApaLbYvBOktrO0AdZJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICQKs86Qp9G1qkTjY+NCMqGqJ5p2aJHcVxcDmMWv+j6WAiAI+rgxZ6L7uiDw08LQyF7wDgDLz9+8mBZPiZWccTvcUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ontrails%2fwarden@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1285837},"type":"module","_from":"file:/tmp/trails-publish-aCbYuv/ontrails-warden-0.2.3.tgz","exports":{".":"./src/index.ts","./resolve":"./src/resolve.ts","./package.json":"./package.json"},"scripts":{"lint":"oxlint ./src","test":"bun test","build":"tsc -b","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1ec53620-1f78-4597-96ef-37ca001de195"}},"_resolved":"/tmp/trails-publish-aCbYuv/ontrails-warden-0.2.3.tgz","_integrity":"sha512-F5o3jm5p2ItttCnIgee8YFiRadn+jEZa/gJWvuYO/Ubtq6wPJ7KaEcZqteCDg5Xh7ANhPoUCFajayD4aPg47mQ==","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"_npmVersion":"11.18.0","description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.3.5","oxc-resolver":"11.19.1","@ontrails/cli":"^0.2.3","@ontrails/store":"^0.2.3","@ontrails/config":"^0.2.3","@ontrails/source":"^0.2.3","@ontrails/permits":"^0.2.3","@ontrails/adapter-kit":"^0.2.3"},"_hasShrinkwrap":false,"devDependencies":{"@ontrails/testing":"^0.2.3"},"peerDependencies":{"@ontrails/core":"^0.2.3","@ontrails/topography":"^0.2.3"},"_npmOperationalInternal":{"tmp":"tmp/warden_0.2.3_1790080878112_0.10838600539218857","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-03-28T11:38:05.196Z","modified":"2026-09-22T17:34:11.721Z","1.0.0-beta.0":"2026-03-28T11:38:05.415Z","1.0.0-beta.1":"2026-03-28T12:25:37.670Z","1.0.0-beta.2":"2026-03-28T12:43:58.722Z","1.0.0-beta.3":"2026-03-28T13:53:33.567Z","1.0.0-beta.4":"2026-03-28T21:24:24.965Z","1.0.0-beta.5":"2026-03-29T12:29:08.479Z","1.0.0-beta.6":"2026-03-29T12:54:58.274Z","1.0.0-beta.7":"2026-03-29T13:14:53.929Z","1.0.0-beta.8":"2026-03-29T14:41:11.510Z","1.0.0-beta.9":"2026-03-29T19:03:29.794Z","1.0.0-beta.10":"2026-03-29T20:53:59.914Z","1.0.0-beta.11":"2026-03-30T21:21:41.956Z","1.0.0-beta.12":"2026-04-01T12:31:56.563Z","1.0.0-beta.13":"2026-04-02T17:32:30.859Z","1.0.0-beta.14":"2026-04-05T10:42:15.065Z","1.0.0-beta.15":"2026-04-24T18:09:32.409Z","1.0.0-beta.16":"2026-05-13T14:26:53.050Z","1.0.0-beta.17":"2026-05-14T12:09:32.425Z","1.0.0-beta.18":"2026-05-18T18:02:28.158Z","1.0.0-beta.19":"2026-06-03T14:16:53.321Z","1.0.0-beta.21":"2026-06-11T17:40:20.543Z","1.0.0-beta.22":"2026-06-11T18:25:59.300Z","1.0.0-beta.23":"2026-06-12T12:21:09.600Z","1.0.0-beta.24":"2026-06-12T13:11:08.957Z","1.0.0-beta.29":"2026-06-25T16:25:52.027Z","1.0.0-beta.30":"2026-06-25T17:17:15.935Z","1.0.0-beta.32":"2026-06-30T17:30:54.515Z","1.0.0-beta.39":"2026-07-07T13:51:33.886Z","1.0.0-beta.41":"2026-07-12T11:40:03.495Z","1.0.0-beta.42":"2026-07-13T20:55:13.012Z","1.0.0-beta.43":"2026-07-15T13:12:28.110Z","1.0.0-beta.45":"2026-07-16T13:12:11.754Z","1.0.0-beta.46":"2026-07-18T13:21:30.767Z","1.0.0-beta.47":"2026-08-06T19:16:39.746Z","1.0.0-beta.48":"2026-08-11T19:31:28.614Z","1.0.0-beta.49":"2026-08-20T21:58:33.410Z","1.0.0-beta.50":"2026-08-20T22:59:50.503Z","0.2.0":"2026-09-11T19:26:21.267Z","0.2.1":"2026-09-12T00:15:58.479Z","0.2.2":"2026-09-12T17:10:30.166Z","0.2.3":"2026-09-22T12:41:18.233Z"},"bugs":{"url":"https://github.com/outfitter-dev/trails/issues"},"homepage":"https://github.com/outfitter-dev/trails#readme","repository":{"url":"git+https://github.com/outfitter-dev/trails.git","type":"git","directory":"packages/warden"},"description":"AST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.","maintainers":[{"name":"galligan","email":"matt.galligan@gmail.com"}],"readme":"# @ontrails/warden\n\nAST-based code convention rules for Trails. Built-in lint rules catch contract violations at development time, alongside lock drift detection and CI formatters.\n\nStructural checks (compose target existence, declared resource existence, recursive composition, example schema validation) live in `validateTopo()` from `@ontrails/core`. Warden handles the code-level rules that need AST analysis.\n\nFor rule-home boundaries and authoring doctrine, see the [Warden guide](../../docs/warden.md) and [Warden Rules](../../docs/contributing/warden-rules.md).\n\n## Usage\n\nFrom the Trails CLI:\n\n```bash\nbunx trails warden # Run all checks\n```\n\nOr programmatically:\n\n```typescript\nimport { runWarden, formatWardenReport } from '@ontrails/warden';\n\nconst report = await runWarden({ topo: graph });\nconsole.log(formatWardenReport(report));\n```\n\n## Rules\n\nBuilt-in rules are registered in `wardenRules` and `wardenTopoRules`; use those registries or `wardenTopo.ids()` for the current rule list instead of copying a static table into docs.\n\nRules cover several families:\n\n- implementation and `Result` contract checks\n- compose, fire, resource, and detour declaration drift\n- draft-state containment\n- source-static guardrails such as surface-type leakage\n- topo-aware checks that need the resolved graph or resource mock shape\n\nWhen adding or auditing rules, follow [Warden Rules](../../docs/contributing/warden-rules.md): name the invariant, import owner-held framework data, choose the narrowest Warden tier, and collapse families only when the data model, traversal, and diagnostic shape are shared.\n\n## Project-local rules\n\nProjects can carry local Warden rules in `.trails/rules.ts` or direct `.trails/rules/*.ts` files. `runWarden()` and `trails warden` load those files by default for lint runs, then run those rules alongside the built-in registries. Drift-only runs do not import project-local rule modules. Embedders that need only built-in or explicitly provided rules can pass `projectRules: false`.\n\nWarden does not recursively discover nested `.trails/rules` files. Use nested files as private helpers and re-export from a direct entrypoint when a local rule grows. Rule ids must be unique across every project-local module. The retired `trails/warden/rules` location reports a migration diagnostic instead of loading.\n\nWarden uses the shared Trails project-root resolver when a caller does not pass `rootDir` or `--root-dir`, so commands launched from nested directories still load the nearest root `trails.config.*` and its `.trails/rules*` files. An explicit root always wins over discovery.\n\nThis is the right home for repo-specific migration checks or governance that has not earned a place in `@ontrails/warden` itself.\n\n## Scope\n\nUse `warden.scope.exclude` in `trails.config.*` to keep generated, scratch, or local planning paths outside Warden governance while leaving durable project paths in scope.\n\n```json\n{\n  \"warden\": {\n    \"scope\": {\n      \"exclude\": [\".scratch/**\", \".agents/notes/**\"]\n    }\n  }\n}\n```\n\nFor a single run, pass one or more root-relative globs:\n\n```bash\nwarden --scope-exclude '.scratch/**' --scope-exclude '.agents/notes/**'\n```\n\nScope is a governance boundary, not a migration scan boundary. Regrade uses its own `scope.exclude` / `--exclude` controls for migration plans.\n\nA rule module may export `rule`, `rules`, `sourceRule`, `sourceRules`, `topoRule`, or `topoRules`. Rules without explicit metadata receive default repo-local source-static or topo-aware metadata so short migration rules can run without extra ceremony. Project-aware source rules that provide `checkWithContext()` default to repo-local project-static metadata.\n\n```typescript\nexport const rule = {\n  name: 'local-contract-check',\n  severity: 'error',\n  description: 'Local contract examples keep their migration marker.',\n  check(sourceCode, filePath) {\n    return sourceCode.includes('deprecatedMarker')\n      ? [\n          {\n            filePath,\n            line: 1,\n            message: 'Replace deprecatedMarker before release.',\n            rule: 'local-contract-check',\n            severity: 'error',\n          },\n        ]\n      : [];\n  },\n};\n```\n\n## Drift detection\n\nWarden integrates with `@ontrails/topography` to detect when the topo has changed without updating the lock file:\n\n```typescript\nimport { checkDrift } from '@ontrails/warden';\n\nconst drift = await checkDrift(process.cwd(), graph);\nif (drift.stale) {\n  console.log('lock file is stale -- regenerate with `trails compile`');\n}\n```\n\n## CI integration\n\nAdd to lefthook for pre-push enforcement:\n\n```yaml\npre-push:\n  commands:\n    warden:\n      run: bunx trails warden\n      tags: governance\n```\n\nCI formatters for structured output:\n\n```typescript\nimport {\n  formatGitHubAnnotations,\n  formatJson,\n  formatSummary,\n} from '@ontrails/warden';\n```\n\nReusable source-code parser helpers now live in `@ontrails/source`:\n\n```typescript\nimport { findStringLiterals, parse, walk } from '@ontrails/source';\n```\n\n## Trail-based API\n\nEvery built-in warden rule is also available as a composable trail. This makes rules queryable, testable, and invocable through any Trails surface.\n\n```typescript\nimport {\n  runTopoAwareWardenTrails,\n  runWardenTrails,\n  wardenTopo,\n} from '@ontrails/warden';\n\n// Inspect the warden rule trails\nconsole.log(wardenTopo.ids()); // ['warden.rule.no-throw-in-implementation', ...]\n\n// Run all rule trails against a source file\nconst diagnostics = await runWardenTrails(filePath, sourceCode, {\n  knownTrailIds: myApp.ids(),\n  knownResourceIds: myApp.resourceIds(),\n});\n\n// Run built-in topo-aware rule trails once against the resolved graph\nconst topoDiagnostics = await runTopoAwareWardenTrails(myApp);\n```\n\nTo wrap a custom rule as a trail, import `wrapRule` from the root package entrypoint:\n\n```typescript\nimport { wrapRule } from '@ontrails/warden';\n```\n\nThis is the same factory used internally to build all built-in rule trails.\n\n## API\n\n| Export | What it does |\n| --- | --- |\n| `runWarden(options?)` | Run all rules and drift checks, return a report |\n| `formatWardenReport(report)` | Human-readable report |\n| `checkDrift(rootDir, topo?, options?)` | Check if the lock file matches the current topo; pass `{ overlays }` from the app module so the comparison graph carries the overlay content compile embeds. Stale results name `driftedOverlayNamespaces` when overlays diverge |\n| `wardenRules` | Registry of all built-in rules |\n| `builtinWardenRuleMetadata` | Tier, scope, lifecycle, and invariant metadata for built-in rules |\n| `getWardenRuleMetadata(ruleOrName)` | Resolve inline or built-in metadata for a Warden rule |\n| `listWardenRuleMetadata()` | List built-in rule metadata entries |\n| `wardenTopo` | `Topo` of all built-in rule trails (one per rule) |\n| `runWardenTrails(filePath, sourceCode, options?)` | Dispatch file-scoped rule trails for a file, collect diagnostics |\n| `runTopoAwareWardenTrails(topo)` | Dispatch built-in topo-aware rule trails once for a resolved topo |\n| `loadProjectWardenRules(rootDir)` | Load rule modules from `.trails/rules.ts` or direct `.trails/rules/*.ts` children |\n| `formatGitHubAnnotations(report)` | GitHub Actions annotation format |\n| `formatJson(report)` | Machine-readable JSON |\n| `formatSummary(report)` | Compact summary line |\n| `wrapRule(rule)` | Wrap a custom rule as a trail (same factory used for all built-in rule trails) |\n\nSource-code parser helpers are owned by `@ontrails/source`, not the Warden root runtime barrel.\n\n`runWarden({ tier })` can narrow a run to `source-static`, `project-static`, `topo-aware`, `drift`, or `advisory`. Omit `tier` for the default full run.\n\nSee the [API Reference](../../docs/api-reference.md) for the full list.\n\n## Installation\n\nThese installation examples target Trails `0.2.1` on the normal npm release line.\n\n```bash\nbun add --exact -d @ontrails/warden@0.2.1\n```\n","readmeFilename":"README.md"}