{"_id":"@absolutejs/audit","_rev":"10-96a5308190c40541811fafda89a0b413","name":"@absolutejs/audit","dist-tags":{"latest":"0.2.3"},"versions":{"0.0.1":{"name":"@absolutejs/audit","version":"0.0.1","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/audit@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"dist":{"shasum":"dfa55d4ee80e5d6b451f8069bfea16556152f8d2","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.0.1.tgz","fileCount":7,"integrity":"sha512-/djaPYQI3QJ5sO4jad28NaT2eeWHj5RkPwz9oIWZRwdC3XREwP9zBAtFhR9UCogC2EeUjEInxHnyllqG8FonkA==","signatures":[{"sig":"MEUCIGdJq/ElbQ4loHkkisP9UhkzSjEFf756qA8dywYfSBCaAiEAtPRzMprW33Bt18Cs9n96MtlyWCdeJP97lmCtO8bTau8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76492},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"dfa55d4ee80e5d6b451f8069bfea16556152f8d2","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-/djaPYQI3QJ5sO4jad28NaT2eeWHj5RkPwz9oIWZRwdC3XREwP9zBAtFhR9UCogC2EeUjEInxHnyllqG8FonkA==","repository":{"url":"https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.8.3","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.0.1_1780111435855_0.5030542085625944","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@absolutejs/audit","version":"0.0.2","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/audit@0.0.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"198b826c1b167722c7ac7ba7062c700dccb39485","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.0.2.tgz","fileCount":12,"integrity":"sha512-cmyavs7Nk/1Nv6TQjJUaEmlcbUIW+SUA4RF6NVrRwVB1tOtkjZLVEqNBYWJXwT75wbZ1YXl3HH1wa6OU62p5Ew==","signatures":[{"sig":"MEYCIQDvF0xXreHZ3M9Bt2wkjrGiijAAf1mudu7amsjS/fuf8AIhAJV6KfW1tctZHJZSzmR2kWluMkkmsRKNkzSCgT4qCUXG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1223971},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"198b826c1b167722c7ac7ba7062c700dccb39485","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-cmyavs7Nk/1Nv6TQjJUaEmlcbUIW+SUA4RF6NVrRwVB1tOtkjZLVEqNBYWJXwT75wbZ1YXl3HH1wa6OU62p5Ew==","absolutejs":{"manifestContract":1},"repository":{"url":"https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.8.3","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.0.2_1783964181185_0.9093657827736954","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@absolutejs/audit","version":"0.0.3","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/audit@0.0.3","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"f3183b8910495baf4e57cc6d620301e44f036248","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.0.3.tgz","fileCount":12,"integrity":"sha512-D6+kl7OOBQ9qQTyCIeqHKI77oERQpxQ2RgQYyGJBnBJk2Vzl3g6OguvZLo6Yc/cd40qwoHsmzNW/xWZwvaX9lw==","signatures":[{"sig":"MEUCIQDts02WwBEoNMcd0heNB/LI0gNITNZD2TF/C5bv7RCuvQIgGfmLfGbPjBb7D6AUnb3ZQpfxvT+AjWpdTpGqJBAY6/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1225067},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"a0b996a023f28c77cce6cb27941cd15f2aa8cfa0","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":1},"repository":{"url":"git+https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.9.2","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.0.3_1784009125324_0.5872947031545406","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@absolutejs/audit","version":"0.0.4","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/audit@0.0.4","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"908bb41abf56aadc724c6753f382320133c99970","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.0.4.tgz","fileCount":12,"integrity":"sha512-7hlHai/wEJRNAqA4lab+erYHx7q/OXIwFbaGrXdCP30H4T9GoFc+KmliYhwvOOG/rsCUjdBJ0OdJ33ALq0T7sQ==","signatures":[{"sig":"MEUCIQDuVZp40PQybqdnVci4U79bdwADA65YGuTwFm82m4k7jAIgKEIOJL9rtKMc2ThQ/PsHsLAaKDNvjge96w7pHf+aj7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1224507},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"d6e05a70d105387394633ae4e233b85afa71c1d1","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":1},"repository":{"url":"git+https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.9.2","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.0.4_1784009207696_0.7876416581129817","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@absolutejs/audit","version":"0.0.5","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/audit@0.0.5","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"7abb3557f9b7e249ce957fa1f237b3c920525fe4","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.0.5.tgz","fileCount":12,"integrity":"sha512-mSkGUSdXLy01YjJZ2qmjL+M3A2SdFZ8QqN3mnzx33FcDIPILNA/AHzwR+ll/jSKYjtvcKGpnirdoolBq/fjiFg==","signatures":[{"sig":"MEUCIQD8WIRbLzdn/DGjAO45yKmdvgpRHZOX8FjQCoaEawsR0QIgUAHlXPxahtlvFa3QGN0qVr1KOFaC87gMIiSvgXTEEr0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1224703},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"2fa37097e0206646f71b2337d038eb54855db1ee","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":1},"repository":{"url":"git+https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.9.2","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.0.5_1784009607815_0.726201076914408","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@absolutejs/audit","version":"0.1.0","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/audit@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"a055da2ef63fc7e89a25dc42e2662179f91ed594","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.1.0.tgz","fileCount":12,"integrity":"sha512-7sYdcz/ym6MkNQ1N3zVLxNw/T6PCjQgzSiZDPrmtKZuoLlXXJny6W/FVtD1ZLYZE5BDh8eeaRuGCHN+NClyzkA==","signatures":[{"sig":"MEUCIG3u51mokE68hNd5gWPA0evR1dLXPR61JDoBa3tqyNS9AiEAvuWGoI4ODfV6kAkAFS95C5W4E77+n/6ui8RFa0JCuSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160861},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"94dea4691ea6e0cc1d8fff1809538539aaa276e6","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":1},"repository":{"url":"git+https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.9.2","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.1.0_1784168937811_0.1784707548123805","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/audit","version":"0.2.0","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/audit@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"1969f38961dc5d68dab1e8ac8d9c05d5e97da9ec","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.2.0.tgz","fileCount":12,"integrity":"sha512-cshGphexNDFqyVabXehwcR2uGffIVSbpPj/zpiiJZANo7faJwjcUjLcC0G6pMIvYecnS68+wf4dUlflchyC8Mg==","signatures":[{"sig":"MEUCIHwXqhHyE5o+OIdk0tPRU0mwqfM1S6a4Q8wvdZy6LBPHAiEA6r6TJjsKe2k3ARuLpbCJR0Am9ETVjPhiDdKLv5U/lOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164259},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"9d4b7d59905dc2ef1038c925d55468e19136bca6","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.9.2","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.2.0_1784806784331_0.6999859718211616","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@absolutejs/audit","version":"0.2.1","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":"Alex Kahn","license":"BSL-1.1","_id":"@absolutejs/audit@0.2.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"8f6126b17c346fa0a32047fc3259eac785752980","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.2.1.tgz","fileCount":12,"integrity":"sha512-zzY/B/ttf8riXuBY17nLWkyZH6e3p7DsRCYi43XE1M1G5gFRI96bKhtXFJj5xUzEiN8ZF6a0xTIWwtYKi+Y9yw==","signatures":[{"sig":"MEQCICKdtzoXsq+E2bfApZdx0xeu66BZ2Q2hoDafL0/SQ9LQAiBbMHQjrhVCWiKdui1q7BtGWfK4iAU+g/hGyfK4dKBWNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164364},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"8f6126b17c346fa0a32047fc3259eac785752980","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run build && bun publish","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"_integrity":"sha512-zzY/B/ttf8riXuBY17nLWkyZH6e3p7DsRCYi43XE1M1G5gFRI96bKhtXFJj5xUzEiN8ZF6a0xTIWwtYKi+Y9yw==","absolutejs":{"manifestContract":2},"repository":{"url":"https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.8.3","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.2.1_1784914657543_0.6352238044216127","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@absolutejs/audit","version":"0.2.2","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"author":{"name":"Alex Kahn"},"license":"BSL-1.1","_id":"@absolutejs/audit@0.2.2","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"dist":{"shasum":"cd64ad90eedbd4ea99e29914f5b3b40b7bcda1e0","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.2.2.tgz","fileCount":12,"integrity":"sha512-BXtQDGJ7QP+UmTqr+ExUnJwR4agvIM6UBJQELGIb4AgwMTbvFCeAAtsJ+QdMCLa9Sm59hTgTlCe1bGhfCEcdlg==","signatures":[{"sig":"MEUCIGmI5qwVN03ec2x9H2MX5ml64muYdVv0ShV4xQpr6wwaAiEAqCos59SLj3dELDqAMU0MZyjYs8cYFMs7deR/daq8jm8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":164569},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"cbf98153166f117015b4b85ab9da8552028f59aa","scripts":{"test":"bun test","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","format":"prettier --write \"./**/*.{ts,json,md}\"","release":"bun run format && bun run check:package && bun publish","typecheck":"tsc --noEmit","check:package":"bun run typecheck && bun run verify-package && bun run build && bun run verify-package --artifacts && bun run test","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/audit.git","type":"git"},"_npmVersion":"10.9.2","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.5.3","@types/bun":"1.3.14","typescript":"5.8.3"},"_npmOperationalInternal":{"tmp":"tmp/audit_0.2.2_1784961910877_0.22605732822872437","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@absolutejs/audit","version":"0.2.3","description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","repository":{"type":"git","url":"git+https://github.com/absolutejs/audit.git"},"homepage":"https://github.com/absolutejs/audit","bugs":{"url":"https://github.com/absolutejs/audit/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","license":"BSL-1.1","author":{"name":"Alex Kahn"},"absolutejs":{"manifestContract":2},"publishConfig":{"access":"public"},"keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --sourcemap --target=bun --external @absolutejs/handoff --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","test":"bun test","typecheck":"tsc --noEmit","format":"prettier --write \"./**/*.{ts,json,md}\"","verify-package":"absolute-manifest verify-package","check:package":"bun run typecheck && bun run verify-package && bun run build && bun run verify-package --artifacts && bun run test","release":"bun run format && bun run check:package && bun publish"},"dependencies":{"@absolutejs/handoff":"0.1.0","@absolutejs/manifest":"^0.7.2","@sinclair/typebox":"^0.34.0"},"devDependencies":{"@types/bun":"1.3.14","prettier":"3.5.3","typescript":"5.8.3"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"_id":"@absolutejs/audit@0.2.3","gitHead":"e9114cdc3bbc8f24ccb9a8826eaf8268c0352845","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-GML06V2EOfePoqFrrC/Lc9KHMypHiy4ALg+EW7kYn56ER9Ra0vRnEgQdTv83DHz5TSnz+0oedKw0cVZoRQ27fg==","shasum":"2d19e4190655666263702edb955ce88fcfe9f1b7","tarball":"https://registry.npmjs.org/@absolutejs/audit/-/audit-0.2.3.tgz","fileCount":12,"unpackedSize":168896,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHIa+P3tT7/LnGkPV9QtstKjSbInDlrg5ZTDNrVJqggMAiEAy0ps+ZZKBdhB536am5/6miQnYngPyTwa/qQhA+1OwgM="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/audit_0.2.3_1785372207591_0.8638153023303714"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-30T03:23:55.690Z","modified":"2026-07-30T00:43:27.998Z","0.0.1":"2026-05-30T03:23:55.986Z","0.0.2":"2026-07-13T17:36:21.344Z","0.0.3":"2026-07-14T06:05:25.496Z","0.0.4":"2026-07-14T06:06:47.866Z","0.0.5":"2026-07-14T06:13:27.968Z","0.1.0":"2026-07-16T02:28:57.946Z","0.2.0":"2026-07-23T11:39:44.451Z","0.2.1":"2026-07-24T17:37:37.683Z","0.2.2":"2026-07-25T06:45:11.016Z","0.2.3":"2026-07-30T00:43:27.768Z"},"bugs":{"url":"https://github.com/absolutejs/audit/issues"},"author":{"name":"Alex Kahn"},"license":"BSL-1.1","homepage":"https://github.com/absolutejs/audit","keywords":["audit","audit-log","compliance","tamper-evident","hash-chain","siem","absolutejs","soc2"],"repository":{"type":"git","url":"git+https://github.com/absolutejs/audit.git"},"description":"Cross-surface audit-event substrate for the AbsoluteJS ecosystem — append-only event log with pluggable sinks, optional hash-chain tamper-evidence, and live-wire helpers that thread sync mutations, queue jobs, runtime exits, and secret rotations into one ","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# @absolutejs/audit\n\nCross-surface audit-event substrate for the AbsoluteJS ecosystem.\n\n**Docs:** [absolutejs.com/documentation/audit-overview](https://absolutejs.com/documentation/audit-overview)\n\nOne append-only log spanning sync mutations + queue jobs + runtime exits +\nsecret rotations + auth events + anything else the host wants to record.\nPluggable sinks, optional hash-chain tamper-evidence, live-wire helpers that\nattach to the substrate packages' existing listener APIs.\n\nAgent runs are first-class: `recordAgentRunEvent(audit)` plugs directly into\n`@absolutejs/agent-runtime`'s `onEvent`. It records signed discovery identity,\ndelegation attribution, lifecycle, effects, and budget usage while deliberately\nexcluding goals, prompts, payloads, outputs, checkpoints, and user IDs by default.\n\n## Install\n\n```sh\nbun add @absolutejs/audit\n```\n\n## The 30-second tour\n\n```ts\nimport {\n  createAudit,\n  memorySink,\n  consoleSink,\n  withIntegrity,\n  verifyChain,\n  recordRuntimeTransition,\n  recordQueueError,\n  recordSecretRotation,\n  recordSyncActivity,\n} from '@absolutejs/audit';\n\n// One sink to hold a tail in memory, one to ship JSON lines to your\n// existing log pipeline.\nconst audit = createAudit({\n  sinks: [\n    withIntegrity(memorySink({ max: 10_000 }), { secret: process.env.AUDIT_SECRET }),\n    consoleSink(),\n  ],\n});\n\n// Live-wire the substrate packages' lifecycle hooks.\nconst runtime = createRuntime({\n  onTransition: recordRuntimeTransition(audit),\n  // ...\n});\nconst worker = createQueueWorker({\n  onError: recordQueueError(audit),\n  // ...\n});\nbroker.onRotate('STRIPE_KEY', recordSecretRotation(audit));\nengine.onActivity(recordSyncActivity(audit));\n\n// Or emit directly for anything not covered by a helper.\nawait audit.append({\n  kind: 'billing.invoice.created',\n  actor: 'system',\n  target: invoice.id,\n  metadata: { amountCents: invoice.amountCents },\n});\n\n// Forensics later: detect any modification / removal / reordering.\nconst events = await sink.list?.({ since: someTimestamp });\nconst result = await verifyChain(events, process.env.AUDIT_SECRET);\nif (!result.ok) console.error(`Chain broken at index ${result.brokenAt}`);\n```\n\n## Design\n\n### Open-ended event shape\n\n```ts\ntype AuditEvent = {\n  at: number;\n  kind: string;             // open: \"auth.login\", \"sync.insert\", \"runtime.exit\", ...\n  actor?: string;           // userId, system component, etc.\n  target?: string;          // resourceId, tenantId, table name, etc.\n  metadata?: Record<string, unknown>;\n};\n```\n\n`kind` is a free-form namespaced identifier. No closed union — any package\n(yours included) can emit any event type without modifying audit.\n\n### Sinks are pluggable + composable\n\nBundled:\n\n- **`memorySink({ max })`** — in-process FIFO tail. Useful in tests and small\n  deployments. Pair with a durable sink for production.\n- **`consoleSink({ stream, stringify })`** — one JSON line per event to\n  stdout (default) or stderr. Rides the host's existing log pipeline.\n\nVendor-specific sinks (Postgres, SQS, SIEM forwarders) live as siblings in\n`@absolutejs/audit-adapters/*`.\n\nThe sink contract is intentionally minimal:\n\n```ts\ntype AuditSink = {\n  append: (event: AuditEvent) => Promise<void> | void;\n  list?: (filter?: AuditEventFilter) => Promise<AuditEvent[]> | AuditEvent[];\n  prune?: (before: number) => Promise<number> | number;\n  flush?: () => Promise<void> | void;\n  close?: () => Promise<void> | void;\n  readonly name?: string;\n};\n```\n\n`append` is required; the rest is optional. A SIEM forwarder doesn't implement\n`list`; a memory tail does. `createAudit` fans out to every sink — a sink\nthat throws bumps `audit.metrics().sinkErrors[name]` but doesn't block the\nothers.\n\n### Hash-chain integrity is a decorator\n\n```ts\nconst sink = withIntegrity(memorySink(), { secret: 'shared-key' });\n// Every appended event carries metadata.__integrity = { hash, previousHash, writerId }.\n\n// Later:\nconst events = await sink.list?.();\nconst result = await verifyChain(events, 'shared-key');\n// { ok: true } or { ok: false, brokenAt: <index> }\n```\n\n- **Concurrent appends are serialized within a writer.** The chain is the\n  correctness contract, not a perf optimization — `withIntegrity` queues\n  appends so concurrent callers don't race on `lastHash`.\n- **Per-writer sub-chains** let multiple instances or a single instance\n  across restarts each own a self-contained chain. Default: random\n  `writerId` per `withIntegrity` call. Pass a stable `writerId` to resume\n  one chain across restarts (seeded by scanning the sink, or supply\n  `loadWriterHead` for a scan-free seed).\n- **HMAC mode** (when you provide `secret`) means an attacker with write\n  access still can't forge a valid chain. Without a secret, the chain uses\n  SHA-256 — modification is detectable but a writer can forge new chains.\n- The integrity link rides in `metadata.__integrity`, so any sink (memory,\n  jsonb, S3 JSON) preserves it through serialization round-trips.\n\n### Live-wire helpers\n\nEach helper returns a callback the host wires into the SOURCE package's\nexisting listener API. Audit doesn't reach into the runtime's lifecycle.\n\n| Helper | Wires into | Emits |\n|---|---|---|\n| `recordRuntimeTransition(audit)` | `createRuntime({ onTransition })` | `runtime.<type>` |\n| `recordAgentRunEvent(audit)` | `createAgentRuntime({ onEvent })` | `agent.run.<event>` / `agent.step.<kind>` |\n| `recordQueueError(audit)` | `createQueueWorker({ onError })` | `queue.error` |\n| `recordSecretRotation(audit)` | `broker.onRotate(name, ...)` | `secrets.rotated` |\n| `recordSyncActivity(audit)` | `engine.onActivity(...)` | `sync.change.<op>` / `sync.mutation.<status>` / `sync.batch.<status>` / `sync.retry` |\n| `recordHandoffEvidence(audit)` | `createHandoffRecorder({ observer })` | `handoff.<operation>.<outcome>` |\n\nFor events not covered by a helper (your own app's billing / impersonation /\ndeletion etc.), call `audit.append({ kind, ... })` directly.\n\nThe handoff helper records operational identity but excludes evidence messages,\nreferences, external ids, and raw external-system payloads.\n\n### Metrics\n\n```ts\naudit.metrics();\n// {\n//   appended: 1234,     // successful appends (all sinks succeeded)\n//   appendErrors: 2,    // appends where at least one sink threw\n//   sinkErrors: { memory: 0, console: 0, postgres: 2 }\n// }\n```\n\nScrape on a 30s interval; alert on `appendErrors` climbing.\n\n## License\n\n[BSL-1.1](./LICENSE) with a Tier-A carveout: you can't use this to operate\na hosted audit-trail / compliance-log SaaS that competes with Datadog Audit\nTrail, Splunk Enterprise Audit, Cribl Stream, Vanta, Drata, Sumo Logic, or\nAWS CloudTrail's hosted equivalents. You CAN use it as one piece of your\nown application (including your own SaaS). The license auto-converts to\nApache 2.0 on 2030-05-29.\n","readmeFilename":"README.md"}