{"_id":"@adjudicate/primitives","_rev":"10-836aa03455a138d7ab2089aeb5a9509f","name":"@adjudicate/primitives","dist-tags":{"latest":"0.4.4"},"versions":{"0.1.0":{"name":"@adjudicate/primitives","version":"0.1.0","_id":"@adjudicate/primitives@0.1.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"80a780b31b3f991ba5ba4333031e6266c37861e0","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.1.0.tgz","fileCount":22,"integrity":"sha512-6cUnz906do2bvYeyyy7t303nCoxh/ruFRf9AAcyXsy9Mycts60W9s49/qdxvvBAgv/b+ME15jUqqjOHH+Nexow==","signatures":[{"sig":"MEUCIGjRoI0DwA3gyV2BkgyrJuzMXPuNli3lszzDEpHkPrhDAiEApr1aQ0J/EniLTKDpX+E/Yg58zUsafB90Q/vWRfL4LMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80924},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/9f516a553551e8870617eadf724c8e05/adjudicate-primitives-0.1.0.tgz","_integrity":"sha512-6cUnz906do2bvYeyyy7t303nCoxh/ruFRf9AAcyXsy9Mycts60W9s49/qdxvvBAgv/b+ME15jUqqjOHH+Nexow==","_npmVersion":"11.10.0","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.1.0_1779418983657_0.034105393334480594","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@adjudicate/primitives","version":"0.1.1","_id":"@adjudicate/primitives@0.1.1","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"1435d628022ce5a551876d54de8a1fb9d844a154","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.1.1.tgz","fileCount":22,"integrity":"sha512-EzB7+mfoZY2qIHdCPLEAZFlPJzVSX1WFuMQW3E//5ZL/X9b/loCFDvRGGNAzdnqbL8BTxlkXOHlNtk0aeJUvkg==","signatures":[{"sig":"MEQCIHb+EKGi+ahW3LKH7yHALpMdM2r+bYmOeyrZOZiH4x3iAiAtq/6qfIWVagXHK1f9fUSMHZQ58BriEuzny+8/v20DiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80924},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.1.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/be03e0580e92690bc32ca0a9cc48dca9/adjudicate-primitives-0.1.1.tgz","_integrity":"sha512-EzB7+mfoZY2qIHdCPLEAZFlPJzVSX1WFuMQW3E//5ZL/X9b/loCFDvRGGNAzdnqbL8BTxlkXOHlNtk0aeJUvkg==","_npmVersion":"11.10.0","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.1.1_1779419642740_0.5208155420666705","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@adjudicate/primitives","version":"0.2.0","_id":"@adjudicate/primitives@0.2.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"3dbb539e295c27bd582ed32900c79dc4170eb6fb","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.2.0.tgz","fileCount":25,"integrity":"sha512-9tcDtY5vMgO0u5pIh98QtdfpOCkMR7WUAkDdmJfT28sBjs1KbyRL3slf93iyFj53VrtKIIz2zfxO/WqTNRPd4Q==","signatures":[{"sig":"MEQCIBLO/qLeYPqyt2BrNwUgIajTlHRfFmN2mxf7hrRQEFnRAiAdOwz8Z50DHoPlkvXse5NaQ5FNCNUuT+aeW0a1o60aug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95936},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.2.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/tmp/claude-501/9a5eb5c1933ab21048afb058ec04e0c4/adjudicate-primitives-0.2.0.tgz","_integrity":"sha512-9tcDtY5vMgO0u5pIh98QtdfpOCkMR7WUAkDdmJfT28sBjs1KbyRL3slf93iyFj53VrtKIIz2zfxO/WqTNRPd4Q==","_npmVersion":"11.10.0","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","typescript":"^5.9.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.2.0_1780624417773_0.04939836692379562","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@adjudicate/primitives","version":"0.3.0","_id":"@adjudicate/primitives@0.3.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"84a994731a5bc0ca0537f435ac9ae51c979de4e6","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.3.0.tgz","fileCount":51,"integrity":"sha512-cuCefYjXdfaB3tdakj79RPkXDI0raKacWdrfZrNh7eG6hRo+XbdEeAHpuuyHjb7LkmH35O7HqGKQ5/dy4ESgCA==","signatures":[{"sig":"MEYCIQD64+91GGn/XGpiJASLHWvbgLmqBmNiZ0I8V0UiAnRPmAIhAO5HFGOCvb2wlFo2a03ezYd85gA3yhlh/JAOYI48B50A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":388982},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.3.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/33b5f1f90eb646096c7b922116adb678/adjudicate-primitives-0.3.0.tgz","_integrity":"sha512-cuCefYjXdfaB3tdakj79RPkXDI0raKacWdrfZrNh7eG6hRo+XbdEeAHpuuyHjb7LkmH35O7HqGKQ5/dy4ESgCA==","_npmVersion":"11.10.0","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","fast-check":"^3.23.1","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.3.0_1780863190548_0.006091291209727956","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@adjudicate/primitives","version":"0.3.1","_id":"@adjudicate/primitives@0.3.1","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"bb563defd68326be53f554c58e8c0df11893246f","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.3.1.tgz","fileCount":53,"integrity":"sha512-7elf8iqy95/HmmyRTSLXhVyqRMq0egb87+/8mWwz8UWpnZ1pN3kt1UX1HMFRKCsYl/QjxQ1YkcWf8jyFdhpn3Q==","signatures":[{"sig":"MEQCIE3x8VRl/kSSK7Sj/+juGpY9E1ihqMJY89WKUt46KIddAiB5KUT0XnuMYPDdWdbGQ4BWXAXc9VMrE2uz1mo5FAkVSA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424718},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.3.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/918bfb55c789821f1e40cb7326ba6708/adjudicate-primitives-0.3.1.tgz","_integrity":"sha512-7elf8iqy95/HmmyRTSLXhVyqRMq0egb87+/8mWwz8UWpnZ1pN3kt1UX1HMFRKCsYl/QjxQ1YkcWf8jyFdhpn3Q==","_npmVersion":"11.10.0","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","fast-check":"^3.23.1","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.3.1_1781667821554_0.41027156432282696","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@adjudicate/primitives","version":"0.4.0","_id":"@adjudicate/primitives@0.4.0","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"fb5a6d15bb2d9616a99622ea437dfa4148acf391","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.4.0.tgz","fileCount":68,"integrity":"sha512-2eqwXNHvcoumBUv/fNAsa8v2rrxprfh2lwTqc9Tx+OzswLLizXnv3ArWHuJJvgoL01sSbXJl/oHfxMOx+FDOzg==","signatures":[{"sig":"MEQCIFbtHio5QpiA91ePb1ETdiOpg0nEIfRj0metURF10gLgAiAthHiaSJxEmL29y8CkT5uATvTgj3tc22hOA8hSXScRrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597314},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.4.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/73a460400d330c78d97bbed3b95511eb/adjudicate-primitives-0.4.0.tgz","_integrity":"sha512-2eqwXNHvcoumBUv/fNAsa8v2rrxprfh2lwTqc9Tx+OzswLLizXnv3ArWHuJJvgoL01sSbXJl/oHfxMOx+FDOzg==","_npmVersion":"11.10.0","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","fast-check":"^3.23.1","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.4.0_1782275518766_0.3657012751910653","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@adjudicate/primitives","version":"0.4.1","_id":"@adjudicate/primitives@0.4.1","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"8bd8706b55702b229db13a1e7eae98ee6fd44f8a","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.4.1.tgz","fileCount":68,"integrity":"sha512-CZNNo6JyRT8OhstP9p8i1BDeuAipf7rXpqYD7xd5gpd5Dltz7xPkjDY2/HxK/dijM55BVxLpV55W9bvIo4YJYQ==","signatures":[{"sig":"MEUCIFHK+rt4DlIZgw57he5JvplNdwKWTmlqnvlw4IGxfgqvAiEApk9UuD14cQEzgFt8kPEyt7dLuGnvtK52lIb/bjpor+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597405},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.4.1.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/private/var/folders/qy/5nvvb1h93ks26dzx6fzypss80000gn/T/1e8675f20c68a5a19c3bc94eb40aed16/adjudicate-primitives-0.4.1.tgz","_integrity":"sha512-CZNNo6JyRT8OhstP9p8i1BDeuAipf7rXpqYD7xd5gpd5Dltz7xPkjDY2/HxK/dijM55BVxLpV55W9bvIo4YJYQ==","_npmVersion":"11.10.0","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"25.6.1","dependencies":{"@adjudicate/core":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","fast-check":"^3.23.1","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.4.1_1782443655969_0.593802682449575","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@adjudicate/primitives","version":"0.4.2","_id":"@adjudicate/primitives@0.4.2","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"210ed93b88e18fb1508c6057b55189a67aa03e66","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.4.2.tgz","fileCount":54,"integrity":"sha512-AwtSlbxrQbxpLzqI77ekaeBAXIQnAoa91B48EmHCaBCNUzqFmHsZ7/XlTJftIYDQU6no1NRE3qztgMJo4iksXQ==","signatures":[{"sig":"MEQCIADcIsVdtJ3s9XwSY7r0l0qytFnhl24MEbFCyQga8RcQAiBSGu7wNzZgTF4J6wO6CTZdKP5RWvC97KOKvZgAQJXN0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404741},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.4.2.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/tmp/ac84b4ef5cd424da6c60e2d555d041bb/adjudicate-primitives-0.4.2.tgz","_integrity":"sha512-AwtSlbxrQbxpLzqI77ekaeBAXIQnAoa91B48EmHCaBCNUzqFmHsZ7/XlTJftIYDQU6no1NRE3qztgMJo4iksXQ==","_npmVersion":"10.9.8","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@adjudicate/core":"1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","fast-check":"^3.23.1","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.4.2_1782665454930_0.2975250387609516","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@adjudicate/primitives","version":"0.4.3","_id":"@adjudicate/primitives@0.4.3","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"dist":{"shasum":"227917b79d71757dcd84901c7fbd420b286924e8","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.4.3.tgz","fileCount":54,"integrity":"sha512-b69b/ofNuDnnU+WcfGZTcq24fmy9Jyxpx2ppPOHHPa6vSCg9bhbSBZ3muOapIcLLXxupI2d8QdKSD0IAcAnP7Q==","signatures":[{"sig":"MEYCIQCnsHb/t1XM6LC9pL/QY2USAlmnQN6bMS//ZDpxZcsKjwIhAJwYFZBme/jaclim2tZAzjC1IRxjxqHsKGmjd4kqJw++","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404831},"main":"./dist/index.js","type":"module","_from":"file:adjudicate-primitives-0.4.3.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"tsc --noEmit","test":"vitest run","build":"tsc --outDir dist"},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"_resolved":"/tmp/b250ea7aa625740c162e63471c41a6be/adjudicate-primitives-0.4.3.tgz","_integrity":"sha512-b69b/ofNuDnnU+WcfGZTcq24fmy9Jyxpx2ppPOHHPa6vSCg9bhbSBZ3muOapIcLLXxupI2d8QdKSD0IAcAnP7Q==","_npmVersion":"10.9.8","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","directories":{},"_nodeVersion":"22.23.0","dependencies":{"@adjudicate/core":"1.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.0","fast-check":"^3.23.1","typescript":"^5.9.0","@vitest/coverage-v8":"^3.2.0"},"_npmOperationalInternal":{"tmp":"tmp/primitives_0.4.3_1782870194706_0.48315377391562997","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@adjudicate/primitives","version":"0.4.4","description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"dependencies":{"@adjudicate/core":"1.9.0"},"devDependencies":{"@vitest/coverage-v8":"^3.2.0","fast-check":"^3.23.1","typescript":"^5.9.0","vitest":"^3.2.0"},"scripts":{"build":"tsc --outDir dist","lint":"tsc --noEmit","test":"vitest run"},"_id":"@adjudicate/primitives@0.4.4","_integrity":"sha512-gbOC5qvhE3vcQ/vtDM6gb5bv3rAMpoI9dpVbmDMZLV59p0J9bQ5hgUBZCfXh1pKWXQ1sKlU2gGf6KGVdLWnoKg==","_resolved":"/tmp/12774d39bff5f81543265fcfbf268495/adjudicate-primitives-0.4.4.tgz","_from":"file:adjudicate-primitives-0.4.4.tgz","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-gbOC5qvhE3vcQ/vtDM6gb5bv3rAMpoI9dpVbmDMZLV59p0J9bQ5hgUBZCfXh1pKWXQ1sKlU2gGf6KGVdLWnoKg==","shasum":"dbe0111457e0562ff72b789c982ece4ded0a1cc0","tarball":"https://registry.npmjs.org/@adjudicate/primitives/-/primitives-0.4.4.tgz","fileCount":54,"unpackedSize":404921,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICapZCuWQBvYhPM7efeZhGcSnHVK9uGo3ntFnTknD5exAiEAsBOsQ82nUj3wcwUPxL6siL9SJD8zlMLf0c5AXEKoVqo="}]},"_npmUser":{"name":"brunoro","email":"bnocesar@gmail.com"},"directories":{},"maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/primitives_0.4.4_1783002069552_0.43978480882717164"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T03:03:03.549Z","modified":"2026-07-02T14:21:09.846Z","0.1.0":"2026-05-22T03:03:03.878Z","0.1.1":"2026-05-22T03:14:02.889Z","0.2.0":"2026-06-05T01:53:37.880Z","0.3.0":"2026-06-07T20:13:10.696Z","0.3.1":"2026-06-17T03:43:41.707Z","0.4.0":"2026-06-24T04:31:58.966Z","0.4.1":"2026-06-26T03:14:16.109Z","0.4.2":"2026-06-28T16:50:55.104Z","0.4.3":"2026-07-01T01:43:14.848Z","0.4.4":"2026-07-02T14:21:09.714Z"},"description":"Layer 2 risk primitives — generic guard + taint factories that two or more Packs already share. Sits between @adjudicate/core (Layer 1, kernel) and per-domain Packs (Layer 3).","maintainers":[{"name":"brunoro","email":"bnocesar@gmail.com"}],"readme":"# @adjudicate/primitives\n\nLayer 2 risk primitives — generic guard + taint factories shared by two or more\nPacks. Sits between `@adjudicate/core` (Layer 1, kernel) and per-domain Packs\n(Layer 3). Each factory runs at Pack-definition time and returns a tight,\nkernel-direct `Guard` / `TaintPolicy`.\n\n## Guard factories\n\n| Factory | Emits | Use |\n|---|---|---|\n| `createThresholdGuard` | any | numeric crossing → caller-supplied Decision |\n| `createConfirmGuard` | REQUEST_CONFIRMATION | numeric crossing → confirmation prompt |\n| `createEscalateGuard` | ESCALATE | numeric crossing → human/supervisor |\n| `createRewriteGuard` | REWRITE | clamp a numeric payload field to a cap |\n| `createStateDeferGuard` | DEFER | park an intent on a wire signal |\n| `createIdempotencyGuard` | REFUSE | domain-level dedup (not the ledger) |\n| `createDataClassificationGuard` | REWRITE / REFUSE | scan payload for PII/PHI and redact or block |\n| `createTokenBudgetGuard` | REFUSE / DEFER | refuse (or park) when cumulative LLM token use crosses a per-session/per-tenant budget |\n| `createCommandRiskGuard` | REFUSE / REWRITE / REQUEST_CONFIRMATION | classify a proposed shell command and refuse / strip / confirm |\n| `requireTenantBinding` | REFUSE | reject actors not bound to the tenant in state |\n\n## Taint factories\n\n| Factory | Returns | Use |\n|---|---|---|\n| `createSystemTaintPolicy` | `TaintPolicy` | require `TRUSTED` for an allowlist of system-only intent kinds |\n\n## `createDataClassificationGuard` (ADR-117)\n\n```ts\nimport { createDataClassificationGuard } from \"@adjudicate/primitives\";\n\nconst redactPii = createDataClassificationGuard({\n  matches: (env) => env.kind === \"support.ticket.create\",\n  patterns: [\n    { id: \"ssn\", pattern: /\\b\\d{3}-\\d{2}-\\d{4}\\b/ },\n    { id: \"pan\", pattern: /\\b\\d{16}\\b/, redact: (m) => `****${m.slice(-4)}` },\n  ],\n  scannedFields: [\"subject\", \"body\"], // dotted paths; required + non-empty\n  action: \"REWRITE\", // or \"REFUSE\"\n  sensitivityLevel: \"high\",\n});\n```\n\n- **REWRITE** masks the matched substrings in the matched fields and re-emits the\n  envelope with the redacted payload, carrying basis code `PII_REDACTED`. Each\n  pattern may set a `redact(match)` callback to override the default `[REDACTED]`\n  token. **Taint is preserved verbatim** — redaction removes content but never\n  declassifies (so it can never trip `rewrite_taint_regression`).\n- **REFUSE** blocks the intent with a `SECURITY` refusal carrying basis code\n  `PII_BLOCKED`.\n- The runtime `sensitivityLevel` + matched fields ride in `DecisionBasis.detail`\n  (the only structured channel that reaches the `AuditRecord`); the static\n  `GuardDescription.data_classification` carries the *permitted* scope for\n  analyzers. Both, by design.\n\nPure: regex evaluation over `envelope.payload`, no clock/I/O/RNG.\n\n## `createTokenBudgetGuard` (ADR-120)\n\nRefuses (default) or parks an intent when cumulative LLM token consumption\ncrosses a per-session and/or per-tenant budget. Token counts live in the\nadopter's **state `S`** (read via `extractSessionTokens` / `extractTenantTokens`),\nnot in `RuntimeContext` — so the decision stays pure and replayable. At least one\nof `sessionBudget` / `tenantBudget` is required.\n\n- Default `action` is `REFUSE`. Set `action: \"DEFER\"` (with `deferTimeoutMs`) to\n  park on the `token_budget_reset` signal (overridable via `deferSignal`) — DEFER\n  has no natural external resume signal, hence REFUSE is the primary action.\n- **Fails CLOSED** on a definitively-over meter: `+Infinity` crosses any finite\n  budget and refuses. Only `NaN` (an uninterpretable reading) and genuinely\n  sub-budget values pass.\n\n## `createCommandRiskGuard` (ADR-123)\n\nClassifies a proposed shell command via a pure rule table and emits the least\ndisruptive safe disposition:\n\n- **REFUSE** for irrecoverable risk (e.g. `rm -rf /`, `mkfs`, `dd of=/dev/…`,\n  fork bombs).\n- **REWRITE** when a dangerous flag can be stripped to de-escalate the command\n  (taint preserved verbatim).\n- **REQUEST_CONFIRMATION** otherwise (network / credential / recoverable).\n\nDefense-in-depth, not a sandbox. The classifier and flag-stripper are pure and\nbacked by the frozen `command-classify` rule tables (see below); adopters supply\n`matches` / `extractCommand` / `commandField` and may override the tables per\nguard.\n\n## `command-classify` module\n\nPure, deterministic command-risk classification re-exported from the package\nroot (ADR-123). Useful standalone, and the engine behind `createCommandRiskGuard`.\n\n| Export | Kind | Purpose |\n|---|---|---|\n| `classifyCommand(command, rules?)` | fn | classify a command → `{ category, matchedRuleIds, disposition }` (highest-severity category wins; `disposition: \"refuse\"` if any matched rule refuses, else `\"confirm\"`, else `\"safe\"`) |\n| `stripDangerousFlags(command, rules?)` | fn | remove strippable safety-disabling flags → `{ command, stripped }` |\n| `DEFAULT_COMMAND_RULES` | const | frozen default rule table (destructive / network / credential) |\n| `DEFAULT_FLAG_STRIP_RULES` | const | frozen default flag-strip table (e.g. `-f`/`--force`/`--no-preserve-root` on `rm`) |\n| `CommandClassification`, `CommandRiskCategory`, `CommandRule`, `FlagStripRule` | types | classification result + rule shapes |\n\nDeterministic — no clock/I/O/RNG. Rule tables are frozen module constants;\noverride per call/guard via the `rules` / `flagStripRules` arguments.\n","readmeFilename":"README.md"}