{"_id":"@12-apps/audit","_rev":"16-60841517d04b037319980c5f69fd5e8b","name":"@12-apps/audit","dist-tags":{"latest":"5.7.1"},"versions":{"1.0.0":{"name":"@12-apps/audit","version":"1.0.0","license":"MIT","_id":"@12-apps/audit@1.0.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"f80c05a4d4857cb6537f0208ef713909254daa5a","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-1.0.0.tgz","fileCount":31,"integrity":"sha512-RDr6v9IJ7AOnOVWmnfcXEzJDEO6Cr7xY95EYJSa6AcADEZ0snKnHjjATJI8FkBiH0QxwuQQs/kNJlTgIXUClgw==","signatures":[{"sig":"MEUCIAOAzfyfs2V66NEoSNGgpplqfWolKPPOeK3UgCBMF7IZAiEA/lCBxkISuMNDN/KQtetcXVPsbYTnEwAUJuH6fqaGjfU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":171909},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"416a99813893749950ed321f6dfd16c5dbacfda1","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"tigredonorte","email":"tigredonorte3@gmail.com"},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^4.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.20.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_1.0.0_1786593655170_0.627475279935388","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@12-apps/audit","version":"2.0.0","license":"MIT","_id":"@12-apps/audit@2.0.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"963c301b01ac0b7526a67101524e9435b5cd4b28","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-2.0.0.tgz","fileCount":33,"integrity":"sha512-FLo1AwdwJpCZqzgQBb/OKA0XQk74tosHMIky/FZfhlo4QS4R7INJigsof8arJl/dw6CfIZNjuxThuaSQPT4p7g==","signatures":[{"sig":"MEYCIQCAySz2lOAnxbnO/ZoRSeHS2/MoZfrjkZ3vPDnUv1Z+awIhAMKHgcoqiGMmj8n8c1SJ8zQOpAXuA/zsLBJSHmNO3HHR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213389},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"72cb700502862b7f2f9e767d22a0ba122f41729c","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6dff9b9-15a1-4128-aba2-87db9ddc682e"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^4.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.20.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_2.0.0_1786736734403_0.8085414552134358","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@12-apps/audit","version":"3.0.0","license":"MIT","_id":"@12-apps/audit@3.0.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"6858acb668dea872442e768f029dc739c47bb14d","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-3.0.0.tgz","fileCount":33,"integrity":"sha512-/6Y/uBzLuy0v2dhq9Iycgh2GUQ/hYb6ilg1gmvosMPZpwJfMlBrVcsJTsw6jpuKnqN6Z47Z54ZOMvUR8nixtwA==","signatures":[{"sig":"MEUCIQCHJ77wcEq8cUbmBiWK4r4sJW1MjQ1/4nLx4L0uhUVygQIgHXHIunYZ7s0SPNX0YcW64wJYic7oxPfbfIsCG6/aJjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213965},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"904c9a753fe79c48a50575a3831e5ac7d6831d8c","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6dff9b9-15a1-4128-aba2-87db9ddc682e"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^4.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.20.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_3.0.0_1786748724169_0.4791315966070011","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@12-apps/audit","version":"4.0.0","license":"MIT","_id":"@12-apps/audit@4.0.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"c5c52ca2792f174680df1997f3c52baaa955fd45","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-4.0.0.tgz","fileCount":33,"integrity":"sha512-+vKwVJ217ThHLCshLwd56MyNjmsT6vWgiZA61DpGYvyOG9c5aWiw+j4hEWTyPC7sj8NMU/wWJbaYxD0iKW3wKQ==","signatures":[{"sig":"MEUCIQCZ/8eIVPkB66HibSObn6//aMZ3i4d5KxElXLFqREn/NQIgV2qZGRRCJHRLt49fnNeOUZgPx/SVH//S5ombp+dUJIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213582},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"f837d4958a5b21e02d2f02a1c008ff1d1a23937a","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6dff9b9-15a1-4128-aba2-87db9ddc682e"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.20.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_4.0.0_1786800346225_0.09822808889366952","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@12-apps/audit","version":"4.1.0","license":"MIT","_id":"@12-apps/audit@4.1.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"e3d31a031e945b10e79e783ab5afc6a5e522d83c","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-4.1.0.tgz","fileCount":33,"integrity":"sha512-akdU6gR+krD1OtUAKQFpebfVx7wsHgAxTb2d0yFVTKVNcKkB+QlLMdW+nINxcnzjcVCgB80z3QGwm/b2DqZHtw==","signatures":[{"sig":"MEUCIQC5yTcOBL/pm+0em0e8raSuHkC7ZcSSa+7c+SggpkjgkwIgNa9KtXTp2doGp2yJRPlNG7uSg6uOqRCZcXpztjorzI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@4.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":213582},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"96eb4c415df62ceb17308a914c912abed5c35f64","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6dff9b9-15a1-4128-aba2-87db9ddc682e"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.20.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_4.1.0_1786805443123_0.7729881569618915","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@12-apps/audit","version":"5.0.0","license":"MIT","_id":"@12-apps/audit@5.0.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"f5716eb42096224e0d46fc6ba01cb9f0be4c2768","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.0.0.tgz","fileCount":34,"integrity":"sha512-J6UoDFqo4/WudA/0OFfpB2x7sfPQaUm5qmNojbGwG/lQEzuN1XzgHcL9TxJdtCDmiYmR3S659nfKuAEhkN2XKQ==","signatures":[{"sig":"MEUCIA03nvDhZDMTyuh0eRgPctfIvylzgCSvA/4XwkzHBMFPAiEAibVcat+gbj3ZU/0DgvM4mUo46XYFqepsooX2D4VubdQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":235104},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"fc0812043bb364de6d46a7ba91f0fbb95d2f488b","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6dff9b9-15a1-4128-aba2-87db9ddc682e"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.20.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.0.0_1786834461087_0.639057920830036","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"@12-apps/audit","version":"5.0.1","license":"MIT","_id":"@12-apps/audit@5.0.1","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"83cd4208829800e30223c858891f0825222e1d65","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.0.1.tgz","fileCount":34,"integrity":"sha512-Ifj4jNmProwvB5MkmWV+9ZHZ4pl0PMr2JPaQKbtUq+lOE3aAqQ0hun45UkhUatvQfq2Qe5zG7OqCzR2Se61XYA==","signatures":[{"sig":"MEUCIQD6mbSDCpyoE9wzFSN3//rHAR6vlmlHAJkVTW0Hdgp4VQIgELf1sz4qXLLptP3B/0XeAAVO7iZpaTE6SheeUDB/T/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236528},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"44775fedcef2e1b856bd46740cb3bb71472a8508","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6dff9b9-15a1-4128-aba2-87db9ddc682e"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^5.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.20.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.0.1_1787029202300_0.24495009443656013","host":"s3://npm-registry-packages-npm-production"}},"5.0.2":{"name":"@12-apps/audit","version":"5.0.2","license":"MIT","_id":"@12-apps/audit@5.0.2","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"578b7df5025ab421a39e8d6613044f46721dd31b","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.0.2.tgz","fileCount":34,"integrity":"sha512-Ir6y30PnHTFWVPMtU4QkZcfVbrqsCWN08U8tr6uYwq6fBwRVTH4+Y3w9I76lvytHyw4uy8xaij8EHVnx0gA+/Q==","signatures":[{"sig":"MEQCIGpffz+QoXB7YD7q61djOgtcdJnmY4JNB6banZJks2KpAiBouId+roSx4+7G1dr8Ys+vxHhTWxgyiE/LIg7ZR5nfNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":236528},"type":"module","engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./package.json":"./package.json"},"gitHead":"3c4711049bf8351685612372531c3cae1370bbbb","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:c6dff9b9-15a1-4128-aba2-87db9ddc682e"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.21.1","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.1","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.0.2_1787327311096_0.5728986829396929","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@12-apps/audit","version":"5.1.0","license":"MIT","_id":"@12-apps/audit@5.1.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"335f10219aa4e8791fcf86710dfe86dcd104bb13","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.1.0.tgz","fileCount":35,"integrity":"sha512-zLzwCrIDQPFnTev2NJ6VM6SzKJsWanHG2LA9QGk7EIjfBlzqmpHkQDtSkm4T7loGZHCi4HebCTK8qZSPeDqX1Q==","signatures":[{"sig":"MEUCIQCI0tZBvjA+J+ILoceBBGhOwCWQ/900eac5j3+VAc1eawIgYPhOpuOPKLmN7VwOebdUJ1fEjtouOjPP4FPTja18WyY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":238963},"type":"module","wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./manifest":"./src/manifest/index.ts","./package.json":"./package.json"},"gitHead":"3e569b9846bc23da468175758202ef986093a550","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@12-apps/wiring":"^1.10.0","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.21.1","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.1","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0","@12-apps/wiring":">=1.3.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.1.0_1787416688202_0.07825790208403927","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@12-apps/audit","version":"5.2.0","license":"MIT","_id":"@12-apps/audit@5.2.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"b96937adc157588629e474b8c7a9056b387bf631","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.2.0.tgz","fileCount":36,"integrity":"sha512-H4whY/M7Tcc2zsSG2/Ef7B5qXMgYsKAapqjNJ1RHe/y8hHL6YU4EkWWaEr7Qs6BpxuzZ1lDxFJi1dD1LbaNBAw==","signatures":[{"sig":"MEQCIDaqCpQjIR8JsOgt90yzpIyHOGDcktL69FbCCScrhuDSAiAgmgoTrAsV+Dmg49Pl5RwI2u2B8jKmkAiNNPB2Du4RRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":241362},"type":"module","wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./manifest":"./src/manifest/index.ts","./package.json":"./package.json","./manifest/server":"./src/manifest/server.ts"},"gitHead":"f976ac2b51207157a56e7e3faf148b5318807685","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@12-apps/wiring":"^1.10.0","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.21.1","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.1","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0","@12-apps/wiring":">=1.3.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.2.0_1787438552573_0.20084665347944886","host":"s3://npm-registry-packages-npm-production"}},"5.3.0":{"name":"@12-apps/audit","version":"5.3.0","license":"MIT","_id":"@12-apps/audit@5.3.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"c5e205568e9c2a45b18df7721ae016383af0e340","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.3.0.tgz","fileCount":38,"integrity":"sha512-wr9eRPLYZnUh6lQDKWLIUdVO/SRg47fS4xd9/M+9XoK95ITyMHO9LICwuoYDtjh/YFPqq4KY7DgvD1iQCAcKaA==","signatures":[{"sig":"MEUCIFxFwAyfeJrLo3Tbg1xP3t0Rwwzkdrc8kPQQxNYsuc1lAiEAzGuDR3FC1wrjcONbxOlLEtORDo7Udvwwe9ZkM/zzZlo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":251610},"type":"module","wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./manifest":"./src/manifest/index.ts","./manifest/web":"./src/manifest/web.ts","./package.json":"./package.json","./manifest/server":"./src/manifest/server.ts"},"gitHead":"142fe64617cadbd2f852a257eafd0aaf95b73fbc","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.9.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@12-apps/wiring":"^1.13.0","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.21.1","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.20.1","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0","@12-apps/wiring":">=1.3.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@12-apps/wiring":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.3.0_1787597466223_0.6739746898459018","host":"s3://npm-registry-packages-npm-production"}},"5.4.0":{"name":"@12-apps/audit","version":"5.4.0","license":"MIT","_id":"@12-apps/audit@5.4.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"0506326aba71f3bc3889b0001d715c4e0ee6a98a","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.4.0.tgz","fileCount":38,"integrity":"sha512-nmtWslOzW+t9LA+yPnW4Oq7VRjxVngnE2XjFZE8m5GqaOku4PHwW3tT6z5UcFCiJNspLc/HmaOECyGVcsdzWbQ==","signatures":[{"sig":"MEUCIQCu96WsWHY+NMiql1FbHq7XgOpVUbXtLxNOWIU5o+7hdAIgQoeL0c4r7YbIn7p9P6KWz0PL4k6pMfXGh7ANukerEC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":251635},"type":"module","wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./manifest":"./src/manifest/index.ts","./manifest/web":"./src/manifest/web.ts","./package.json":"./package.json","./manifest/server":"./src/manifest/server.ts"},"gitHead":"4714bd10c901bcc51544843d5d6091cc1509e649","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.10.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@12-apps/wiring":"^1.14.0","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.22.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.21.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0","@12-apps/wiring":">=1.3.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@12-apps/wiring":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.4.0_1787617897652_0.45945847599651146","host":"s3://npm-registry-packages-npm-production"}},"5.5.0":{"name":"@12-apps/audit","version":"5.5.0","license":"MIT","_id":"@12-apps/audit@5.5.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"9c2dbf378285516ef1a056ee0d6b679388b401e7","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.5.0.tgz","fileCount":41,"integrity":"sha512-oLzSHHYUt9nKcvnZJhpyacw9yNG2j0Z4qVw6jPDuno/AD421yRYHL6lhaXzKHE9aMRXth2xxqG1a2XR5bb2Ajw==","signatures":[{"sig":"MEUCIQDm2tUotSw032pLEJ91gbxRjaGQ0+/r9HN0qLhppzFWqQIgDy5Yj4zX3gvpyQ3WLA9XumgjGJNSirWYNAF6Mvck8VQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":264519},"type":"module","wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./manifest":"./src/manifest/index.ts","./manifest/web":"./src/manifest/web.ts","./package.json":"./package.json","./manifest/server":"./src/manifest/server.ts"},"gitHead":"43e14eaf802e483ef896d8d7d0c17e89efb663bb","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.11.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@12-apps/wiring":"^1.14.0","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.22.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.21.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0","@12-apps/wiring":">=1.3.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@12-apps/wiring":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.5.0_1787679530960_0.6582237500492472","host":"s3://npm-registry-packages-npm-production"}},"5.6.0":{"name":"@12-apps/audit","version":"5.6.0","license":"MIT","_id":"@12-apps/audit@5.6.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"64c448ba76310195c06d7228d55389ea7a833515","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.6.0.tgz","fileCount":41,"integrity":"sha512-3SSgZgG7LImDUwoo8Ngn6tQu0p9L/xgrxr82qg2AtJZMCx9L6ZQBM34+JP5X9SiyPF+eQIOZnc5yayiHMcnkRA==","signatures":[{"sig":"MEUCIQCFETtEMjMQ+QJuHJxP+2+iRz0tDD0hayaRYrKfNc5UQgIgf5K+aeNyVGTfxIihstC2rGIhxjid8PPTjxjlnG83p0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":268865},"type":"module","wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./manifest":"./src/manifest/index.ts","./manifest/web":"./src/manifest/web.ts","./package.json":"./package.json","./manifest/server":"./src/manifest/server.ts"},"gitHead":"b97239d89e9153cfed25754fadf80f6e83ebfa37","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.11.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@12-apps/wiring":"^1.14.0","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.22.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.21.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0","@12-apps/wiring":">=1.3.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@12-apps/wiring":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.6.0_1787680643765_0.836470187331934","host":"s3://npm-registry-packages-npm-production"}},"5.7.0":{"name":"@12-apps/audit","version":"5.7.0","license":"MIT","_id":"@12-apps/audit@5.7.0","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"homepage":"https://github.com/12-apps/shared-packages#readme","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"dist":{"shasum":"a5a361f79dfe77d5da738bb1293b8ec7a52cd75d","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.7.0.tgz","fileCount":42,"integrity":"sha512-Pxk5MEAhwz46vWY3idSgcUBaERiAgvlMx1UAvMbVnAUNWmZT0aU3LMBWX9A4IpiIp1cxjo2n3Ft0U+bwlJC4Rg==","signatures":[{"sig":"MEQCIFW/QijQgTLxOEjTW8OE1k1+IZuKNl+lq8lNka7KG0C6AiBDOdjoux7HLG6dGHn8eZzawtHFi4nBuX9ZRbGsB0S9Pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":277816},"type":"module","wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"engines":{"node":">=22.0.0"},"exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./react":"./src/react/index.ts","./server":"./src/server/index.ts","./manifest":"./src/manifest/index.ts","./manifest/web":"./src/manifest/web.ts","./package.json":"./package.json","./manifest/server":"./src/manifest/server.ts"},"gitHead":"27f5f47a5df91aa7d4a956d3e5bf670d5f29c4ae","scripts":{"lint":"eslint src --max-warnings 0","test":"node ../../scripts/vitest-with-teardown.mjs run","clean":"rm -rf node_modules coverage","typecheck":"tsc --noEmit","test:watch":"vitest watch","check-types":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"repository":{"url":"git+https://github.com/12-apps/shared-packages.git","type":"git","directory":"packages/audit"},"_npmVersion":"12.0.2","description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.3.5","@12-apps/ui":"^6.11.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","eslint":"^9.39.1","vitest":"^3.2.4","react-dom":"^19.2.0","typescript":"^5.9.2","@types/react":"19.2.2","@12-apps/wiring":"^1.14.0","@types/react-dom":"19.2.2","@12-apps/eslint-config":"^1.22.0","@testing-library/react":"^16.1.0","@12-apps/typescript-config":"^1.21.0","eslint-plugin-test-flakiness":"^1.4.0"},"peerDependencies":{"hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0","@12-apps/wiring":">=1.3.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@12-apps/wiring":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/audit_5.7.0_1787701420902_0.17799400280144728","host":"s3://npm-registry-packages-npm-production"}},"5.7.1":{"name":"@12-apps/audit","version":"5.7.1","type":"module","sideEffects":false,"description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","exports":{".":"./src/index.ts","./hono":"./src/hono/index.ts","./manifest":"./src/manifest/index.ts","./manifest/server":"./src/manifest/server.ts","./manifest/web":"./src/manifest/web.ts","./package.json":"./package.json","./react":"./src/react/index.ts","./server":"./src/server/index.ts"},"scripts":{"clean":"rm -rf node_modules coverage","test":"node ../../scripts/vitest-with-teardown.mjs run","test:watch":"vitest watch","lint":"eslint src --max-warnings 0","check-types":"tsc --noEmit","typecheck":"tsc --noEmit","prisma:sync":"node scripts/sync-audit-schema.mjs","prisma:sync:check":"node scripts/sync-audit-schema.mjs --check"},"peerDependencies":{"@12-apps/wiring":">=1.3.0","hono":">=4.0.0","react":">=19.0.0","react-dom":">=19.0.0"},"peerDependenciesMeta":{"hono":{"optional":true},"react":{"optional":true},"react-dom":{"optional":true},"@12-apps/wiring":{"optional":true}},"devDependencies":{"@12-apps/eslint-config":"^1.22.0","@12-apps/typescript-config":"^1.21.0","@12-apps/wiring":"^1.14.0","@testing-library/react":"^16.1.0","@types/react":"19.2.2","@types/react-dom":"19.2.2","eslint":"^9.39.1","eslint-plugin-test-flakiness":"^1.4.0","hono":"^4.6.0","jsdom":"^25.0.1","react":"^19.2.0","react-dom":"^19.2.0","typescript":"^5.9.2","vitest":"^3.2.4"},"engines":{"node":">=22.0.0"},"license":"MIT","publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"repository":{"type":"git","url":"git+https://github.com/12-apps/shared-packages.git","directory":"packages/audit"},"dependencies":{"@12-apps/ui":"^6.11.1","zod":"^4.3.5"},"wiring":{"db":{"partial":"prisma/audit.prisma","migrations":"prisma/migrations"}},"gitHead":"fe847d0625c911a117e9118a2fb9fde4a4480763","_id":"@12-apps/audit@5.7.1","bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"homepage":"https://github.com/12-apps/shared-packages#readme","_nodeVersion":"24.19.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-TKxu3ulp7jW8RICQ6kfg4kQlkEw/u/M+4GXSbqo0a7ttJifUlB8UTZWvHRQAGLoSe5j+zjvnfhXXI2emYzYNdg==","shasum":"b8eea1c37e77fec26bc6bd7a40254fddef64b82a","tarball":"https://registry.npmjs.org/@12-apps/audit/-/audit-5.7.1.tgz","fileCount":42,"unpackedSize":278346,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@12-apps%2faudit@5.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDHh9QWBdg0MPYrtacxYbHgzO367eMqkb3wvjlBfapmgAIhAKS8OCc84/WjAkQbB3aqR8I+74S5Jqktps2xg4jz9q58"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:52ed48f8-ec64-4a7e-ab1b-9dec648e48d8"}},"directories":{},"maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/audit_5.7.1_1787705761574_0.41532461989083025"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-13T04:00:54.875Z","modified":"2026-08-26T00:56:02.054Z","1.0.0":"2026-08-13T04:00:55.322Z","2.0.0":"2026-08-14T19:45:34.546Z","3.0.0":"2026-08-14T23:05:24.316Z","4.0.0":"2026-08-15T13:25:46.378Z","4.1.0":"2026-08-15T14:50:43.350Z","5.0.0":"2026-08-15T22:54:21.225Z","5.0.1":"2026-08-18T05:00:02.450Z","5.0.2":"2026-08-21T15:48:31.253Z","5.1.0":"2026-08-22T16:38:08.356Z","5.2.0":"2026-08-22T22:42:32.710Z","5.3.0":"2026-08-24T18:51:06.352Z","5.4.0":"2026-08-25T00:31:37.859Z","5.5.0":"2026-08-25T17:38:51.132Z","5.6.0":"2026-08-25T17:57:23.930Z","5.7.0":"2026-08-25T23:43:41.050Z","5.7.1":"2026-08-26T00:56:01.728Z"},"bugs":{"url":"https://github.com/12-apps/shared-packages/issues"},"license":"MIT","homepage":"https://github.com/12-apps/shared-packages#readme","repository":{"type":"git","url":"git+https://github.com/12-apps/shared-packages.git","directory":"packages/audit"},"description":"Generic, portable action audit. Framework-free core (the action/resource vocabulary and the deny-by-default diff redaction), host-mounted backend surface (./server: the transactional writer, the per-request actor context, the created_by/updated_by stamp a","maintainers":[{"name":"tigredonorte","email":"tigredonorte3@gmail.com"}],"readme":"# `@12-apps/audit`\n\nAction audit as a package: an append-only \"who did what\" trail, its transactional\nwriter, the per-request actor context behind it, the two Prisma extensions that\nenforce it, the retention sweep, the tenant-scoped listing endpoint and the\nviewer that reads it.\n\n**The vocabulary is yours.** This package ships no actions, no resource types,\nno field allowlists and no product language — you declare them and pass them in.\nSee [ADOPTING.md](./ADOPTING.md) for the migration table if you are coming from\n1.x.\n\nTwo halves, one factory each.\n\n```ts\n// backend\nimport { createApiAudit } from '@12-apps/audit/server';\nimport { auditRouter } from '@12-apps/audit/hono';\n\n// frontend\nimport { createWebAudit } from '@12-apps/audit/react';\n```\n\n## What it is for\n\nAn audit trail is only worth having if it cannot be edited afterwards, and only\ndefensible if it names the right person. This package is those two properties,\nmade mechanical:\n\n- **Immutable.** The entry is written INSIDE the caller's transaction, so \"it\n  happened\" and \"it was logged\" commit or roll back together — never\n  fire-and-forget. Afterwards the model refuses `update` / `upsert` / `delete`\n  at the client layer.\n- **Correctly attributed.** An entry carries a PAIR of identities: the real human\n  whose credentials authorized the write, and — when a session is impersonating —\n  who the screen claimed to be. One field cannot answer both questions, and\n  collapsing them is not recoverable on an append-only table.\n\n## The vocabulary\n\nOne value describes what may be audited, what a row may say, and what a human\nreads. Both halves take the same object.\n\n```ts\nimport { defineAuditVocabulary } from '@12-apps/audit';\n\nexport const AUDIT = defineAuditVocabulary({\n  actions: {\n    'post.publish': { label: 'Post published' },\n    'comment.hide': { label: 'Comment hidden' },\n  },\n  resources: {\n    post: { label: 'Post', fields: ['title', 'state', 'publishedAt'] },\n    comment: { label: 'Comment', fields: ['state', 'reason'] },\n  },\n});\n```\n\n`fields` is a **deny-by-default allowlist**: a field the diff carries but the\nvocabulary does not name is dropped, so a caller passing a whole database row\ncannot leak PII into an append-only table. The flip side is that an omission is\ninvisible at the write site and shows up as a hollow entry — list every field\neach writer of a shared resource type emits.\n\nThe factory refuses, at assembly, everything that would make the vocabulary\nunsafe later: an empty axis, an empty `fields`, a blank label, a blank or\nwhitespace-padded id or field name, a duplicate field, an integer-like id. Every\none of those is a fail-open, explained in [ADOPTING.md](./ADOPTING.md) §5.\n\n## The backend half\n\n```ts\nconst audit = auditRouter({\n  db: () => getPrismaClient(),               // the seam: one owned model\n  vocabulary: AUDIT,                         // what may be audited\n  trackedModels: ['Post', 'Comment'],        // created_by / updated_by\n  retention: { floorDays: 365 },\n  directory: { getUsers, listActors },       // who a user id is (optional)\n  messages: { forbidden: 'No access.' },     // your product's copy\n  resolveActor: async (request) => {         // WHO is calling\n    const session = await auth(request.raw);\n    if (!session) return null;\n    const { tenantId, permissions } = await resolveTenant(request.params.tenantSlug, session);\n    // Return null — the 401 — rather than an actor with no tenant. An `undefined`\n    // tenantId is a cross-tenant read waiting to happen, so the package refuses it\n    // with a 500 (ADOPTING.md rule 1).\n    if (!tenantId) return null;\n    return {\n      tenantId,\n      userId: session.user.id,\n      permissions,\n      role: session.role,\n      scope: tenantId,\n      onBehalfOfUserId: session.impersonating?.subjectUserId ?? null,\n    };\n  },\n});\n\napp.use('*', audit.actorContext);              // stamp every request\napp.route('/api/admin/:tenantSlug', audit.router);\n```\n\nWhat you get back:\n\n| | |\n|---|---|\n| `routes` | framework-neutral descriptors, in mount order (`./hono` adapts them) |\n| `write(tx, entry)` | the transactional writer — call it inside your transaction |\n| `extendPrismaClient(client)` | both extensions, applied once at client construction |\n| `withActorContext(req, run)` | the actor-context middleware (`actorContext` in `./hono`) |\n| `retention` | `purgeExpired()` and `purgeTenantWindow(tenant, since, cutoff)` |\n| `store` | the tenant-scoped read, for a host surface that lists the same rows |\n| `vocabulary` | the vocabulary in force — labels and validation |\n\n### Endpoints\n\n| Method | Path | |\n|---|---|---|\n| `GET` | `/audit-logs` | the tenant's trail, newest first — `{ data, pagination }` |\n| `GET` | `/audit-logs/actors` | the viewer's actor-filter options — `{ data }` |\n\nFilters: `q` (resource id contains, ≤200 chars), `action_in`, `resourceType_in`,\n`actorUserId`, `resourceId`, `from`/`to` (inclusive `YYYY-MM-DD`), `sort`,\n`page`, `pageSize`. The paging numbers are config (`pagination`), defaulting to\n20 / 100 / 10 000, and they are published as bounded integers rather than as\nbare strings. Unknown filter values, an unservable `sort` and malformed dates are\n`400` — never accepted and ignored; a denial is `{ error }` at the top level with\n`401` / `403`.\n\nThe listing's order is **total**: `created_at DESC, id DESC` by default, or\n`ASC, ASC` for `?sort=createdAt:asc` — `created_at` is the one axis a trail has,\nand reading it forwards is how an incident is reconstructed. The tie-break\nfollows the direction, or the two views would not be reverses of each other. An audit trail is\nwritten in bursts and `created_at` is `timestamp(3)`, so ties are ordinary — and\nSQL guarantees nothing about the order of rows a sort cannot distinguish, which\nwith `skip`/`take` means a reader sees one entry twice and never sees another.\nThe tie-break is part of the seam (`AUDIT_LOG_ORDER_BY`), so a non-Prisma\nimplementation maps it rather than reinventing it.\n\nThere is **no write endpoint**. Entries are written by the mutations themselves,\nso a POST here would only be a way to forge history.\n\n### The permission it gates with\n\n`audit:read` is exported as `AUDIT_READ_PERMISSION`, because this package owns\nthe endpoint it guards. Compose it into your catalog, or spell it differently\nwith `gatePermissions.read` — the constant is the default, not a requirement.\n\n## The frontend half\n\n```ts\nconst { page: AuditLog } = createWebAudit({\n  apiBase: '/api/admin/my-store',\n  vocabulary: AUDIT,\n  labels: { title: 'History' },   // your product's words\n});\n```\n\nThe whole SCREEN, on the shared `DataViews` grid: the dashboard header with its\n`[i]` and its export, the search box, the action / resource / actor filter\npills, the period range, the sortable date column, column visibility, saved\nviews, the trail with its diff summary and the server-mode pager — and the\nimpersonation pair rendered as one line naming **both** people. The vocabulary\nis shared with the backend half, so an action that exists is an action the\nviewer can label.\n\nBeing the SAME grid the host's other lists use is the point: an operator moving\nbetween Pedidos, Produtos and the trail learns one filter bar. Two host-side\nrequirements come with it — `DataViewsCopyProvider` at your root (the grid's own\nwords are yours, and it refuses to invent them), and a `table` wrapper if you\nwant saved views, because persistence is a backend a package cannot invent. See\nADOPTING.md §4b.\n\nCopy defaults to English and dates to the runtime's own locale. Both are\nfallbacks rather than recommendations — a package cannot know your market, and\n1.x defaulted to one application's.\n\n## The database\n\nThe package owns one model (`prisma/audit.prisma`) and its migration. A host\ncopies the partial in with the package's own script:\n\n```bash\nnode node_modules/@12-apps/audit/scripts/sync-audit-schema.mjs [<host-schema-dir>]\n```\n\nThe migration is **replay-safe** (`CREATE TABLE IF NOT EXISTS`,\n`ADD COLUMN IF NOT EXISTS`, `CREATE INDEX IF NOT EXISTS`), so a host that already\nhas an `audit_logs` table adopts it with no baselining and no\n`prisma migrate resolve --applied`.\n\n## What this does NOT protect against\n\nStated plainly, because a guard whose limits are undocumented gets trusted past\nthem:\n\n- **Raw SQL bypasses the append-only guard.** `$executeRaw*` / `$queryRaw*` never\n  reach a model delegate, so anyone holding the client can\n  `DELETE FROM audit_logs`. That is deliberate — it is the only way the retention\n  sweep can run — and it means the guard stops the ACCIDENT, not a determined\n  operator. Guarantees at that level are database privileges or a trigger, and\n  the host owns both.\n- **Another connection is unaffected.** psql, a migration, a second client built\n  without the extensions.\n- **The host still owns authorization.** The package gates on the permission ids\n  the host resolved; it does not compute them, and it will read nothing for an\n  actor that carries none.\n\nSee [ADOPTING.md](./ADOPTING.md) for the full contract, the impersonation pair's\ndesign, the assembly refusals and the checklist.\n","readmeFilename":"README.md"}