@blamejs/blamejs-shop 0.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1220) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/LICENSE +17 -0
  3. package/README.md +117 -0
  4. package/SECURITY.md +139 -0
  5. package/lib/admin.js +952 -0
  6. package/lib/analytics.js +267 -0
  7. package/lib/cart.js +279 -0
  8. package/lib/catalog-import.js +344 -0
  9. package/lib/catalog.js +769 -0
  10. package/lib/checkout.js +320 -0
  11. package/lib/config.js +151 -0
  12. package/lib/customers.js +322 -0
  13. package/lib/email.js +242 -0
  14. package/lib/externaldb-d1.js +283 -0
  15. package/lib/index.js +57 -0
  16. package/lib/inventory-alerts.js +198 -0
  17. package/lib/newsletter.js +142 -0
  18. package/lib/order.js +380 -0
  19. package/lib/payment.js +318 -0
  20. package/lib/pricing.js +185 -0
  21. package/lib/r2-bridge.js +169 -0
  22. package/lib/shipping.js +185 -0
  23. package/lib/storefront.js +2160 -0
  24. package/lib/subscriptions.js +410 -0
  25. package/lib/tax.js +161 -0
  26. package/lib/theme.js +194 -0
  27. package/lib/vendor/MANIFEST.json +19 -0
  28. package/lib/vendor/blamejs/.clusterfuzzlite/Dockerfile +23 -0
  29. package/lib/vendor/blamejs/.clusterfuzzlite/build.sh +34 -0
  30. package/lib/vendor/blamejs/.clusterfuzzlite/project.yaml +16 -0
  31. package/lib/vendor/blamejs/.dockerignore +45 -0
  32. package/lib/vendor/blamejs/.gitattributes +42 -0
  33. package/lib/vendor/blamejs/.github/CODEOWNERS +4 -0
  34. package/lib/vendor/blamejs/.github/FUNDING.yml +2 -0
  35. package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/bug_report.md +58 -0
  36. package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/config.yml +8 -0
  37. package/lib/vendor/blamejs/.github/ISSUE_TEMPLATE/feature_request.md +99 -0
  38. package/lib/vendor/blamejs/.github/PULL_REQUEST_TEMPLATE.md +77 -0
  39. package/lib/vendor/blamejs/.github/dependabot.yml +37 -0
  40. package/lib/vendor/blamejs/.github/workflows/actions-lint.yml +148 -0
  41. package/lib/vendor/blamejs/.github/workflows/cflite_batch.yml +107 -0
  42. package/lib/vendor/blamejs/.github/workflows/cflite_pr.yml +122 -0
  43. package/lib/vendor/blamejs/.github/workflows/ci.yml +511 -0
  44. package/lib/vendor/blamejs/.github/workflows/codeql.yml +50 -0
  45. package/lib/vendor/blamejs/.github/workflows/npm-publish.yml +655 -0
  46. package/lib/vendor/blamejs/.github/workflows/release-container.yml +406 -0
  47. package/lib/vendor/blamejs/.github/workflows/scorecard.yml +101 -0
  48. package/lib/vendor/blamejs/.github/workflows/sha-to-tag-verify.yml +134 -0
  49. package/lib/vendor/blamejs/.gitignore +102 -0
  50. package/lib/vendor/blamejs/.gitleaks.toml +166 -0
  51. package/lib/vendor/blamejs/.hadolint.yaml +18 -0
  52. package/lib/vendor/blamejs/.npmrc +5 -0
  53. package/lib/vendor/blamejs/.pinact.yaml +17 -0
  54. package/lib/vendor/blamejs/ARCHITECTURE.md +158 -0
  55. package/lib/vendor/blamejs/CHANGELOG.md +1351 -0
  56. package/lib/vendor/blamejs/CODE_OF_CONDUCT.md +86 -0
  57. package/lib/vendor/blamejs/CONTRIBUTING.md +156 -0
  58. package/lib/vendor/blamejs/GOVERNANCE.md +201 -0
  59. package/lib/vendor/blamejs/LICENSE +201 -0
  60. package/lib/vendor/blamejs/LTS-CALENDAR.md +29 -0
  61. package/lib/vendor/blamejs/MIGRATING.md +29 -0
  62. package/lib/vendor/blamejs/NOTICE +81 -0
  63. package/lib/vendor/blamejs/README.md +304 -0
  64. package/lib/vendor/blamejs/SECURITY.md +432 -0
  65. package/lib/vendor/blamejs/api-snapshot.json +48709 -0
  66. package/lib/vendor/blamejs/assets/BlameJS_Logo.png +0 -0
  67. package/lib/vendor/blamejs/assets/BlameJS_Logo.svg +129 -0
  68. package/lib/vendor/blamejs/bench/README.md +77 -0
  69. package/lib/vendor/blamejs/bench/_helpers.js +70 -0
  70. package/lib/vendor/blamejs/bench/baseline.json +183 -0
  71. package/lib/vendor/blamejs/bench/crypto-hash.bench.js +19 -0
  72. package/lib/vendor/blamejs/bench/crypto-symmetric.bench.js +28 -0
  73. package/lib/vendor/blamejs/bench/run.js +140 -0
  74. package/lib/vendor/blamejs/bench/safe-json.bench.js +31 -0
  75. package/lib/vendor/blamejs/bin/blamejs.js +13 -0
  76. package/lib/vendor/blamejs/docker/caddy/Caddyfile +46 -0
  77. package/lib/vendor/blamejs/docker/coredns/Corefile +37 -0
  78. package/lib/vendor/blamejs/docker/haproxy/haproxy.cfg +52 -0
  79. package/lib/vendor/blamejs/docker/init/generate-certs.sh +118 -0
  80. package/lib/vendor/blamejs/docker/keycloak/realm-blamejs-test.json +87 -0
  81. package/lib/vendor/blamejs/docker/mitmproxy/config.yaml +16 -0
  82. package/lib/vendor/blamejs/docker/mongo/init-tls.sh +17 -0
  83. package/lib/vendor/blamejs/docker/mysql/my.cnf +12 -0
  84. package/lib/vendor/blamejs/docker/nats/nats.conf +33 -0
  85. package/lib/vendor/blamejs/docker/postgres/init-tls.sh +17 -0
  86. package/lib/vendor/blamejs/docker/postgres/postgresql.conf +18 -0
  87. package/lib/vendor/blamejs/docker/rabbitmq/rabbitmq.conf +18 -0
  88. package/lib/vendor/blamejs/docker/redis/redis.conf +15 -0
  89. package/lib/vendor/blamejs/docker/squid/squid.conf +24 -0
  90. package/lib/vendor/blamejs/docker/syslog/syslog-ng.conf +34 -0
  91. package/lib/vendor/blamejs/docker-compose.test.yml +545 -0
  92. package/lib/vendor/blamejs/docs/cis-postgres-crosswalk.md +102 -0
  93. package/lib/vendor/blamejs/docs/cis-sqlite-equivalent.md +92 -0
  94. package/lib/vendor/blamejs/eslint.config.mjs +204 -0
  95. package/lib/vendor/blamejs/examples/wiki/Caddyfile +40 -0
  96. package/lib/vendor/blamejs/examples/wiki/DEPLOY.md +218 -0
  97. package/lib/vendor/blamejs/examples/wiki/Dockerfile +120 -0
  98. package/lib/vendor/blamejs/examples/wiki/README.md +157 -0
  99. package/lib/vendor/blamejs/examples/wiki/cli-snapshot.json +250 -0
  100. package/lib/vendor/blamejs/examples/wiki/docker-compose.prod.yml +231 -0
  101. package/lib/vendor/blamejs/examples/wiki/docker-compose.yml +166 -0
  102. package/lib/vendor/blamejs/examples/wiki/env-snapshot.json +217 -0
  103. package/lib/vendor/blamejs/examples/wiki/lib/auto-site-entries.js +139 -0
  104. package/lib/vendor/blamejs/examples/wiki/lib/build-app.js +555 -0
  105. package/lib/vendor/blamejs/examples/wiki/lib/harvest-cli.js +507 -0
  106. package/lib/vendor/blamejs/examples/wiki/lib/harvest-env-vars.js +435 -0
  107. package/lib/vendor/blamejs/examples/wiki/lib/harvest-errors.js +282 -0
  108. package/lib/vendor/blamejs/examples/wiki/lib/harvest-vendored-deps.js +321 -0
  109. package/lib/vendor/blamejs/examples/wiki/lib/nav.js +15 -0
  110. package/lib/vendor/blamejs/examples/wiki/lib/opts-resolver.js +75 -0
  111. package/lib/vendor/blamejs/examples/wiki/lib/page-generator.js +508 -0
  112. package/lib/vendor/blamejs/examples/wiki/lib/section.js +276 -0
  113. package/lib/vendor/blamejs/examples/wiki/lib/source-comment-block-validator.js +587 -0
  114. package/lib/vendor/blamejs/examples/wiki/lib/source-doc-parser.js +318 -0
  115. package/lib/vendor/blamejs/examples/wiki/lib/symbol-index.js +122 -0
  116. package/lib/vendor/blamejs/examples/wiki/migrations/0001-pages-schema.js +74 -0
  117. package/lib/vendor/blamejs/examples/wiki/package.json +18 -0
  118. package/lib/vendor/blamejs/examples/wiki/public/img/blamejs-logo.png +0 -0
  119. package/lib/vendor/blamejs/examples/wiki/public/img/blamejs-logo.svg +129 -0
  120. package/lib/vendor/blamejs/examples/wiki/public/robots.txt +5 -0
  121. package/lib/vendor/blamejs/examples/wiki/public/vendor/MANIFEST.json +30 -0
  122. package/lib/vendor/blamejs/examples/wiki/public/vendor/prism.css +1 -0
  123. package/lib/vendor/blamejs/examples/wiki/public/vendor/prism.js +15 -0
  124. package/lib/vendor/blamejs/examples/wiki/public/wiki.css +1250 -0
  125. package/lib/vendor/blamejs/examples/wiki/routes/admin.js +366 -0
  126. package/lib/vendor/blamejs/examples/wiki/routes/integration.js +230 -0
  127. package/lib/vendor/blamejs/examples/wiki/routes/pages.js +266 -0
  128. package/lib/vendor/blamejs/examples/wiki/scripts/backfill-module-metadata.js +214 -0
  129. package/lib/vendor/blamejs/examples/wiki/seeders/prod/0001-default-pages.js +35 -0
  130. package/lib/vendor/blamejs/examples/wiki/seeders/prod/pages/_index.js +34 -0
  131. package/lib/vendor/blamejs/examples/wiki/seeders/prod/pages/api.js +76 -0
  132. package/lib/vendor/blamejs/examples/wiki/server.js +129 -0
  133. package/lib/vendor/blamejs/examples/wiki/site.config.js +197 -0
  134. package/lib/vendor/blamejs/examples/wiki/snippets/README.md +38 -0
  135. package/lib/vendor/blamejs/examples/wiki/snippets/auth/password-hash.example.js +15 -0
  136. package/lib/vendor/blamejs/examples/wiki/src/editor.js +103 -0
  137. package/lib/vendor/blamejs/examples/wiki/src/wiki.js +349 -0
  138. package/lib/vendor/blamejs/examples/wiki/test/AUDIT.md +155 -0
  139. package/lib/vendor/blamejs/examples/wiki/test/codebase-patterns.test.js +594 -0
  140. package/lib/vendor/blamejs/examples/wiki/test/e2e.js +741 -0
  141. package/lib/vendor/blamejs/examples/wiki/test/find-missing-pages.js +254 -0
  142. package/lib/vendor/blamejs/examples/wiki/test/integration.js +391 -0
  143. package/lib/vendor/blamejs/examples/wiki/test/validate-cli-snapshot.js +379 -0
  144. package/lib/vendor/blamejs/examples/wiki/test/validate-env-snapshot.js +346 -0
  145. package/lib/vendor/blamejs/examples/wiki/test/validate-nav-coverage.js +212 -0
  146. package/lib/vendor/blamejs/examples/wiki/test/validate-site-coverage.js +252 -0
  147. package/lib/vendor/blamejs/examples/wiki/test/validate-source-comment-blocks.js +107 -0
  148. package/lib/vendor/blamejs/examples/wiki/views/_layout.html +115 -0
  149. package/lib/vendor/blamejs/examples/wiki/views/admin/api-keys.html +51 -0
  150. package/lib/vendor/blamejs/examples/wiki/views/admin/dashboard.html +22 -0
  151. package/lib/vendor/blamejs/examples/wiki/views/admin/edit.html +17 -0
  152. package/lib/vendor/blamejs/examples/wiki/views/home.html +85 -0
  153. package/lib/vendor/blamejs/examples/wiki/views/login.html +18 -0
  154. package/lib/vendor/blamejs/examples/wiki/views/page.html +5 -0
  155. package/lib/vendor/blamejs/examples/wiki/views/partials/nav.html +13 -0
  156. package/lib/vendor/blamejs/examples/wiki/views/search.html +19 -0
  157. package/lib/vendor/blamejs/examples/wiki/wiki.config.js +15 -0
  158. package/lib/vendor/blamejs/fuzz/README.md +137 -0
  159. package/lib/vendor/blamejs/fuzz/_expected.js +35 -0
  160. package/lib/vendor/blamejs/fuzz/guard-agent-registry.fuzz.js +22 -0
  161. package/lib/vendor/blamejs/fuzz/guard-csv.fuzz.js +16 -0
  162. package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/01-basic.csv +3 -0
  163. package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/02-formula.csv +1 -0
  164. package/lib/vendor/blamejs/fuzz/guard-csv_seed_corpus/03-hyperlink.csv +1 -0
  165. package/lib/vendor/blamejs/fuzz/guard-dsn.fuzz.js +22 -0
  166. package/lib/vendor/blamejs/fuzz/guard-email.fuzz.js +16 -0
  167. package/lib/vendor/blamejs/fuzz/guard-email_seed_corpus/01-basic.eml +5 -0
  168. package/lib/vendor/blamejs/fuzz/guard-envelope.fuzz.js +24 -0
  169. package/lib/vendor/blamejs/fuzz/guard-event-bus-payload.fuzz.js +24 -0
  170. package/lib/vendor/blamejs/fuzz/guard-event-bus-topic.fuzz.js +20 -0
  171. package/lib/vendor/blamejs/fuzz/guard-html.fuzz.js +16 -0
  172. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/01-basic.html +1 -0
  173. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/02-script.html +1 -0
  174. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/03-event.html +1 -0
  175. package/lib/vendor/blamejs/fuzz/guard-html_seed_corpus/04-jsurl.html +1 -0
  176. package/lib/vendor/blamejs/fuzz/guard-idempotency-key.fuzz.js +20 -0
  177. package/lib/vendor/blamejs/fuzz/guard-imap-command.fuzz.js +35 -0
  178. package/lib/vendor/blamejs/fuzz/guard-jmap.fuzz.js +41 -0
  179. package/lib/vendor/blamejs/fuzz/guard-json.fuzz.js +16 -0
  180. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/01-basic.json +1 -0
  181. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/02-proto.json +1 -0
  182. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/03-dupkey.json +1 -0
  183. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/04-nan.json +1 -0
  184. package/lib/vendor/blamejs/fuzz/guard-json_seed_corpus/05-bom.json +1 -0
  185. package/lib/vendor/blamejs/fuzz/guard-list-id.fuzz.js +21 -0
  186. package/lib/vendor/blamejs/fuzz/guard-list-unsubscribe.fuzz.js +25 -0
  187. package/lib/vendor/blamejs/fuzz/guard-mail-compose.fuzz.js +22 -0
  188. package/lib/vendor/blamejs/fuzz/guard-mail-move.fuzz.js +22 -0
  189. package/lib/vendor/blamejs/fuzz/guard-mail-query.fuzz.js +27 -0
  190. package/lib/vendor/blamejs/fuzz/guard-mail-reply.fuzz.js +23 -0
  191. package/lib/vendor/blamejs/fuzz/guard-mail-sieve.fuzz.js +36 -0
  192. package/lib/vendor/blamejs/fuzz/guard-managesieve-command.fuzz.js +26 -0
  193. package/lib/vendor/blamejs/fuzz/guard-markdown.fuzz.js +16 -0
  194. package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/01-basic.md +2 -0
  195. package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/02-jsurl.md +1 -0
  196. package/lib/vendor/blamejs/fuzz/guard-markdown_seed_corpus/03-jsimg.md +1 -0
  197. package/lib/vendor/blamejs/fuzz/guard-message-id.fuzz.js +26 -0
  198. package/lib/vendor/blamejs/fuzz/guard-pop3-command.fuzz.js +23 -0
  199. package/lib/vendor/blamejs/fuzz/guard-posture-chain.fuzz.js +22 -0
  200. package/lib/vendor/blamejs/fuzz/guard-saga-config.fuzz.js +32 -0
  201. package/lib/vendor/blamejs/fuzz/guard-smtp-command.fuzz.js +27 -0
  202. package/lib/vendor/blamejs/fuzz/guard-snapshot-envelope.fuzz.js +22 -0
  203. package/lib/vendor/blamejs/fuzz/guard-stream-args.fuzz.js +22 -0
  204. package/lib/vendor/blamejs/fuzz/guard-svg.fuzz.js +16 -0
  205. package/lib/vendor/blamejs/fuzz/guard-svg_seed_corpus/01-basic.svg +1 -0
  206. package/lib/vendor/blamejs/fuzz/guard-svg_seed_corpus/02-script.svg +1 -0
  207. package/lib/vendor/blamejs/fuzz/guard-tenant-id.fuzz.js +20 -0
  208. package/lib/vendor/blamejs/fuzz/guard-trace-context.fuzz.js +30 -0
  209. package/lib/vendor/blamejs/fuzz/guard-xml.fuzz.js +16 -0
  210. package/lib/vendor/blamejs/fuzz/guard-xml_seed_corpus/01-basic.xml +1 -0
  211. package/lib/vendor/blamejs/fuzz/guard-xml_seed_corpus/02-xxe.xml +1 -0
  212. package/lib/vendor/blamejs/fuzz/guard-yaml.fuzz.js +16 -0
  213. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/01-basic.yaml +2 -0
  214. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/02-anchor.yaml +2 -0
  215. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/03-norway.yaml +1 -0
  216. package/lib/vendor/blamejs/fuzz/guard-yaml_seed_corpus/04-multidoc.yaml +4 -0
  217. package/lib/vendor/blamejs/fuzz/parsers__safe-ini.fuzz.js +16 -0
  218. package/lib/vendor/blamejs/fuzz/parsers__safe-ini_seed_corpus/01-basic.ini +2 -0
  219. package/lib/vendor/blamejs/fuzz/parsers__safe-toml.fuzz.js +16 -0
  220. package/lib/vendor/blamejs/fuzz/parsers__safe-toml_seed_corpus/01-basic.toml +4 -0
  221. package/lib/vendor/blamejs/fuzz/parsers__safe-xml.fuzz.js +16 -0
  222. package/lib/vendor/blamejs/fuzz/parsers__safe-xml_seed_corpus/01-basic.xml +1 -0
  223. package/lib/vendor/blamejs/fuzz/parsers__safe-yaml.fuzz.js +16 -0
  224. package/lib/vendor/blamejs/fuzz/parsers__safe-yaml_seed_corpus/01-basic.yaml +4 -0
  225. package/lib/vendor/blamejs/fuzz/safe-decompress.fuzz.js +49 -0
  226. package/lib/vendor/blamejs/fuzz/safe-dns.fuzz.js +29 -0
  227. package/lib/vendor/blamejs/fuzz/safe-ical.fuzz.js +16 -0
  228. package/lib/vendor/blamejs/fuzz/safe-icap.fuzz.js +42 -0
  229. package/lib/vendor/blamejs/fuzz/safe-json.fuzz.js +25 -0
  230. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/01-object.txt +1 -0
  231. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/02-array.txt +1 -0
  232. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/03-string.txt +1 -0
  233. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/04-proto.txt +1 -0
  234. package/lib/vendor/blamejs/fuzz/safe-json_seed_corpus/05-deep.txt +1 -0
  235. package/lib/vendor/blamejs/fuzz/safe-jsonpath.fuzz.js +16 -0
  236. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/01-basic.txt +1 -0
  237. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/02-filter.txt +1 -0
  238. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/03-deepscan.txt +1 -0
  239. package/lib/vendor/blamejs/fuzz/safe-jsonpath_seed_corpus/04-slice.txt +1 -0
  240. package/lib/vendor/blamejs/fuzz/safe-mime.fuzz.js +27 -0
  241. package/lib/vendor/blamejs/fuzz/safe-mount-info.fuzz.js +33 -0
  242. package/lib/vendor/blamejs/fuzz/safe-sieve.fuzz.js +28 -0
  243. package/lib/vendor/blamejs/fuzz/safe-smtp.fuzz.js +64 -0
  244. package/lib/vendor/blamejs/fuzz/safe-url.fuzz.js +16 -0
  245. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/01-basic.txt +1 -0
  246. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/02-userinfo.txt +1 -0
  247. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/03-dangerous.txt +1 -0
  248. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/04-data.txt +1 -0
  249. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/05-ipv6.txt +1 -0
  250. package/lib/vendor/blamejs/fuzz/safe-url_seed_corpus/06-idn.txt +1 -0
  251. package/lib/vendor/blamejs/fuzz/safe-vcard.fuzz.js +16 -0
  252. package/lib/vendor/blamejs/index.js +678 -0
  253. package/lib/vendor/blamejs/keys/release-pqc-pub.json +7 -0
  254. package/lib/vendor/blamejs/lib/_test/crypto-fixtures.js +67 -0
  255. package/lib/vendor/blamejs/lib/a2a-tasks.js +598 -0
  256. package/lib/vendor/blamejs/lib/a2a.js +407 -0
  257. package/lib/vendor/blamejs/lib/acme.js +1448 -0
  258. package/lib/vendor/blamejs/lib/agent-audit.js +45 -0
  259. package/lib/vendor/blamejs/lib/agent-event-bus.js +382 -0
  260. package/lib/vendor/blamejs/lib/agent-idempotency.js +497 -0
  261. package/lib/vendor/blamejs/lib/agent-orchestrator.js +717 -0
  262. package/lib/vendor/blamejs/lib/agent-posture-chain.js +366 -0
  263. package/lib/vendor/blamejs/lib/agent-saga.js +321 -0
  264. package/lib/vendor/blamejs/lib/agent-snapshot.js +676 -0
  265. package/lib/vendor/blamejs/lib/agent-stream.js +269 -0
  266. package/lib/vendor/blamejs/lib/agent-tenant.js +632 -0
  267. package/lib/vendor/blamejs/lib/agent-trace.js +281 -0
  268. package/lib/vendor/blamejs/lib/ai-adverse-decision.js +184 -0
  269. package/lib/vendor/blamejs/lib/ai-content-detect.js +268 -0
  270. package/lib/vendor/blamejs/lib/ai-input.js +201 -0
  271. package/lib/vendor/blamejs/lib/ai-model-manifest.js +363 -0
  272. package/lib/vendor/blamejs/lib/ai-pref.js +340 -0
  273. package/lib/vendor/blamejs/lib/api-key.js +721 -0
  274. package/lib/vendor/blamejs/lib/api-snapshot.js +458 -0
  275. package/lib/vendor/blamejs/lib/app-shutdown.js +557 -0
  276. package/lib/vendor/blamejs/lib/app.js +365 -0
  277. package/lib/vendor/blamejs/lib/archive.js +547 -0
  278. package/lib/vendor/blamejs/lib/arg-parser.js +697 -0
  279. package/lib/vendor/blamejs/lib/argon2-builtin.js +173 -0
  280. package/lib/vendor/blamejs/lib/asn1-der.js +424 -0
  281. package/lib/vendor/blamejs/lib/asyncapi-bindings.js +160 -0
  282. package/lib/vendor/blamejs/lib/asyncapi-traits.js +143 -0
  283. package/lib/vendor/blamejs/lib/asyncapi.js +575 -0
  284. package/lib/vendor/blamejs/lib/atomic-file.js +1023 -0
  285. package/lib/vendor/blamejs/lib/audit-chain.js +266 -0
  286. package/lib/vendor/blamejs/lib/audit-daily-review.js +389 -0
  287. package/lib/vendor/blamejs/lib/audit-sign.js +751 -0
  288. package/lib/vendor/blamejs/lib/audit-tools.js +1113 -0
  289. package/lib/vendor/blamejs/lib/audit.js +1671 -0
  290. package/lib/vendor/blamejs/lib/auth/aal.js +169 -0
  291. package/lib/vendor/blamejs/lib/auth/access-lock.js +220 -0
  292. package/lib/vendor/blamejs/lib/auth/acr-vocabulary.js +265 -0
  293. package/lib/vendor/blamejs/lib/auth/ato-kill-switch.js +112 -0
  294. package/lib/vendor/blamejs/lib/auth/auth-time-tracker.js +111 -0
  295. package/lib/vendor/blamejs/lib/auth/bot-challenge.js +573 -0
  296. package/lib/vendor/blamejs/lib/auth/ciba.js +637 -0
  297. package/lib/vendor/blamejs/lib/auth/dpop.js +516 -0
  298. package/lib/vendor/blamejs/lib/auth/elevation-grant.js +306 -0
  299. package/lib/vendor/blamejs/lib/auth/fal.js +229 -0
  300. package/lib/vendor/blamejs/lib/auth/fido-mds3.js +681 -0
  301. package/lib/vendor/blamejs/lib/auth/jwt-external.js +519 -0
  302. package/lib/vendor/blamejs/lib/auth/jwt.js +430 -0
  303. package/lib/vendor/blamejs/lib/auth/lockout.js +449 -0
  304. package/lib/vendor/blamejs/lib/auth/oauth.js +2141 -0
  305. package/lib/vendor/blamejs/lib/auth/oid4vci.js +657 -0
  306. package/lib/vendor/blamejs/lib/auth/oid4vp.js +531 -0
  307. package/lib/vendor/blamejs/lib/auth/openid-federation.js +600 -0
  308. package/lib/vendor/blamejs/lib/auth/passkey.js +676 -0
  309. package/lib/vendor/blamejs/lib/auth/password.js +693 -0
  310. package/lib/vendor/blamejs/lib/auth/saml.js +2109 -0
  311. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-disclosure.js +95 -0
  312. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-holder.js +225 -0
  313. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc-issuer.js +197 -0
  314. package/lib/vendor/blamejs/lib/auth/sd-jwt-vc.js +728 -0
  315. package/lib/vendor/blamejs/lib/auth/status-list.js +272 -0
  316. package/lib/vendor/blamejs/lib/auth/step-up-policy.js +335 -0
  317. package/lib/vendor/blamejs/lib/auth/step-up.js +454 -0
  318. package/lib/vendor/blamejs/lib/auth-bot-challenge.js +505 -0
  319. package/lib/vendor/blamejs/lib/auth-header.js +148 -0
  320. package/lib/vendor/blamejs/lib/backup/bundle.js +265 -0
  321. package/lib/vendor/blamejs/lib/backup/crypto.js +176 -0
  322. package/lib/vendor/blamejs/lib/backup/index.js +1001 -0
  323. package/lib/vendor/blamejs/lib/backup/manifest.js +443 -0
  324. package/lib/vendor/blamejs/lib/boot-gates.js +174 -0
  325. package/lib/vendor/blamejs/lib/breach-deadline.js +272 -0
  326. package/lib/vendor/blamejs/lib/break-glass.js +1753 -0
  327. package/lib/vendor/blamejs/lib/budr.js +205 -0
  328. package/lib/vendor/blamejs/lib/bundler.js +461 -0
  329. package/lib/vendor/blamejs/lib/cache-redis.js +256 -0
  330. package/lib/vendor/blamejs/lib/cache-status.js +288 -0
  331. package/lib/vendor/blamejs/lib/cache.js +1331 -0
  332. package/lib/vendor/blamejs/lib/calendar.js +1240 -0
  333. package/lib/vendor/blamejs/lib/canonical-json.js +143 -0
  334. package/lib/vendor/blamejs/lib/cdn-cache-control.js +473 -0
  335. package/lib/vendor/blamejs/lib/cert.js +763 -0
  336. package/lib/vendor/blamejs/lib/chain-writer.js +259 -0
  337. package/lib/vendor/blamejs/lib/circuit-breaker.js +101 -0
  338. package/lib/vendor/blamejs/lib/cli-helpers.js +237 -0
  339. package/lib/vendor/blamejs/lib/cli.js +2328 -0
  340. package/lib/vendor/blamejs/lib/client-hints.js +318 -0
  341. package/lib/vendor/blamejs/lib/cloud-events.js +277 -0
  342. package/lib/vendor/blamejs/lib/cluster-provider-db.js +317 -0
  343. package/lib/vendor/blamejs/lib/cluster-storage.js +351 -0
  344. package/lib/vendor/blamejs/lib/cluster.js +1017 -0
  345. package/lib/vendor/blamejs/lib/cms-codec.js +826 -0
  346. package/lib/vendor/blamejs/lib/codepoint-class.js +262 -0
  347. package/lib/vendor/blamejs/lib/compliance-ai-act-logging.js +190 -0
  348. package/lib/vendor/blamejs/lib/compliance-ai-act-prohibited.js +205 -0
  349. package/lib/vendor/blamejs/lib/compliance-ai-act-risk.js +189 -0
  350. package/lib/vendor/blamejs/lib/compliance-ai-act-transparency.js +200 -0
  351. package/lib/vendor/blamejs/lib/compliance-ai-act.js +821 -0
  352. package/lib/vendor/blamejs/lib/compliance-eaa.js +204 -0
  353. package/lib/vendor/blamejs/lib/compliance-sanctions-aliases.js +167 -0
  354. package/lib/vendor/blamejs/lib/compliance-sanctions-fetcher.js +206 -0
  355. package/lib/vendor/blamejs/lib/compliance-sanctions-fuzzy.js +297 -0
  356. package/lib/vendor/blamejs/lib/compliance-sanctions.js +569 -0
  357. package/lib/vendor/blamejs/lib/compliance.js +1558 -0
  358. package/lib/vendor/blamejs/lib/config-drift.js +426 -0
  359. package/lib/vendor/blamejs/lib/config.js +446 -0
  360. package/lib/vendor/blamejs/lib/consent.js +369 -0
  361. package/lib/vendor/blamejs/lib/constants.js +209 -0
  362. package/lib/vendor/blamejs/lib/content-credentials.js +704 -0
  363. package/lib/vendor/blamejs/lib/cookies.js +560 -0
  364. package/lib/vendor/blamejs/lib/cra-report.js +299 -0
  365. package/lib/vendor/blamejs/lib/credential-hash.js +394 -0
  366. package/lib/vendor/blamejs/lib/crypto-field.js +1017 -0
  367. package/lib/vendor/blamejs/lib/crypto-hpke-pq.js +187 -0
  368. package/lib/vendor/blamejs/lib/crypto-hpke.js +256 -0
  369. package/lib/vendor/blamejs/lib/crypto.js +1908 -0
  370. package/lib/vendor/blamejs/lib/csp.js +271 -0
  371. package/lib/vendor/blamejs/lib/csv.js +418 -0
  372. package/lib/vendor/blamejs/lib/daemon.js +481 -0
  373. package/lib/vendor/blamejs/lib/dark-patterns.js +488 -0
  374. package/lib/vendor/blamejs/lib/data-act.js +328 -0
  375. package/lib/vendor/blamejs/lib/db-collection.js +587 -0
  376. package/lib/vendor/blamejs/lib/db-declare-row-policy.js +267 -0
  377. package/lib/vendor/blamejs/lib/db-declare-view.js +420 -0
  378. package/lib/vendor/blamejs/lib/db-file-lifecycle.js +333 -0
  379. package/lib/vendor/blamejs/lib/db-query.js +802 -0
  380. package/lib/vendor/blamejs/lib/db-role-context.js +50 -0
  381. package/lib/vendor/blamejs/lib/db-schema.js +322 -0
  382. package/lib/vendor/blamejs/lib/db.js +3111 -0
  383. package/lib/vendor/blamejs/lib/dbsc.js +299 -0
  384. package/lib/vendor/blamejs/lib/ddl-change-control.js +523 -0
  385. package/lib/vendor/blamejs/lib/deprecate.js +377 -0
  386. package/lib/vendor/blamejs/lib/dev.js +405 -0
  387. package/lib/vendor/blamejs/lib/dora.js +402 -0
  388. package/lib/vendor/blamejs/lib/dr-runbook.js +368 -0
  389. package/lib/vendor/blamejs/lib/dsr.js +1188 -0
  390. package/lib/vendor/blamejs/lib/dual-control.js +526 -0
  391. package/lib/vendor/blamejs/lib/early-hints.js +212 -0
  392. package/lib/vendor/blamejs/lib/error-page.js +420 -0
  393. package/lib/vendor/blamejs/lib/events.js +214 -0
  394. package/lib/vendor/blamejs/lib/external-db-migrate.js +659 -0
  395. package/lib/vendor/blamejs/lib/external-db.js +1877 -0
  396. package/lib/vendor/blamejs/lib/fapi2.js +394 -0
  397. package/lib/vendor/blamejs/lib/fda-21cfr11.js +395 -0
  398. package/lib/vendor/blamejs/lib/fdx.js +370 -0
  399. package/lib/vendor/blamejs/lib/fedcm.js +264 -0
  400. package/lib/vendor/blamejs/lib/file-type.js +360 -0
  401. package/lib/vendor/blamejs/lib/file-upload.js +1256 -0
  402. package/lib/vendor/blamejs/lib/flag-cache.js +136 -0
  403. package/lib/vendor/blamejs/lib/flag-evaluation-context.js +135 -0
  404. package/lib/vendor/blamejs/lib/flag-providers.js +279 -0
  405. package/lib/vendor/blamejs/lib/flag-targeting.js +210 -0
  406. package/lib/vendor/blamejs/lib/flag.js +346 -0
  407. package/lib/vendor/blamejs/lib/forms.js +525 -0
  408. package/lib/vendor/blamejs/lib/framework-error.js +724 -0
  409. package/lib/vendor/blamejs/lib/framework-schema.js +845 -0
  410. package/lib/vendor/blamejs/lib/framework-sha1-hibp.js +34 -0
  411. package/lib/vendor/blamejs/lib/fsm.js +469 -0
  412. package/lib/vendor/blamejs/lib/gate-contract.js +1661 -0
  413. package/lib/vendor/blamejs/lib/gdpr-ropa.js +261 -0
  414. package/lib/vendor/blamejs/lib/graphql-federation.js +234 -0
  415. package/lib/vendor/blamejs/lib/guard-agent-registry.js +179 -0
  416. package/lib/vendor/blamejs/lib/guard-all.js +555 -0
  417. package/lib/vendor/blamejs/lib/guard-archive.js +901 -0
  418. package/lib/vendor/blamejs/lib/guard-auth.js +451 -0
  419. package/lib/vendor/blamejs/lib/guard-cidr.js +676 -0
  420. package/lib/vendor/blamejs/lib/guard-csv.js +1176 -0
  421. package/lib/vendor/blamejs/lib/guard-domain.js +814 -0
  422. package/lib/vendor/blamejs/lib/guard-dsn.js +382 -0
  423. package/lib/vendor/blamejs/lib/guard-email.js +951 -0
  424. package/lib/vendor/blamejs/lib/guard-envelope.js +294 -0
  425. package/lib/vendor/blamejs/lib/guard-event-bus-payload.js +217 -0
  426. package/lib/vendor/blamejs/lib/guard-event-bus-topic.js +150 -0
  427. package/lib/vendor/blamejs/lib/guard-filename.js +956 -0
  428. package/lib/vendor/blamejs/lib/guard-graphql.js +731 -0
  429. package/lib/vendor/blamejs/lib/guard-html-wcag-aria.js +164 -0
  430. package/lib/vendor/blamejs/lib/guard-html-wcag-forms.js +144 -0
  431. package/lib/vendor/blamejs/lib/guard-html-wcag-tables.js +154 -0
  432. package/lib/vendor/blamejs/lib/guard-html-wcag-tagwalk.js +44 -0
  433. package/lib/vendor/blamejs/lib/guard-html-wcag.js +470 -0
  434. package/lib/vendor/blamejs/lib/guard-html.js +1209 -0
  435. package/lib/vendor/blamejs/lib/guard-idempotency-key.js +151 -0
  436. package/lib/vendor/blamejs/lib/guard-image.js +584 -0
  437. package/lib/vendor/blamejs/lib/guard-imap-command.js +337 -0
  438. package/lib/vendor/blamejs/lib/guard-jmap.js +321 -0
  439. package/lib/vendor/blamejs/lib/guard-json.js +935 -0
  440. package/lib/vendor/blamejs/lib/guard-jsonpath.js +512 -0
  441. package/lib/vendor/blamejs/lib/guard-jwt.js +772 -0
  442. package/lib/vendor/blamejs/lib/guard-list-id.js +318 -0
  443. package/lib/vendor/blamejs/lib/guard-list-unsubscribe.js +412 -0
  444. package/lib/vendor/blamejs/lib/guard-mail-compose.js +282 -0
  445. package/lib/vendor/blamejs/lib/guard-mail-move.js +202 -0
  446. package/lib/vendor/blamejs/lib/guard-mail-query.js +310 -0
  447. package/lib/vendor/blamejs/lib/guard-mail-reply.js +172 -0
  448. package/lib/vendor/blamejs/lib/guard-mail-sieve.js +207 -0
  449. package/lib/vendor/blamejs/lib/guard-managesieve-command.js +566 -0
  450. package/lib/vendor/blamejs/lib/guard-markdown.js +768 -0
  451. package/lib/vendor/blamejs/lib/guard-message-id.js +267 -0
  452. package/lib/vendor/blamejs/lib/guard-mime.js +609 -0
  453. package/lib/vendor/blamejs/lib/guard-oauth.js +650 -0
  454. package/lib/vendor/blamejs/lib/guard-pdf.js +569 -0
  455. package/lib/vendor/blamejs/lib/guard-pop3-command.js +317 -0
  456. package/lib/vendor/blamejs/lib/guard-posture-chain.js +201 -0
  457. package/lib/vendor/blamejs/lib/guard-regex.js +632 -0
  458. package/lib/vendor/blamejs/lib/guard-saga-config.js +157 -0
  459. package/lib/vendor/blamejs/lib/guard-shell.js +522 -0
  460. package/lib/vendor/blamejs/lib/guard-smtp-command.js +594 -0
  461. package/lib/vendor/blamejs/lib/guard-snapshot-envelope.js +168 -0
  462. package/lib/vendor/blamejs/lib/guard-stream-args.js +166 -0
  463. package/lib/vendor/blamejs/lib/guard-svg.js +1163 -0
  464. package/lib/vendor/blamejs/lib/guard-template.js +490 -0
  465. package/lib/vendor/blamejs/lib/guard-tenant-id.js +138 -0
  466. package/lib/vendor/blamejs/lib/guard-time.js +586 -0
  467. package/lib/vendor/blamejs/lib/guard-trace-context.js +172 -0
  468. package/lib/vendor/blamejs/lib/guard-uuid.js +548 -0
  469. package/lib/vendor/blamejs/lib/guard-xml.js +666 -0
  470. package/lib/vendor/blamejs/lib/guard-yaml.js +726 -0
  471. package/lib/vendor/blamejs/lib/hal.js +125 -0
  472. package/lib/vendor/blamejs/lib/handlers.js +350 -0
  473. package/lib/vendor/blamejs/lib/honeytoken.js +168 -0
  474. package/lib/vendor/blamejs/lib/html-balance.js +347 -0
  475. package/lib/vendor/blamejs/lib/http-client-cache.js +923 -0
  476. package/lib/vendor/blamejs/lib/http-client-cookie-jar.js +519 -0
  477. package/lib/vendor/blamejs/lib/http-client.js +2152 -0
  478. package/lib/vendor/blamejs/lib/http-message-signature.js +589 -0
  479. package/lib/vendor/blamejs/lib/http2-teardown.js +34 -0
  480. package/lib/vendor/blamejs/lib/i18n-messageformat.js +398 -0
  481. package/lib/vendor/blamejs/lib/i18n.js +931 -0
  482. package/lib/vendor/blamejs/lib/iab-mspa.js +257 -0
  483. package/lib/vendor/blamejs/lib/iab-tcf.js +461 -0
  484. package/lib/vendor/blamejs/lib/importmap-integrity.js +90 -0
  485. package/lib/vendor/blamejs/lib/inbox.js +435 -0
  486. package/lib/vendor/blamejs/lib/incident-report.js +314 -0
  487. package/lib/vendor/blamejs/lib/ip-utils.js +102 -0
  488. package/lib/vendor/blamejs/lib/jobs.js +185 -0
  489. package/lib/vendor/blamejs/lib/jose-jwe-experimental.js +228 -0
  490. package/lib/vendor/blamejs/lib/jsonapi.js +230 -0
  491. package/lib/vendor/blamejs/lib/keychain.js +865 -0
  492. package/lib/vendor/blamejs/lib/lazy-require.js +48 -0
  493. package/lib/vendor/blamejs/lib/legal-hold.js +374 -0
  494. package/lib/vendor/blamejs/lib/local-db-thin.js +321 -0
  495. package/lib/vendor/blamejs/lib/log-stream-cloudwatch.js +369 -0
  496. package/lib/vendor/blamejs/lib/log-stream-local.js +146 -0
  497. package/lib/vendor/blamejs/lib/log-stream-otlp-grpc.js +410 -0
  498. package/lib/vendor/blamejs/lib/log-stream-otlp.js +286 -0
  499. package/lib/vendor/blamejs/lib/log-stream-syslog.js +310 -0
  500. package/lib/vendor/blamejs/lib/log-stream-webhook.js +199 -0
  501. package/lib/vendor/blamejs/lib/log-stream.js +584 -0
  502. package/lib/vendor/blamejs/lib/log.js +625 -0
  503. package/lib/vendor/blamejs/lib/lro.js +200 -0
  504. package/lib/vendor/blamejs/lib/mail-agent.js +786 -0
  505. package/lib/vendor/blamejs/lib/mail-arc-sign.js +417 -0
  506. package/lib/vendor/blamejs/lib/mail-arf.js +343 -0
  507. package/lib/vendor/blamejs/lib/mail-auth.js +2144 -0
  508. package/lib/vendor/blamejs/lib/mail-bimi.js +1047 -0
  509. package/lib/vendor/blamejs/lib/mail-bounce.js +955 -0
  510. package/lib/vendor/blamejs/lib/mail-crypto-pgp.js +1286 -0
  511. package/lib/vendor/blamejs/lib/mail-crypto-smime.js +789 -0
  512. package/lib/vendor/blamejs/lib/mail-crypto.js +108 -0
  513. package/lib/vendor/blamejs/lib/mail-dav.js +1224 -0
  514. package/lib/vendor/blamejs/lib/mail-deploy.js +1119 -0
  515. package/lib/vendor/blamejs/lib/mail-dkim.js +1250 -0
  516. package/lib/vendor/blamejs/lib/mail-greylist.js +448 -0
  517. package/lib/vendor/blamejs/lib/mail-helo.js +473 -0
  518. package/lib/vendor/blamejs/lib/mail-journal.js +435 -0
  519. package/lib/vendor/blamejs/lib/mail-mdn.js +424 -0
  520. package/lib/vendor/blamejs/lib/mail-rbl.js +392 -0
  521. package/lib/vendor/blamejs/lib/mail-require-tls.js +198 -0
  522. package/lib/vendor/blamejs/lib/mail-scan.js +502 -0
  523. package/lib/vendor/blamejs/lib/mail-send-deliver.js +629 -0
  524. package/lib/vendor/blamejs/lib/mail-server-imap.js +1858 -0
  525. package/lib/vendor/blamejs/lib/mail-server-jmap.js +1565 -0
  526. package/lib/vendor/blamejs/lib/mail-server-managesieve.js +908 -0
  527. package/lib/vendor/blamejs/lib/mail-server-mx.js +969 -0
  528. package/lib/vendor/blamejs/lib/mail-server-pop3.js +915 -0
  529. package/lib/vendor/blamejs/lib/mail-server-rate-limit.js +315 -0
  530. package/lib/vendor/blamejs/lib/mail-server-registry.js +378 -0
  531. package/lib/vendor/blamejs/lib/mail-server-submission.js +1396 -0
  532. package/lib/vendor/blamejs/lib/mail-server-tls.js +445 -0
  533. package/lib/vendor/blamejs/lib/mail-sieve.js +557 -0
  534. package/lib/vendor/blamejs/lib/mail-spam-score.js +284 -0
  535. package/lib/vendor/blamejs/lib/mail-srs.js +248 -0
  536. package/lib/vendor/blamejs/lib/mail-store-fts.js +394 -0
  537. package/lib/vendor/blamejs/lib/mail-store.js +929 -0
  538. package/lib/vendor/blamejs/lib/mail-unsubscribe.js +400 -0
  539. package/lib/vendor/blamejs/lib/mail.js +1971 -0
  540. package/lib/vendor/blamejs/lib/mcp-tool-registry.js +473 -0
  541. package/lib/vendor/blamejs/lib/mcp.js +950 -0
  542. package/lib/vendor/blamejs/lib/metrics.js +1503 -0
  543. package/lib/vendor/blamejs/lib/middleware/age-gate.js +177 -0
  544. package/lib/vendor/blamejs/lib/middleware/ai-act-disclosure.js +203 -0
  545. package/lib/vendor/blamejs/lib/middleware/api-encrypt.js +981 -0
  546. package/lib/vendor/blamejs/lib/middleware/assetlinks.js +137 -0
  547. package/lib/vendor/blamejs/lib/middleware/asyncapi-serve.js +171 -0
  548. package/lib/vendor/blamejs/lib/middleware/attach-user.js +220 -0
  549. package/lib/vendor/blamejs/lib/middleware/bearer-auth.js +293 -0
  550. package/lib/vendor/blamejs/lib/middleware/body-parser.js +1519 -0
  551. package/lib/vendor/blamejs/lib/middleware/bot-disclose.js +183 -0
  552. package/lib/vendor/blamejs/lib/middleware/bot-guard.js +217 -0
  553. package/lib/vendor/blamejs/lib/middleware/clear-site-data.js +122 -0
  554. package/lib/vendor/blamejs/lib/middleware/compose-pipeline.js +355 -0
  555. package/lib/vendor/blamejs/lib/middleware/compression.js +489 -0
  556. package/lib/vendor/blamejs/lib/middleware/cookies.js +130 -0
  557. package/lib/vendor/blamejs/lib/middleware/cors.js +386 -0
  558. package/lib/vendor/blamejs/lib/middleware/csp-nonce.js +388 -0
  559. package/lib/vendor/blamejs/lib/middleware/csp-report.js +167 -0
  560. package/lib/vendor/blamejs/lib/middleware/csrf-protect.js +499 -0
  561. package/lib/vendor/blamejs/lib/middleware/daily-byte-quota.js +243 -0
  562. package/lib/vendor/blamejs/lib/middleware/db-role-for.js +304 -0
  563. package/lib/vendor/blamejs/lib/middleware/dpop.js +402 -0
  564. package/lib/vendor/blamejs/lib/middleware/error-handler.js +69 -0
  565. package/lib/vendor/blamejs/lib/middleware/fetch-metadata.js +168 -0
  566. package/lib/vendor/blamejs/lib/middleware/flag-context.js +110 -0
  567. package/lib/vendor/blamejs/lib/middleware/gpc.js +153 -0
  568. package/lib/vendor/blamejs/lib/middleware/headers.js +242 -0
  569. package/lib/vendor/blamejs/lib/middleware/health.js +438 -0
  570. package/lib/vendor/blamejs/lib/middleware/host-allowlist.js +189 -0
  571. package/lib/vendor/blamejs/lib/middleware/idempotency-key.js +964 -0
  572. package/lib/vendor/blamejs/lib/middleware/index.js +183 -0
  573. package/lib/vendor/blamejs/lib/middleware/nel.js +214 -0
  574. package/lib/vendor/blamejs/lib/middleware/network-allowlist.js +237 -0
  575. package/lib/vendor/blamejs/lib/middleware/no-cache.js +106 -0
  576. package/lib/vendor/blamejs/lib/middleware/openapi-serve.js +177 -0
  577. package/lib/vendor/blamejs/lib/middleware/protected-resource-metadata.js +277 -0
  578. package/lib/vendor/blamejs/lib/middleware/rate-limit.js +556 -0
  579. package/lib/vendor/blamejs/lib/middleware/request-id.js +79 -0
  580. package/lib/vendor/blamejs/lib/middleware/request-log.js +205 -0
  581. package/lib/vendor/blamejs/lib/middleware/require-aal.js +138 -0
  582. package/lib/vendor/blamejs/lib/middleware/require-auth.js +144 -0
  583. package/lib/vendor/blamejs/lib/middleware/require-bound-key.js +290 -0
  584. package/lib/vendor/blamejs/lib/middleware/require-content-type.js +113 -0
  585. package/lib/vendor/blamejs/lib/middleware/require-methods.js +97 -0
  586. package/lib/vendor/blamejs/lib/middleware/require-mtls.js +212 -0
  587. package/lib/vendor/blamejs/lib/middleware/require-step-up.js +226 -0
  588. package/lib/vendor/blamejs/lib/middleware/scim-server.js +375 -0
  589. package/lib/vendor/blamejs/lib/middleware/security-headers.js +285 -0
  590. package/lib/vendor/blamejs/lib/middleware/security-txt.js +170 -0
  591. package/lib/vendor/blamejs/lib/middleware/span-http-server.js +280 -0
  592. package/lib/vendor/blamejs/lib/middleware/speculation-rules.js +323 -0
  593. package/lib/vendor/blamejs/lib/middleware/sse.js +200 -0
  594. package/lib/vendor/blamejs/lib/middleware/trace-log-correlation.js +167 -0
  595. package/lib/vendor/blamejs/lib/middleware/trace-propagate.js +148 -0
  596. package/lib/vendor/blamejs/lib/middleware/tus-upload.js +749 -0
  597. package/lib/vendor/blamejs/lib/middleware/web-app-manifest.js +164 -0
  598. package/lib/vendor/blamejs/lib/migration-files.js +37 -0
  599. package/lib/vendor/blamejs/lib/migrations.js +385 -0
  600. package/lib/vendor/blamejs/lib/mime-parse.js +198 -0
  601. package/lib/vendor/blamejs/lib/money.js +699 -0
  602. package/lib/vendor/blamejs/lib/mtls-ca.js +572 -0
  603. package/lib/vendor/blamejs/lib/mtls-engine-default.js +501 -0
  604. package/lib/vendor/blamejs/lib/network-byte-quota.js +308 -0
  605. package/lib/vendor/blamejs/lib/network-dns-resolver.js +533 -0
  606. package/lib/vendor/blamejs/lib/network-dns.js +1930 -0
  607. package/lib/vendor/blamejs/lib/network-heartbeat.js +425 -0
  608. package/lib/vendor/blamejs/lib/network-nts.js +574 -0
  609. package/lib/vendor/blamejs/lib/network-proxy.js +265 -0
  610. package/lib/vendor/blamejs/lib/network-smtp-policy.js +836 -0
  611. package/lib/vendor/blamejs/lib/network-tls.js +3126 -0
  612. package/lib/vendor/blamejs/lib/network.js +346 -0
  613. package/lib/vendor/blamejs/lib/nis2-report.js +181 -0
  614. package/lib/vendor/blamejs/lib/nist-crosswalk.js +293 -0
  615. package/lib/vendor/blamejs/lib/nonce-store.js +177 -0
  616. package/lib/vendor/blamejs/lib/notify.js +683 -0
  617. package/lib/vendor/blamejs/lib/ntp-check.js +458 -0
  618. package/lib/vendor/blamejs/lib/numeric-bounds.js +111 -0
  619. package/lib/vendor/blamejs/lib/numeric-checks.js +40 -0
  620. package/lib/vendor/blamejs/lib/object-store/azure-blob-bucket-ops.js +349 -0
  621. package/lib/vendor/blamejs/lib/object-store/azure-blob.js +488 -0
  622. package/lib/vendor/blamejs/lib/object-store/gcs-bucket-ops.js +351 -0
  623. package/lib/vendor/blamejs/lib/object-store/gcs.js +515 -0
  624. package/lib/vendor/blamejs/lib/object-store/http-put.js +153 -0
  625. package/lib/vendor/blamejs/lib/object-store/http-request.js +38 -0
  626. package/lib/vendor/blamejs/lib/object-store/index.js +197 -0
  627. package/lib/vendor/blamejs/lib/object-store/local.js +163 -0
  628. package/lib/vendor/blamejs/lib/object-store/sigv4-bucket-ops.js +1133 -0
  629. package/lib/vendor/blamejs/lib/object-store/sigv4.js +957 -0
  630. package/lib/vendor/blamejs/lib/observability-otlp-exporter.js +420 -0
  631. package/lib/vendor/blamejs/lib/observability-tracer.js +395 -0
  632. package/lib/vendor/blamejs/lib/observability.js +720 -0
  633. package/lib/vendor/blamejs/lib/openapi-paths-builder.js +248 -0
  634. package/lib/vendor/blamejs/lib/openapi-schema-walk.js +192 -0
  635. package/lib/vendor/blamejs/lib/openapi-security.js +169 -0
  636. package/lib/vendor/blamejs/lib/openapi-yaml.js +154 -0
  637. package/lib/vendor/blamejs/lib/openapi.js +489 -0
  638. package/lib/vendor/blamejs/lib/otel-export.js +278 -0
  639. package/lib/vendor/blamejs/lib/outbox.js +547 -0
  640. package/lib/vendor/blamejs/lib/pagination.js +542 -0
  641. package/lib/vendor/blamejs/lib/parsers/index.js +91 -0
  642. package/lib/vendor/blamejs/lib/parsers/safe-env.js +642 -0
  643. package/lib/vendor/blamejs/lib/parsers/safe-ini.js +293 -0
  644. package/lib/vendor/blamejs/lib/parsers/safe-toml.js +784 -0
  645. package/lib/vendor/blamejs/lib/parsers/safe-xml.js +390 -0
  646. package/lib/vendor/blamejs/lib/parsers/safe-yaml.js +1015 -0
  647. package/lib/vendor/blamejs/lib/permissions.js +793 -0
  648. package/lib/vendor/blamejs/lib/pick.js +105 -0
  649. package/lib/vendor/blamejs/lib/pqc-agent.js +351 -0
  650. package/lib/vendor/blamejs/lib/pqc-gate.js +279 -0
  651. package/lib/vendor/blamejs/lib/pqc-software.js +271 -0
  652. package/lib/vendor/blamejs/lib/problem-details.js +482 -0
  653. package/lib/vendor/blamejs/lib/process-spawn.js +196 -0
  654. package/lib/vendor/blamejs/lib/promise-pool.js +162 -0
  655. package/lib/vendor/blamejs/lib/protobuf-encoder.js +190 -0
  656. package/lib/vendor/blamejs/lib/protocol-dispatcher.js +161 -0
  657. package/lib/vendor/blamejs/lib/public-suffix.js +403 -0
  658. package/lib/vendor/blamejs/lib/pubsub-cluster.js +154 -0
  659. package/lib/vendor/blamejs/lib/pubsub-redis.js +167 -0
  660. package/lib/vendor/blamejs/lib/pubsub.js +463 -0
  661. package/lib/vendor/blamejs/lib/queue-local.js +476 -0
  662. package/lib/vendor/blamejs/lib/queue-redis.js +745 -0
  663. package/lib/vendor/blamejs/lib/queue-sqs.js +319 -0
  664. package/lib/vendor/blamejs/lib/queue.js +1016 -0
  665. package/lib/vendor/blamejs/lib/redact.js +1007 -0
  666. package/lib/vendor/blamejs/lib/redis-client.js +520 -0
  667. package/lib/vendor/blamejs/lib/render.js +285 -0
  668. package/lib/vendor/blamejs/lib/request-helpers.js +767 -0
  669. package/lib/vendor/blamejs/lib/resource-access-lock.js +116 -0
  670. package/lib/vendor/blamejs/lib/restore-bundle.js +340 -0
  671. package/lib/vendor/blamejs/lib/restore-rollback.js +365 -0
  672. package/lib/vendor/blamejs/lib/restore.js +409 -0
  673. package/lib/vendor/blamejs/lib/retention.js +640 -0
  674. package/lib/vendor/blamejs/lib/retry.js +523 -0
  675. package/lib/vendor/blamejs/lib/router.js +1289 -0
  676. package/lib/vendor/blamejs/lib/safe-async.js +1184 -0
  677. package/lib/vendor/blamejs/lib/safe-buffer.js +562 -0
  678. package/lib/vendor/blamejs/lib/safe-decompress.js +297 -0
  679. package/lib/vendor/blamejs/lib/safe-dns.js +665 -0
  680. package/lib/vendor/blamejs/lib/safe-ical.js +634 -0
  681. package/lib/vendor/blamejs/lib/safe-icap.js +502 -0
  682. package/lib/vendor/blamejs/lib/safe-json.js +946 -0
  683. package/lib/vendor/blamejs/lib/safe-jsonpath.js +285 -0
  684. package/lib/vendor/blamejs/lib/safe-mime.js +831 -0
  685. package/lib/vendor/blamejs/lib/safe-mount-info.js +306 -0
  686. package/lib/vendor/blamejs/lib/safe-path.js +254 -0
  687. package/lib/vendor/blamejs/lib/safe-redirect.js +106 -0
  688. package/lib/vendor/blamejs/lib/safe-schema.js +1810 -0
  689. package/lib/vendor/blamejs/lib/safe-sieve.js +684 -0
  690. package/lib/vendor/blamejs/lib/safe-smtp.js +185 -0
  691. package/lib/vendor/blamejs/lib/safe-sql.js +363 -0
  692. package/lib/vendor/blamejs/lib/safe-url.js +428 -0
  693. package/lib/vendor/blamejs/lib/safe-vcard.js +473 -0
  694. package/lib/vendor/blamejs/lib/sandbox-worker.js +135 -0
  695. package/lib/vendor/blamejs/lib/sandbox.js +358 -0
  696. package/lib/vendor/blamejs/lib/scheduler.js +827 -0
  697. package/lib/vendor/blamejs/lib/sd-notify.js +269 -0
  698. package/lib/vendor/blamejs/lib/sec-cyber.js +214 -0
  699. package/lib/vendor/blamejs/lib/security-assert.js +395 -0
  700. package/lib/vendor/blamejs/lib/seeders.js +620 -0
  701. package/lib/vendor/blamejs/lib/self-update-standalone-verifier.js +309 -0
  702. package/lib/vendor/blamejs/lib/self-update.js +804 -0
  703. package/lib/vendor/blamejs/lib/server-timing.js +174 -0
  704. package/lib/vendor/blamejs/lib/session-device-binding.js +431 -0
  705. package/lib/vendor/blamejs/lib/session-stores.js +138 -0
  706. package/lib/vendor/blamejs/lib/session.js +1162 -0
  707. package/lib/vendor/blamejs/lib/slug.js +381 -0
  708. package/lib/vendor/blamejs/lib/sse.js +349 -0
  709. package/lib/vendor/blamejs/lib/ssrf-guard.js +792 -0
  710. package/lib/vendor/blamejs/lib/standard-webhooks.js +183 -0
  711. package/lib/vendor/blamejs/lib/static.js +1249 -0
  712. package/lib/vendor/blamejs/lib/storage.js +1272 -0
  713. package/lib/vendor/blamejs/lib/stream-throttle.js +235 -0
  714. package/lib/vendor/blamejs/lib/structured-fields.js +244 -0
  715. package/lib/vendor/blamejs/lib/subject.js +667 -0
  716. package/lib/vendor/blamejs/lib/tcpa-10dlc.js +175 -0
  717. package/lib/vendor/blamejs/lib/template.js +931 -0
  718. package/lib/vendor/blamejs/lib/tenant-quota.js +545 -0
  719. package/lib/vendor/blamejs/lib/test-harness.js +275 -0
  720. package/lib/vendor/blamejs/lib/testing.js +1185 -0
  721. package/lib/vendor/blamejs/lib/time.js +578 -0
  722. package/lib/vendor/blamejs/lib/tls-exporter.js +239 -0
  723. package/lib/vendor/blamejs/lib/totp.js +318 -0
  724. package/lib/vendor/blamejs/lib/tracing.js +546 -0
  725. package/lib/vendor/blamejs/lib/uuid.js +207 -0
  726. package/lib/vendor/blamejs/lib/validate-opts.js +381 -0
  727. package/lib/vendor/blamejs/lib/vault/index.js +638 -0
  728. package/lib/vendor/blamejs/lib/vault/passphrase-ops.js +311 -0
  729. package/lib/vendor/blamejs/lib/vault/passphrase-source.js +198 -0
  730. package/lib/vendor/blamejs/lib/vault/rotate.js +803 -0
  731. package/lib/vendor/blamejs/lib/vault/seal-pem-file.js +471 -0
  732. package/lib/vendor/blamejs/lib/vault/wrap.js +296 -0
  733. package/lib/vendor/blamejs/lib/vault-aad.js +259 -0
  734. package/lib/vendor/blamejs/lib/vendor/.vendor-data-pubkey +4 -0
  735. package/lib/vendor/blamejs/lib/vendor/MANIFEST.json +161 -0
  736. package/lib/vendor/blamejs/lib/vendor/bimi-trust-anchors.data.js +68 -0
  737. package/lib/vendor/blamejs/lib/vendor/bimi-trust-anchors.pem +33 -0
  738. package/lib/vendor/blamejs/lib/vendor/common-passwords-top-10000.data.js +1325 -0
  739. package/lib/vendor/blamejs/lib/vendor/common-passwords-top-10000.txt +10002 -0
  740. package/lib/vendor/blamejs/lib/vendor/noble-ciphers.cjs +9 -0
  741. package/lib/vendor/blamejs/lib/vendor/noble-post-quantum.cjs +18 -0
  742. package/lib/vendor/blamejs/lib/vendor/pki.cjs +181 -0
  743. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.dat +16382 -0
  744. package/lib/vendor/blamejs/lib/vendor/public-suffix-list.data.js +5881 -0
  745. package/lib/vendor/blamejs/lib/vendor/simplewebauthn-server.cjs +328 -0
  746. package/lib/vendor/blamejs/lib/vendor/vendor-data-pubkey.js +16 -0
  747. package/lib/vendor/blamejs/lib/vendor-data.js +520 -0
  748. package/lib/vendor/blamejs/lib/vex.js +630 -0
  749. package/lib/vendor/blamejs/lib/watcher.js +608 -0
  750. package/lib/vendor/blamejs/lib/web-push-vapid.js +322 -0
  751. package/lib/vendor/blamejs/lib/webhook.js +977 -0
  752. package/lib/vendor/blamejs/lib/websocket-channels.js +327 -0
  753. package/lib/vendor/blamejs/lib/websocket.js +1561 -0
  754. package/lib/vendor/blamejs/lib/wiki-concepts.js +338 -0
  755. package/lib/vendor/blamejs/lib/worker-pool.js +464 -0
  756. package/lib/vendor/blamejs/lib/ws-client.js +978 -0
  757. package/lib/vendor/blamejs/lib/xml-c14n.js +506 -0
  758. package/lib/vendor/blamejs/memory/specs/node-26-map-getorinsert-migration.md +164 -0
  759. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/Dockerfile +19 -0
  760. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/README.md +88 -0
  761. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/build.sh +26 -0
  762. package/lib/vendor/blamejs/oss-fuzz/projects/blamejs/project.yaml +28 -0
  763. package/lib/vendor/blamejs/package.json +81 -0
  764. package/lib/vendor/blamejs/release-notes/v0.0.x.json +310 -0
  765. package/lib/vendor/blamejs/release-notes/v0.1.x.json +1798 -0
  766. package/lib/vendor/blamejs/release-notes/v0.10.x.json +1288 -0
  767. package/lib/vendor/blamejs/release-notes/v0.11.x.json +2551 -0
  768. package/lib/vendor/blamejs/release-notes/v0.12.0.json +64 -0
  769. package/lib/vendor/blamejs/release-notes/v0.12.1.json +32 -0
  770. package/lib/vendor/blamejs/release-notes/v0.12.2.json +45 -0
  771. package/lib/vendor/blamejs/release-notes/v0.2.x.json +706 -0
  772. package/lib/vendor/blamejs/release-notes/v0.3.x.json +786 -0
  773. package/lib/vendor/blamejs/release-notes/v0.4.x.json +588 -0
  774. package/lib/vendor/blamejs/release-notes/v0.5.x.json +390 -0
  775. package/lib/vendor/blamejs/release-notes/v0.6.x.json +1947 -0
  776. package/lib/vendor/blamejs/release-notes/v0.7.x.json +3811 -0
  777. package/lib/vendor/blamejs/release-notes/v0.8.x.json +3318 -0
  778. package/lib/vendor/blamejs/release-notes/v0.9.x.json +2257 -0
  779. package/lib/vendor/blamejs/scripts/build-vendored-sbom.js +325 -0
  780. package/lib/vendor/blamejs/scripts/check-api-snapshot.js +62 -0
  781. package/lib/vendor/blamejs/scripts/check-changelog-extract.js +108 -0
  782. package/lib/vendor/blamejs/scripts/check-pack-against-gitignore.js +83 -0
  783. package/lib/vendor/blamejs/scripts/check-services.js +483 -0
  784. package/lib/vendor/blamejs/scripts/check-vendor-currency.js +349 -0
  785. package/lib/vendor/blamejs/scripts/consolidate-release-notes.js +216 -0
  786. package/lib/vendor/blamejs/scripts/gen-migrating.js +275 -0
  787. package/lib/vendor/blamejs/scripts/generate-changelog-entry.js +577 -0
  788. package/lib/vendor/blamejs/scripts/generate-release-signing-key.js +79 -0
  789. package/lib/vendor/blamejs/scripts/publish-dep-confusion-placeholder.sh +101 -0
  790. package/lib/vendor/blamejs/scripts/refresh-api-snapshot.js +31 -0
  791. package/lib/vendor/blamejs/scripts/refresh-vendor-manifest.js +132 -0
  792. package/lib/vendor/blamejs/scripts/release.js +652 -0
  793. package/lib/vendor/blamejs/scripts/sha3-digest.js +62 -0
  794. package/lib/vendor/blamejs/scripts/sign-release-artifact.js +92 -0
  795. package/lib/vendor/blamejs/scripts/test-integration.js +181 -0
  796. package/lib/vendor/blamejs/scripts/test-wiki-integration.js +126 -0
  797. package/lib/vendor/blamejs/scripts/validate-source-comment-blocks.js +77 -0
  798. package/lib/vendor/blamejs/scripts/vendor-data-gen.js +186 -0
  799. package/lib/vendor/blamejs/scripts/vendor-data-keygen.js +101 -0
  800. package/lib/vendor/blamejs/scripts/vendor-update.sh +278 -0
  801. package/lib/vendor/blamejs/test/00-primitives.js +19075 -0
  802. package/lib/vendor/blamejs/test/10-state.js +622 -0
  803. package/lib/vendor/blamejs/test/20-db.js +561 -0
  804. package/lib/vendor/blamejs/test/30-chain.js +2110 -0
  805. package/lib/vendor/blamejs/test/40-consumers.js +2453 -0
  806. package/lib/vendor/blamejs/test/50-integration.js +486 -0
  807. package/lib/vendor/blamejs/test/_helpers.js +10 -0
  808. package/lib/vendor/blamejs/test/_smoke-worker.js +69 -0
  809. package/lib/vendor/blamejs/test/fixtures/exploit-corpus/corpus.json +368 -0
  810. package/lib/vendor/blamejs/test/fixtures/http-client-stream-payload.txt +2 -0
  811. package/lib/vendor/blamejs/test/fixtures/worker-pool/echo.js +52 -0
  812. package/lib/vendor/blamejs/test/helpers/_codebase-shingle-worker.js +24 -0
  813. package/lib/vendor/blamejs/test/helpers/_codebase-shingle.js +203 -0
  814. package/lib/vendor/blamejs/test/helpers/_shape-match.js +513 -0
  815. package/lib/vendor/blamejs/test/helpers/check.js +36 -0
  816. package/lib/vendor/blamejs/test/helpers/cluster.js +70 -0
  817. package/lib/vendor/blamejs/test/helpers/db.js +143 -0
  818. package/lib/vendor/blamejs/test/helpers/drivers.js +207 -0
  819. package/lib/vendor/blamejs/test/helpers/fs-watch.js +101 -0
  820. package/lib/vendor/blamejs/test/helpers/http.js +14 -0
  821. package/lib/vendor/blamejs/test/helpers/index.js +93 -0
  822. package/lib/vendor/blamejs/test/helpers/json-round-trip.js +120 -0
  823. package/lib/vendor/blamejs/test/helpers/mocks.js +20 -0
  824. package/lib/vendor/blamejs/test/helpers/otel.js +13 -0
  825. package/lib/vendor/blamejs/test/helpers/services.js +380 -0
  826. package/lib/vendor/blamejs/test/helpers/wait.js +206 -0
  827. package/lib/vendor/blamejs/test/integration/cache.test.js +235 -0
  828. package/lib/vendor/blamejs/test/integration/cluster-provider-mysql.test.js +174 -0
  829. package/lib/vendor/blamejs/test/integration/federation-auth.test.js +611 -0
  830. package/lib/vendor/blamejs/test/integration/http-client.test.js +129 -0
  831. package/lib/vendor/blamejs/test/integration/log-stream.test.js +219 -0
  832. package/lib/vendor/blamejs/test/integration/mail-crypto-smime.test.js +181 -0
  833. package/lib/vendor/blamejs/test/integration/mail-dkim.test.js +152 -0
  834. package/lib/vendor/blamejs/test/integration/mail-smtp.test.js +161 -0
  835. package/lib/vendor/blamejs/test/integration/mtls-ca.test.js +289 -0
  836. package/lib/vendor/blamejs/test/integration/network-dns.test.js +123 -0
  837. package/lib/vendor/blamejs/test/integration/network-heartbeat.test.js +101 -0
  838. package/lib/vendor/blamejs/test/integration/ntp-check.test.js +89 -0
  839. package/lib/vendor/blamejs/test/integration/object-store-sigv4.test.js +403 -0
  840. package/lib/vendor/blamejs/test/integration/pqc-pkcs8-forward-compat.test.js +271 -0
  841. package/lib/vendor/blamejs/test/integration/pubsub.test.js +137 -0
  842. package/lib/vendor/blamejs/test/integration/queue-redis.test.js +352 -0
  843. package/lib/vendor/blamejs/test/integration/redis-client-tls.test.js +96 -0
  844. package/lib/vendor/blamejs/test/integration/ssrf-guard.test.js +98 -0
  845. package/lib/vendor/blamejs/test/integration/websocket-permessage-deflate.test.js +261 -0
  846. package/lib/vendor/blamejs/test/integration/ws-client-roundtrip.test.js +230 -0
  847. package/lib/vendor/blamejs/test/layer-0-primitives/a2a-tasks.test.js +211 -0
  848. package/lib/vendor/blamejs/test/layer-0-primitives/a2a.test.js +59 -0
  849. package/lib/vendor/blamejs/test/layer-0-primitives/access-lock.test.js +136 -0
  850. package/lib/vendor/blamejs/test/layer-0-primitives/acme.test.js +219 -0
  851. package/lib/vendor/blamejs/test/layer-0-primitives/age-gate.test.js +69 -0
  852. package/lib/vendor/blamejs/test/layer-0-primitives/agent-event-bus.test.js +266 -0
  853. package/lib/vendor/blamejs/test/layer-0-primitives/agent-idempotency.test.js +262 -0
  854. package/lib/vendor/blamejs/test/layer-0-primitives/agent-orchestrator.test.js +390 -0
  855. package/lib/vendor/blamejs/test/layer-0-primitives/agent-posture-chain.test.js +174 -0
  856. package/lib/vendor/blamejs/test/layer-0-primitives/agent-saga.test.js +279 -0
  857. package/lib/vendor/blamejs/test/layer-0-primitives/agent-snapshot.test.js +322 -0
  858. package/lib/vendor/blamejs/test/layer-0-primitives/agent-stream.test.js +227 -0
  859. package/lib/vendor/blamejs/test/layer-0-primitives/agent-tenant.test.js +302 -0
  860. package/lib/vendor/blamejs/test/layer-0-primitives/agent-trace.test.js +150 -0
  861. package/lib/vendor/blamejs/test/layer-0-primitives/ai-adverse-decision.test.js +44 -0
  862. package/lib/vendor/blamejs/test/layer-0-primitives/ai-content-detect.test.js +150 -0
  863. package/lib/vendor/blamejs/test/layer-0-primitives/ai-input.test.js +50 -0
  864. package/lib/vendor/blamejs/test/layer-0-primitives/ai-model-manifest.test.js +96 -0
  865. package/lib/vendor/blamejs/test/layer-0-primitives/ai-pref.test.js +76 -0
  866. package/lib/vendor/blamejs/test/layer-0-primitives/api-encrypt.test.js +1080 -0
  867. package/lib/vendor/blamejs/test/layer-0-primitives/app-shutdown.test.js +311 -0
  868. package/lib/vendor/blamejs/test/layer-0-primitives/archive-zip-stream.test.js +291 -0
  869. package/lib/vendor/blamejs/test/layer-0-primitives/archive.test.js +140 -0
  870. package/lib/vendor/blamejs/test/layer-0-primitives/arg-parser.test.js +267 -0
  871. package/lib/vendor/blamejs/test/layer-0-primitives/asn1-der.test.js +108 -0
  872. package/lib/vendor/blamejs/test/layer-0-primitives/asyncapi.test.js +929 -0
  873. package/lib/vendor/blamejs/test/layer-0-primitives/atomic-file-conflict-path.test.js +80 -0
  874. package/lib/vendor/blamejs/test/layer-0-primitives/audit-cve-defensive.test.js +176 -0
  875. package/lib/vendor/blamejs/test/layer-0-primitives/audit-daily-review.test.js +132 -0
  876. package/lib/vendor/blamejs/test/layer-0-primitives/audit-export-cadf.test.js +97 -0
  877. package/lib/vendor/blamejs/test/layer-0-primitives/audit-framework-namespaces.test.js +141 -0
  878. package/lib/vendor/blamejs/test/layer-0-primitives/audit-segregation.test.js +115 -0
  879. package/lib/vendor/blamejs/test/layer-0-primitives/audit-sign-ml-dsa-65.test.js +163 -0
  880. package/lib/vendor/blamejs/test/layer-0-primitives/audit-use-store.test.js +246 -0
  881. package/lib/vendor/blamejs/test/layer-0-primitives/auth-bot-challenge-verifier.test.js +485 -0
  882. package/lib/vendor/blamejs/test/layer-0-primitives/auth-bot-challenge.test.js +331 -0
  883. package/lib/vendor/blamejs/test/layer-0-primitives/auth-jwt-defenses.test.js +352 -0
  884. package/lib/vendor/blamejs/test/layer-0-primitives/auth-lockout.test.js +572 -0
  885. package/lib/vendor/blamejs/test/layer-0-primitives/auth-password-audit.test.js +61 -0
  886. package/lib/vendor/blamejs/test/layer-0-primitives/azure-blob-bucket-ops.test.js +258 -0
  887. package/lib/vendor/blamejs/test/layer-0-primitives/backup-manifest-signature.test.js +105 -0
  888. package/lib/vendor/blamejs/test/layer-0-primitives/backup-worker.test.js +34 -0
  889. package/lib/vendor/blamejs/test/layer-0-primitives/bearer-auth.test.js +107 -0
  890. package/lib/vendor/blamejs/test/layer-0-primitives/body-parser-chunked-malformed.test.js +131 -0
  891. package/lib/vendor/blamejs/test/layer-0-primitives/body-parser-smuggling.test.js +118 -0
  892. package/lib/vendor/blamejs/test/layer-0-primitives/boot-gates.test.js +85 -0
  893. package/lib/vendor/blamejs/test/layer-0-primitives/breach-deadline.test.js +38 -0
  894. package/lib/vendor/blamejs/test/layer-0-primitives/break-glass.test.js +861 -0
  895. package/lib/vendor/blamejs/test/layer-0-primitives/budr.test.js +55 -0
  896. package/lib/vendor/blamejs/test/layer-0-primitives/bundler-engine.test.js +209 -0
  897. package/lib/vendor/blamejs/test/layer-0-primitives/cache-status.test.js +129 -0
  898. package/lib/vendor/blamejs/test/layer-0-primitives/cache.test.js +871 -0
  899. package/lib/vendor/blamejs/test/layer-0-primitives/calendar.test.js +891 -0
  900. package/lib/vendor/blamejs/test/layer-0-primitives/canonical-json-jcs.test.js +43 -0
  901. package/lib/vendor/blamejs/test/layer-0-primitives/cdn-cache-control.test.js +243 -0
  902. package/lib/vendor/blamejs/test/layer-0-primitives/cert.test.js +550 -0
  903. package/lib/vendor/blamejs/test/layer-0-primitives/clear-site-data.test.js +107 -0
  904. package/lib/vendor/blamejs/test/layer-0-primitives/cli-api-key.test.js +147 -0
  905. package/lib/vendor/blamejs/test/layer-0-primitives/cli-audit-verify-chain.test.js +104 -0
  906. package/lib/vendor/blamejs/test/layer-0-primitives/cli-backup.test.js +135 -0
  907. package/lib/vendor/blamejs/test/layer-0-primitives/cli-config-drift.test.js +67 -0
  908. package/lib/vendor/blamejs/test/layer-0-primitives/cli-erase.test.js +75 -0
  909. package/lib/vendor/blamejs/test/layer-0-primitives/cli-file-type.test.js +98 -0
  910. package/lib/vendor/blamejs/test/layer-0-primitives/cli-helpers.test.js +145 -0
  911. package/lib/vendor/blamejs/test/layer-0-primitives/cli-mtls.test.js +133 -0
  912. package/lib/vendor/blamejs/test/layer-0-primitives/cli-password.test.js +97 -0
  913. package/lib/vendor/blamejs/test/layer-0-primitives/cli-restore.test.js +160 -0
  914. package/lib/vendor/blamejs/test/layer-0-primitives/cli-retention.test.js +84 -0
  915. package/lib/vendor/blamejs/test/layer-0-primitives/cli-security.test.js +69 -0
  916. package/lib/vendor/blamejs/test/layer-0-primitives/cli-vault.test.js +142 -0
  917. package/lib/vendor/blamejs/test/layer-0-primitives/client-hints.test.js +133 -0
  918. package/lib/vendor/blamejs/test/layer-0-primitives/cms-codec.test.js +237 -0
  919. package/lib/vendor/blamejs/test/layer-0-primitives/codebase-patterns.test.js +9600 -0
  920. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-ai-act.test.js +575 -0
  921. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-cascade.test.js +89 -0
  922. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-eaa.test.js +36 -0
  923. package/lib/vendor/blamejs/test/layer-0-primitives/compliance-sanctions.test.js +712 -0
  924. package/lib/vendor/blamejs/test/layer-0-primitives/compliance.test.js +278 -0
  925. package/lib/vendor/blamejs/test/layer-0-primitives/config-drift.test.js +97 -0
  926. package/lib/vendor/blamejs/test/layer-0-primitives/config.test.js +424 -0
  927. package/lib/vendor/blamejs/test/layer-0-primitives/content-credentials.test.js +94 -0
  928. package/lib/vendor/blamejs/test/layer-0-primitives/cors.test.js +357 -0
  929. package/lib/vendor/blamejs/test/layer-0-primitives/cra-report.test.js +31 -0
  930. package/lib/vendor/blamejs/test/layer-0-primitives/credential-hash.test.js +226 -0
  931. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-base64url.test.js +86 -0
  932. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-envelope.test.js +85 -0
  933. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-files-parallel.test.js +193 -0
  934. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hash-stream.test.js +98 -0
  935. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hpke-pq.test.js +132 -0
  936. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-hpke.test.js +155 -0
  937. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-mlkem768-x25519.test.js +129 -0
  938. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-namespace-hash.test.js +0 -0
  939. package/lib/vendor/blamejs/test/layer-0-primitives/crypto-random-int.test.js +72 -0
  940. package/lib/vendor/blamejs/test/layer-0-primitives/csp-builder.test.js +96 -0
  941. package/lib/vendor/blamejs/test/layer-0-primitives/csp-nonce.test.js +401 -0
  942. package/lib/vendor/blamejs/test/layer-0-primitives/csp-report.test.js +34 -0
  943. package/lib/vendor/blamejs/test/layer-0-primitives/csv.test.js +180 -0
  944. package/lib/vendor/blamejs/test/layer-0-primitives/daemon.test.js +210 -0
  945. package/lib/vendor/blamejs/test/layer-0-primitives/daily-byte-quota.test.js +153 -0
  946. package/lib/vendor/blamejs/test/layer-0-primitives/dark-patterns.test.js +66 -0
  947. package/lib/vendor/blamejs/test/layer-0-primitives/data-act.test.js +74 -0
  948. package/lib/vendor/blamejs/test/layer-0-primitives/db-collection-extensions.test.js +226 -0
  949. package/lib/vendor/blamejs/test/layer-0-primitives/db-collection.test.js +136 -0
  950. package/lib/vendor/blamejs/test/layer-0-primitives/db-init-extensions.test.js +165 -0
  951. package/lib/vendor/blamejs/test/layer-0-primitives/db-query-cross-schema.test.js +150 -0
  952. package/lib/vendor/blamejs/test/layer-0-primitives/db-query-extensions.test.js +191 -0
  953. package/lib/vendor/blamejs/test/layer-0-primitives/db-role-for.test.js +228 -0
  954. package/lib/vendor/blamejs/test/layer-0-primitives/db-vacuum.test.js +55 -0
  955. package/lib/vendor/blamejs/test/layer-0-primitives/db-worm.test.js +89 -0
  956. package/lib/vendor/blamejs/test/layer-0-primitives/ddl-change-control.test.js +184 -0
  957. package/lib/vendor/blamejs/test/layer-0-primitives/declare-row-policy.test.js +203 -0
  958. package/lib/vendor/blamejs/test/layer-0-primitives/declare-view.test.js +303 -0
  959. package/lib/vendor/blamejs/test/layer-0-primitives/dns-dnssec-algorithm.test.js +163 -0
  960. package/lib/vendor/blamejs/test/layer-0-primitives/dns-null-mx.test.js +39 -0
  961. package/lib/vendor/blamejs/test/layer-0-primitives/dora.test.js +165 -0
  962. package/lib/vendor/blamejs/test/layer-0-primitives/dr-runbook.test.js +59 -0
  963. package/lib/vendor/blamejs/test/layer-0-primitives/dsr-state-rules.test.js +55 -0
  964. package/lib/vendor/blamejs/test/layer-0-primitives/dsr.test.js +786 -0
  965. package/lib/vendor/blamejs/test/layer-0-primitives/dual-control.test.js +105 -0
  966. package/lib/vendor/blamejs/test/layer-0-primitives/early-hints.test.js +147 -0
  967. package/lib/vendor/blamejs/test/layer-0-primitives/events.test.js +105 -0
  968. package/lib/vendor/blamejs/test/layer-0-primitives/exploit-replay.test.js +243 -0
  969. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-hardening.test.js +181 -0
  970. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-migrate.test.js +190 -0
  971. package/lib/vendor/blamejs/test/layer-0-primitives/external-db-routing.test.js +531 -0
  972. package/lib/vendor/blamejs/test/layer-0-primitives/fal.test.js +118 -0
  973. package/lib/vendor/blamejs/test/layer-0-primitives/fapi2.test.js +89 -0
  974. package/lib/vendor/blamejs/test/layer-0-primitives/fda-21cfr11.test.js +156 -0
  975. package/lib/vendor/blamejs/test/layer-0-primitives/fdx.test.js +79 -0
  976. package/lib/vendor/blamejs/test/layer-0-primitives/fedcm-dbsc.test.js +216 -0
  977. package/lib/vendor/blamejs/test/layer-0-primitives/federation-vc-suite.test.js +434 -0
  978. package/lib/vendor/blamejs/test/layer-0-primitives/fido-mds3.test.js +432 -0
  979. package/lib/vendor/blamejs/test/layer-0-primitives/file-type.test.js +81 -0
  980. package/lib/vendor/blamejs/test/layer-0-primitives/flag.test.js +887 -0
  981. package/lib/vendor/blamejs/test/layer-0-primitives/forensic-snapshot.test.js +51 -0
  982. package/lib/vendor/blamejs/test/layer-0-primitives/fsm.test.js +375 -0
  983. package/lib/vendor/blamejs/test/layer-0-primitives/gcs-bucket-ops.test.js +321 -0
  984. package/lib/vendor/blamejs/test/layer-0-primitives/gdpr-ropa.test.js +41 -0
  985. package/lib/vendor/blamejs/test/layer-0-primitives/graphql-federation.test.js +32 -0
  986. package/lib/vendor/blamejs/test/layer-0-primitives/guard-agent-registry.test.js +87 -0
  987. package/lib/vendor/blamejs/test/layer-0-primitives/guard-all.test.js +328 -0
  988. package/lib/vendor/blamejs/test/layer-0-primitives/guard-archive.test.js +339 -0
  989. package/lib/vendor/blamejs/test/layer-0-primitives/guard-csv.test.js +694 -0
  990. package/lib/vendor/blamejs/test/layer-0-primitives/guard-dsn.test.js +296 -0
  991. package/lib/vendor/blamejs/test/layer-0-primitives/guard-email.test.js +234 -0
  992. package/lib/vendor/blamejs/test/layer-0-primitives/guard-envelope.test.js +192 -0
  993. package/lib/vendor/blamejs/test/layer-0-primitives/guard-event-bus-payload.test.js +89 -0
  994. package/lib/vendor/blamejs/test/layer-0-primitives/guard-event-bus-topic.test.js +71 -0
  995. package/lib/vendor/blamejs/test/layer-0-primitives/guard-filename.test.js +386 -0
  996. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html-wcag.test.js +859 -0
  997. package/lib/vendor/blamejs/test/layer-0-primitives/guard-html.test.js +357 -0
  998. package/lib/vendor/blamejs/test/layer-0-primitives/guard-idempotency-key.test.js +92 -0
  999. package/lib/vendor/blamejs/test/layer-0-primitives/guard-imap-command.test.js +0 -0
  1000. package/lib/vendor/blamejs/test/layer-0-primitives/guard-jmap.test.js +174 -0
  1001. package/lib/vendor/blamejs/test/layer-0-primitives/guard-json.test.js +317 -0
  1002. package/lib/vendor/blamejs/test/layer-0-primitives/guard-list-id.test.js +199 -0
  1003. package/lib/vendor/blamejs/test/layer-0-primitives/guard-list-unsubscribe.test.js +214 -0
  1004. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-compose.test.js +111 -0
  1005. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-move.test.js +110 -0
  1006. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-query.test.js +112 -0
  1007. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-reply.test.js +86 -0
  1008. package/lib/vendor/blamejs/test/layer-0-primitives/guard-mail-sieve.test.js +92 -0
  1009. package/lib/vendor/blamejs/test/layer-0-primitives/guard-managesieve-command.test.js +301 -0
  1010. package/lib/vendor/blamejs/test/layer-0-primitives/guard-markdown.test.js +265 -0
  1011. package/lib/vendor/blamejs/test/layer-0-primitives/guard-message-id.test.js +0 -0
  1012. package/lib/vendor/blamejs/test/layer-0-primitives/guard-pop3-command.test.js +161 -0
  1013. package/lib/vendor/blamejs/test/layer-0-primitives/guard-posture-chain.test.js +100 -0
  1014. package/lib/vendor/blamejs/test/layer-0-primitives/guard-saga-config.test.js +79 -0
  1015. package/lib/vendor/blamejs/test/layer-0-primitives/guard-smtp-command.test.js +269 -0
  1016. package/lib/vendor/blamejs/test/layer-0-primitives/guard-snapshot-envelope.test.js +89 -0
  1017. package/lib/vendor/blamejs/test/layer-0-primitives/guard-stream-args.test.js +78 -0
  1018. package/lib/vendor/blamejs/test/layer-0-primitives/guard-svg.test.js +288 -0
  1019. package/lib/vendor/blamejs/test/layer-0-primitives/guard-tenant-id.test.js +69 -0
  1020. package/lib/vendor/blamejs/test/layer-0-primitives/guard-trace-context.test.js +102 -0
  1021. package/lib/vendor/blamejs/test/layer-0-primitives/guard-xml.test.js +202 -0
  1022. package/lib/vendor/blamejs/test/layer-0-primitives/guard-yaml.test.js +203 -0
  1023. package/lib/vendor/blamejs/test/layer-0-primitives/hal.test.js +51 -0
  1024. package/lib/vendor/blamejs/test/layer-0-primitives/honeytoken.test.js +50 -0
  1025. package/lib/vendor/blamejs/test/layer-0-primitives/html-balance.test.js +37 -0
  1026. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-cache.test.js +692 -0
  1027. package/lib/vendor/blamejs/test/layer-0-primitives/http-client-stream.test.js +280 -0
  1028. package/lib/vendor/blamejs/test/layer-0-primitives/http-message-signature.test.js +225 -0
  1029. package/lib/vendor/blamejs/test/layer-0-primitives/i18n-messageformat.test.js +203 -0
  1030. package/lib/vendor/blamejs/test/layer-0-primitives/i18n.test.js +991 -0
  1031. package/lib/vendor/blamejs/test/layer-0-primitives/iab-mspa.test.js +63 -0
  1032. package/lib/vendor/blamejs/test/layer-0-primitives/iab-tcf.test.js +73 -0
  1033. package/lib/vendor/blamejs/test/layer-0-primitives/idempotency-key.test.js +612 -0
  1034. package/lib/vendor/blamejs/test/layer-0-primitives/importmap-integrity.test.js +56 -0
  1035. package/lib/vendor/blamejs/test/layer-0-primitives/inbox.test.js +166 -0
  1036. package/lib/vendor/blamejs/test/layer-0-primitives/incident-report.test.js +29 -0
  1037. package/lib/vendor/blamejs/test/layer-0-primitives/jose-jwe-experimental.test.js +121 -0
  1038. package/lib/vendor/blamejs/test/layer-0-primitives/json-api.test.js +58 -0
  1039. package/lib/vendor/blamejs/test/layer-0-primitives/json-round-trip-helper.test.js +110 -0
  1040. package/lib/vendor/blamejs/test/layer-0-primitives/jwt-external.test.js +159 -0
  1041. package/lib/vendor/blamejs/test/layer-0-primitives/keychain.test.js +0 -0
  1042. package/lib/vendor/blamejs/test/layer-0-primitives/legal-hold.test.js +118 -0
  1043. package/lib/vendor/blamejs/test/layer-0-primitives/local-db-thin.test.js +150 -0
  1044. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-cloudwatch.test.js +489 -0
  1045. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-otlp-grpc.test.js +207 -0
  1046. package/lib/vendor/blamejs/test/layer-0-primitives/log-stream-otlp.test.js +283 -0
  1047. package/lib/vendor/blamejs/test/layer-0-primitives/lro.test.js +65 -0
  1048. package/lib/vendor/blamejs/test/layer-0-primitives/mail-agent.test.js +417 -0
  1049. package/lib/vendor/blamejs/test/layer-0-primitives/mail-arf.test.js +208 -0
  1050. package/lib/vendor/blamejs/test/layer-0-primitives/mail-auth.test.js +910 -0
  1051. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bimi.test.js +502 -0
  1052. package/lib/vendor/blamejs/test/layer-0-primitives/mail-bounce.test.js +680 -0
  1053. package/lib/vendor/blamejs/test/layer-0-primitives/mail-canspam.test.js +128 -0
  1054. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp-experimental.test.js +149 -0
  1055. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-pgp.test.js +323 -0
  1056. package/lib/vendor/blamejs/test/layer-0-primitives/mail-crypto-smime.test.js +297 -0
  1057. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dav.test.js +514 -0
  1058. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy-tlsrpt.test.js +369 -0
  1059. package/lib/vendor/blamejs/test/layer-0-primitives/mail-deploy.test.js +199 -0
  1060. package/lib/vendor/blamejs/test/layer-0-primitives/mail-dkim.test.js +627 -0
  1061. package/lib/vendor/blamejs/test/layer-0-primitives/mail-feedback-id.test.js +56 -0
  1062. package/lib/vendor/blamejs/test/layer-0-primitives/mail-greylist.test.js +217 -0
  1063. package/lib/vendor/blamejs/test/layer-0-primitives/mail-helo.test.js +283 -0
  1064. package/lib/vendor/blamejs/test/layer-0-primitives/mail-journal.test.js +217 -0
  1065. package/lib/vendor/blamejs/test/layer-0-primitives/mail-mdn.test.js +334 -0
  1066. package/lib/vendor/blamejs/test/layer-0-primitives/mail-rbl.test.js +271 -0
  1067. package/lib/vendor/blamejs/test/layer-0-primitives/mail-require-tls.test.js +128 -0
  1068. package/lib/vendor/blamejs/test/layer-0-primitives/mail-scan.test.js +215 -0
  1069. package/lib/vendor/blamejs/test/layer-0-primitives/mail-send-deliver.test.js +336 -0
  1070. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-imap.test.js +732 -0
  1071. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-jmap.test.js +840 -0
  1072. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-managesieve.test.js +130 -0
  1073. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-mx.test.js +285 -0
  1074. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-pop3.test.js +74 -0
  1075. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-rate-limit.test.js +112 -0
  1076. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-registry.test.js +229 -0
  1077. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-submission.test.js +394 -0
  1078. package/lib/vendor/blamejs/test/layer-0-primitives/mail-server-tls.test.js +147 -0
  1079. package/lib/vendor/blamejs/test/layer-0-primitives/mail-sieve.test.js +151 -0
  1080. package/lib/vendor/blamejs/test/layer-0-primitives/mail-spam-score.test.js +204 -0
  1081. package/lib/vendor/blamejs/test/layer-0-primitives/mail-srs.test.js +152 -0
  1082. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store-fts.test.js +279 -0
  1083. package/lib/vendor/blamejs/test/layer-0-primitives/mail-store.test.js +323 -0
  1084. package/lib/vendor/blamejs/test/layer-0-primitives/mail-unsubscribe.test.js +165 -0
  1085. package/lib/vendor/blamejs/test/layer-0-primitives/mail.test.js +439 -0
  1086. package/lib/vendor/blamejs/test/layer-0-primitives/mcp-tool-registry.test.js +202 -0
  1087. package/lib/vendor/blamejs/test/layer-0-primitives/mcp.test.js +155 -0
  1088. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-shadow-registry.test.js +112 -0
  1089. package/lib/vendor/blamejs/test/layer-0-primitives/metrics-snapshot.test.js +224 -0
  1090. package/lib/vendor/blamejs/test/layer-0-primitives/middleware-compose-pipeline.test.js +278 -0
  1091. package/lib/vendor/blamejs/test/layer-0-primitives/money.test.js +376 -0
  1092. package/lib/vendor/blamejs/test/layer-0-primitives/mtls-ca-paths.test.js +89 -0
  1093. package/lib/vendor/blamejs/test/layer-0-primitives/nel.test.js +200 -0
  1094. package/lib/vendor/blamejs/test/layer-0-primitives/network-allowlist.test.js +106 -0
  1095. package/lib/vendor/blamejs/test/layer-0-primitives/network-byte-quota.test.js +133 -0
  1096. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns-resolver.test.js +372 -0
  1097. package/lib/vendor/blamejs/test/layer-0-primitives/network-dns.test.js +635 -0
  1098. package/lib/vendor/blamejs/test/layer-0-primitives/network-heartbeat-passive.test.js +128 -0
  1099. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls-build-options.test.js +130 -0
  1100. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls-ct-inclusion.test.js +179 -0
  1101. package/lib/vendor/blamejs/test/layer-0-primitives/network-tls.test.js +447 -0
  1102. package/lib/vendor/blamejs/test/layer-0-primitives/network.test.js +369 -0
  1103. package/lib/vendor/blamejs/test/layer-0-primitives/nis2-report.test.js +21 -0
  1104. package/lib/vendor/blamejs/test/layer-0-primitives/nist-crosswalk.test.js +42 -0
  1105. package/lib/vendor/blamejs/test/layer-0-primitives/no-cache.test.js +98 -0
  1106. package/lib/vendor/blamejs/test/layer-0-primitives/notify.test.js +707 -0
  1107. package/lib/vendor/blamejs/test/layer-0-primitives/numeric-bounds.test.js +142 -0
  1108. package/lib/vendor/blamejs/test/layer-0-primitives/oauth-callback.test.js +72 -0
  1109. package/lib/vendor/blamejs/test/layer-0-primitives/observability-tracing.test.js +597 -0
  1110. package/lib/vendor/blamejs/test/layer-0-primitives/observability.test.js +190 -0
  1111. package/lib/vendor/blamejs/test/layer-0-primitives/openapi.test.js +877 -0
  1112. package/lib/vendor/blamejs/test/layer-0-primitives/otel-export.test.js +257 -0
  1113. package/lib/vendor/blamejs/test/layer-0-primitives/pagination.test.js +522 -0
  1114. package/lib/vendor/blamejs/test/layer-0-primitives/parsers-standalone.test.js +216 -0
  1115. package/lib/vendor/blamejs/test/layer-0-primitives/passkey.test.js +324 -0
  1116. package/lib/vendor/blamejs/test/layer-0-primitives/permissions.test.js +546 -0
  1117. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-agent-curve.test.js +153 -0
  1118. package/lib/vendor/blamejs/test/layer-0-primitives/pqc-software.test.js +94 -0
  1119. package/lib/vendor/blamejs/test/layer-0-primitives/problem-details.test.js +195 -0
  1120. package/lib/vendor/blamejs/test/layer-0-primitives/process-spawn.test.js +62 -0
  1121. package/lib/vendor/blamejs/test/layer-0-primitives/promise-pool.test.js +93 -0
  1122. package/lib/vendor/blamejs/test/layer-0-primitives/protected-resource-metadata.test.js +68 -0
  1123. package/lib/vendor/blamejs/test/layer-0-primitives/protobuf-encoder.test.js +138 -0
  1124. package/lib/vendor/blamejs/test/layer-0-primitives/protocol-dispatcher.test.js +174 -0
  1125. package/lib/vendor/blamejs/test/layer-0-primitives/public-suffix.test.js +197 -0
  1126. package/lib/vendor/blamejs/test/layer-0-primitives/pubsub.test.js +232 -0
  1127. package/lib/vendor/blamejs/test/layer-0-primitives/queue-dlq-extend-lease.test.js +178 -0
  1128. package/lib/vendor/blamejs/test/layer-0-primitives/queue-flow-repeat.test.js +322 -0
  1129. package/lib/vendor/blamejs/test/layer-0-primitives/queue-priority-rate-progress.test.js +266 -0
  1130. package/lib/vendor/blamejs/test/layer-0-primitives/queue-sqs.test.js +300 -0
  1131. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-cluster.test.js +338 -0
  1132. package/lib/vendor/blamejs/test/layer-0-primitives/rate-limit-registry.test.js +75 -0
  1133. package/lib/vendor/blamejs/test/layer-0-primitives/redact-dlp.test.js +246 -0
  1134. package/lib/vendor/blamejs/test/layer-0-primitives/redis-client.test.js +130 -0
  1135. package/lib/vendor/blamejs/test/layer-0-primitives/request-helpers.test.js +335 -0
  1136. package/lib/vendor/blamejs/test/layer-0-primitives/request-log.test.js +170 -0
  1137. package/lib/vendor/blamejs/test/layer-0-primitives/require-auth-cache-control.test.js +93 -0
  1138. package/lib/vendor/blamejs/test/layer-0-primitives/require-mtls.test.js +34 -0
  1139. package/lib/vendor/blamejs/test/layer-0-primitives/resource-access-lock.test.js +52 -0
  1140. package/lib/vendor/blamejs/test/layer-0-primitives/retention-floor.test.js +67 -0
  1141. package/lib/vendor/blamejs/test/layer-0-primitives/retry.test.js +535 -0
  1142. package/lib/vendor/blamejs/test/layer-0-primitives/router-cross-origin-redirect.test.js +0 -0
  1143. package/lib/vendor/blamejs/test/layer-0-primitives/router-tls0rtt.test.js +128 -0
  1144. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async-loops.test.js +163 -0
  1145. package/lib/vendor/blamejs/test/layer-0-primitives/safe-async-parallel.test.js +170 -0
  1146. package/lib/vendor/blamejs/test/layer-0-primitives/safe-decompress.test.js +248 -0
  1147. package/lib/vendor/blamejs/test/layer-0-primitives/safe-dns.test.js +451 -0
  1148. package/lib/vendor/blamejs/test/layer-0-primitives/safe-ical.test.js +289 -0
  1149. package/lib/vendor/blamejs/test/layer-0-primitives/safe-icap.test.js +206 -0
  1150. package/lib/vendor/blamejs/test/layer-0-primitives/safe-jsonpath.test.js +104 -0
  1151. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mime.test.js +339 -0
  1152. package/lib/vendor/blamejs/test/layer-0-primitives/safe-mount-info.test.js +180 -0
  1153. package/lib/vendor/blamejs/test/layer-0-primitives/safe-path.test.js +78 -0
  1154. package/lib/vendor/blamejs/test/layer-0-primitives/safe-sieve.test.js +123 -0
  1155. package/lib/vendor/blamejs/test/layer-0-primitives/safe-smtp.test.js +95 -0
  1156. package/lib/vendor/blamejs/test/layer-0-primitives/safe-url-idn-homograph.test.js +77 -0
  1157. package/lib/vendor/blamejs/test/layer-0-primitives/safe-vcard.test.js +257 -0
  1158. package/lib/vendor/blamejs/test/layer-0-primitives/saml-slo.test.js +249 -0
  1159. package/lib/vendor/blamejs/test/layer-0-primitives/sandbox.test.js +228 -0
  1160. package/lib/vendor/blamejs/test/layer-0-primitives/scheduler-exactly-once.test.js +238 -0
  1161. package/lib/vendor/blamejs/test/layer-0-primitives/scim-server.test.js +92 -0
  1162. package/lib/vendor/blamejs/test/layer-0-primitives/sd-jwt-vc.test.js +700 -0
  1163. package/lib/vendor/blamejs/test/layer-0-primitives/sd-notify.test.js +67 -0
  1164. package/lib/vendor/blamejs/test/layer-0-primitives/sec-cyber.test.js +85 -0
  1165. package/lib/vendor/blamejs/test/layer-0-primitives/security-assert.test.js +107 -0
  1166. package/lib/vendor/blamejs/test/layer-0-primitives/security-headers.test.js +175 -0
  1167. package/lib/vendor/blamejs/test/layer-0-primitives/seeders.test.js +816 -0
  1168. package/lib/vendor/blamejs/test/layer-0-primitives/self-update-standalone-verifier.test.js +168 -0
  1169. package/lib/vendor/blamejs/test/layer-0-primitives/self-update.test.js +302 -0
  1170. package/lib/vendor/blamejs/test/layer-0-primitives/server-timing.test.js +93 -0
  1171. package/lib/vendor/blamejs/test/layer-0-primitives/session-device-binding.test.js +247 -0
  1172. package/lib/vendor/blamejs/test/layer-0-primitives/session-extensions.test.js +295 -0
  1173. package/lib/vendor/blamejs/test/layer-0-primitives/shape-match.test.js +142 -0
  1174. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-bucket-ops.test.js +952 -0
  1175. package/lib/vendor/blamejs/test/layer-0-primitives/sigv4-multipart-sse.test.js +441 -0
  1176. package/lib/vendor/blamejs/test/layer-0-primitives/slug.test.js +330 -0
  1177. package/lib/vendor/blamejs/test/layer-0-primitives/smtp-policy.test.js +233 -0
  1178. package/lib/vendor/blamejs/test/layer-0-primitives/source-comment-blocks.test.js +105 -0
  1179. package/lib/vendor/blamejs/test/layer-0-primitives/speculation-rules.test.js +319 -0
  1180. package/lib/vendor/blamejs/test/layer-0-primitives/sse.test.js +148 -0
  1181. package/lib/vendor/blamejs/test/layer-0-primitives/ssrf-guard.test.js +283 -0
  1182. package/lib/vendor/blamejs/test/layer-0-primitives/standard-webhooks.test.js +67 -0
  1183. package/lib/vendor/blamejs/test/layer-0-primitives/static.test.js +266 -0
  1184. package/lib/vendor/blamejs/test/layer-0-primitives/step-up.test.js +487 -0
  1185. package/lib/vendor/blamejs/test/layer-0-primitives/storage-chunk-scratch.test.js +0 -0
  1186. package/lib/vendor/blamejs/test/layer-0-primitives/storage-presigned-url.test.js +773 -0
  1187. package/lib/vendor/blamejs/test/layer-0-primitives/stream-throttle.test.js +173 -0
  1188. package/lib/vendor/blamejs/test/layer-0-primitives/structured-fields.test.js +180 -0
  1189. package/lib/vendor/blamejs/test/layer-0-primitives/tcpa-10dlc.test.js +66 -0
  1190. package/lib/vendor/blamejs/test/layer-0-primitives/tenant-quota.test.js +89 -0
  1191. package/lib/vendor/blamejs/test/layer-0-primitives/test-coverage.test.js +571 -0
  1192. package/lib/vendor/blamejs/test/layer-0-primitives/test-harness.test.js +190 -0
  1193. package/lib/vendor/blamejs/test/layer-0-primitives/testing-request.test.js +119 -0
  1194. package/lib/vendor/blamejs/test/layer-0-primitives/testing.test.js +522 -0
  1195. package/lib/vendor/blamejs/test/layer-0-primitives/time.test.js +151 -0
  1196. package/lib/vendor/blamejs/test/layer-0-primitives/tls-exporter.test.js +168 -0
  1197. package/lib/vendor/blamejs/test/layer-0-primitives/tls-ocsp-ct.test.js +275 -0
  1198. package/lib/vendor/blamejs/test/layer-0-primitives/tls-ocsp-verify.test.js +105 -0
  1199. package/lib/vendor/blamejs/test/layer-0-primitives/tls-pinset-drift.test.js +35 -0
  1200. package/lib/vendor/blamejs/test/layer-0-primitives/tls-preferred-groups.test.js +81 -0
  1201. package/lib/vendor/blamejs/test/layer-0-primitives/tracing.test.js +280 -0
  1202. package/lib/vendor/blamejs/test/layer-0-primitives/uuid.test.js +93 -0
  1203. package/lib/vendor/blamejs/test/layer-0-primitives/vault-aad.test.js +277 -0
  1204. package/lib/vendor/blamejs/test/layer-0-primitives/vault-seal-pem-file.test.js +252 -0
  1205. package/lib/vendor/blamejs/test/layer-0-primitives/vendor-data.test.js +149 -0
  1206. package/lib/vendor/blamejs/test/layer-0-primitives/vendor-manifest.test.js +92 -0
  1207. package/lib/vendor/blamejs/test/layer-0-primitives/vex.test.js +661 -0
  1208. package/lib/vendor/blamejs/test/layer-0-primitives/watcher.test.js +308 -0
  1209. package/lib/vendor/blamejs/test/layer-0-primitives/web-push-vapid.test.js +144 -0
  1210. package/lib/vendor/blamejs/test/layer-0-primitives/webhook.test.js +674 -0
  1211. package/lib/vendor/blamejs/test/layer-0-primitives/websocket-channels.test.js +360 -0
  1212. package/lib/vendor/blamejs/test/layer-0-primitives/worker-pool.test.js +302 -0
  1213. package/lib/vendor/blamejs/test/layer-0-primitives/ws-client.test.js +349 -0
  1214. package/lib/vendor/blamejs/test/layer-1-state/api-key.test.js +717 -0
  1215. package/lib/vendor/blamejs/test/layer-5-integration/bundler-output.test.js +444 -0
  1216. package/lib/vendor/blamejs/test/layer-5-integration/guard-host-integration.test.js +597 -0
  1217. package/lib/vendor/blamejs/test/layer-5-integration/security-chaos.test.js +308 -0
  1218. package/lib/vendor/blamejs/test/smoke.js +431 -0
  1219. package/lib/webhooks.js +305 -0
  1220. package/package.json +43 -0
@@ -0,0 +1,1558 @@
1
+ "use strict";
2
+ /**
3
+ * @module b.compliance
4
+ * @featured true
5
+ * @nav Compliance
6
+ * @title Compliance
7
+ *
8
+ * @intro
9
+ * Top-level compliance-posture coordinator — single source of truth
10
+ * for "what regulatory regime is this deployment running under?".
11
+ *
12
+ * `b.compliance.set("hipaa")` cascades the posture into every
13
+ * framework primitive that owns a posture-conditioned default:
14
+ * `b.retention` (TTL floors), `b.audit` (ML-DSA-87 chain-signing),
15
+ * `b.db` (column-policy enforcement), `b.cryptoField` (vacuum-after-
16
+ * erase). Each primitive merges the matching `POSTURE_DEFAULTS`
17
+ * entry into its own state and emits a
18
+ * `compliance.posture.cascade.applied` audit row so operators can
19
+ * confirm the cascade landed.
20
+ *
21
+ * Posture overlays follow a union-of-bars rule: when a primitive
22
+ * knob has different floors per regime (TLS minimum, retention
23
+ * ceiling, hash-algorithm minimum), the strictest applicable bar
24
+ * wins. Operators running under a single posture get that posture's
25
+ * floor; operators running multi-tenant deployments compose
26
+ * per-tenant by reading `postureDefault(posture, key)` per request
27
+ * instead of pinning a single global.
28
+ *
29
+ * Boot-time only — `set()` MUST run before the primitives it
30
+ * coordinates are first used. Runtime switches throw
31
+ * `compliance/already-set` because partial cascades produce
32
+ * half-set state across already-initialized primitives.
33
+ *
34
+ * Audit emissions: `compliance.posture.set` on success,
35
+ * `compliance.posture.set_rejected` on unknown / already-set,
36
+ * `compliance.posture.cascade.applied` / `.skipped` per primitive,
37
+ * `compliance.posture.cleared` on `clear()`. Grep audit chain to
38
+ * reconstruct posture history per deployment.
39
+ *
40
+ * @card
41
+ * Top-level compliance-posture coordinator — single source of truth for "what regulatory regime is this deployment running under?".
42
+ */
43
+
44
+ var lazyRequire = require("./lazy-require");
45
+ var sanctions = require("./compliance-sanctions");
46
+ var aiAct = require("./compliance-ai-act");
47
+ var { ComplianceError } = require("./framework-error");
48
+
49
+ var audit = lazyRequire(function () { return require("./audit"); });
50
+ var retentionMod = lazyRequire(function () { return require("./retention"); });
51
+ var db = lazyRequire(function () { return require("./db"); });
52
+ var cryptoField = lazyRequire(function () { return require("./crypto-field"); });
53
+
54
+ // Recognised posture names. Aligns with the compliance-posture
55
+ // vocabulary every guard / retention floor / etc. accepts. Operators
56
+ // passing an unknown name get a typo-surfacing throw at set-time, not
57
+ // silent fall-through to no-op.
58
+ var KNOWN_POSTURES = Object.freeze([
59
+ // ---- US Federal / Sectoral ----
60
+ "hipaa", // Health Insurance Portability and Accountability Act
61
+ "pci-dss", // Payment Card Industry Data Security Standard
62
+ "soc2", // System and Organization Controls 2
63
+ "sox", // Sarbanes-Oxley
64
+ "sox-404", // Sarbanes-Oxley §404 ICFR (DDL change-control + segregation of duties)
65
+ "soc2-cc1.3", // SOC 2 Trust Services Criterion CC1.3 (segregation of duties)
66
+ "wmhmda", // Washington My Health My Data Act (added 2026)
67
+ "bipa", // Illinois Biometric Information Privacy Act (added 2026)
68
+ // ---- US State Privacy ----
69
+ "ccpa", // California Consumer Privacy Act / CPRA (added 2026)
70
+ // ---- EU / EEA ----
71
+ "gdpr", // General Data Protection Regulation
72
+ "dora", // EU Digital Operational Resilience Act
73
+ "nis2", // EU Network and Information Security Directive 2 (added 2026)
74
+ "cra", // EU Cyber Resilience Act (added 2026)
75
+ "ai-act", // EU AI Act (added 2026)
76
+ // ---- Latin America / APAC ----
77
+ "lgpd-br", // Brazil Lei Geral de Proteção de Dados (added 2026)
78
+ "pipl-cn", // China Personal Information Protection Law (added 2026)
79
+ "appi-jp", // Japan Act on Protection of Personal Information (added 2026)
80
+ "pdpa-sg", // Singapore Personal Data Protection Act (added 2026)
81
+ // ---- Canada / UK ----
82
+ "pipeda-ca", // Canada Personal Information Protection and Electronic Documents Act (added 2026)
83
+ "uk-gdpr", // UK General Data Protection Regulation (added 2026)
84
+ // ---- Sectoral expansions (added 2026 — v0.8.24) ----
85
+ "fapi-2.0", // Financial-grade API 2.0 Final (composes PAR + DPoP + OAuth 2.1 + mTLS)
86
+ "fapi-2.0-message-signing", // FAPI 2.0 Message Signing profile — adds JARM mandate + signed-request-object enforcement
87
+ "cfpb-1033", // CFPB §1033 / FDX consumer-financial-data sharing (deadline past for $250B+ banks 2026-04-01)
88
+ "iab-tcf-v2.3", // IAB Transparency & Consent Framework v2.3 with disclosedVendors (deadline past 2026-02-28)
89
+ "iab-mspa", // IAB Multi-State Privacy Agreement / Global Privacy Platform universal opt-out
90
+ "tcpa-10dlc", // TCPA 10DLC carrier-shaped consent + FCC 1:1 disclosure
91
+ "fda-21cfr11", // FDA 21 CFR Part 11 — audit-trail + electronic signatures (general-purpose subset)
92
+ "fda-annex-11", // EU GMP Annex 11 — computerized systems (Part-11 equivalent)
93
+ "sec-1.05", // SEC Cybersecurity Disclosure Item 1.05 — material-incident 8-K filing // allow:raw-byte-literal — regulatory identifier, not bytes
94
+ // ---- US state student-data privacy (F5.1 posture group) ----
95
+ "ny-2-d", // NY Education Law §2-d
96
+ "il-soppa", // Illinois Student Online Personal Protection Act
97
+ "ca-sopipa", // California Student Online Personal Information Protection Act
98
+ "ct-pa-5-2", // Connecticut Public Act 5-2
99
+ "tx-hb-4504", // Texas HB 4504 // allow:raw-byte-literal — statute identifier, not bytes
100
+ "va-sb-1376", // Virginia SB 1376 // allow:raw-byte-literal — statute identifier, not bytes
101
+ // ---- EU government / cloud-region ----
102
+ "staterramp", // StateRAMP / TX-RAMP / AZ-RAMP / GovRAMP family (FedRAMP-Moderate cross-walks)
103
+ "irap", // Australia IRAP / Essential Eight / ISM
104
+ "bsi-c5", // Germany BSI C5
105
+ "ens-es", // Spain Esquema Nacional de Seguridad
106
+ "uk-g-cloud", // UK G-Cloud
107
+ // ---- v0.8.70 expansion — 2026 effective deadlines ----
108
+ "modpa", // Maryland Online Data Privacy Act (effective 2025-10-01) — strict data-min
109
+ "nydfs-500", // NYDFS 23 NYCRR 500 Amendment 2 — financial cybersecurity (multi-factor + asset inventory + governance)
110
+ "hipaa-2026", // HHS HIPAA Security Rule 2026-Q4 final — extends hipaa with mandatory MFA + asset inventory + 72h restoration testing
111
+ "quebec-25", // Quebec Law 25 final phase (effective 2026-09-22) — DPIA + automated-decision opt-out
112
+ // ---- v0.8.77 expansion — US state consumer-privacy postures ----
113
+ // Each posture carries per-state cure-period, profiling opt-out
114
+ // and minor-consent metadata via b.dsr.stateRules(state). The
115
+ // generic DSR primitive (b.dsr.submit) covers ~80% of the surface;
116
+ // these postures fill in the per-state drift.
117
+ "vcdpa", // Virginia Consumer Data Protection Act
118
+ "co-cpa", // Colorado Privacy Act
119
+ "ctdpa", // Connecticut Data Privacy Act
120
+ "ucpa", // Utah Consumer Privacy Act
121
+ "tdpsa", // Texas Data Privacy and Security Act
122
+ "or-cpa", // Oregon Consumer Privacy Act
123
+ "mt-cdpa", // Montana Consumer Data Privacy Act
124
+ "ia-icdpa", // Iowa Consumer Data Protection Act
125
+ "in-indpa", // Indiana Consumer Data Protection Act
126
+ "de-dpdpa", // Delaware Personal Data Privacy Act
127
+ "nh-nhpa", // New Hampshire SB 255 Consumer Privacy Act
128
+ "nj-njdpa", // New Jersey Data Privacy Act
129
+ "ky-kcdpa", // Kentucky Consumer Data Protection Act
130
+ "tn-tipa", // Tennessee Information Protection Act
131
+ "mn-mncdpa", // Minnesota Consumer Data Privacy Act
132
+ "ri-ricpa", // Rhode Island Consumer Privacy Act
133
+ "ne-dpa", // Nebraska Data Privacy Act
134
+ "nv-sb370", // Nevada SB 370 Consumer Health Data Privacy
135
+ "ca-aadc", // California Age-Appropriate Design Code (partial preliminary injunction; track for re-enforcement)
136
+ "ct-sb3", // Connecticut SB 3 Consumer Health Data
137
+ "tx-cubi", // Texas Capture or Use of Biometric Identifier
138
+ "fl-fdbr", // Florida Digital Bill of Rights (SB 262, effective 2024-07-01) — narrow scope ($1B+ revenue threshold)
139
+ // ---- v0.8.81 expansion — AI-governance postures ----
140
+ // State + sectoral AI regulations crystallizing through 2026. Each
141
+ // posture is a flag that operators pin alongside their base
142
+ // privacy/sectoral posture; the floors enforce audit-chain signing
143
+ // and posture-cascade visibility so AI-decision audit trails meet
144
+ // regulator expectations even when the base posture is unregulated.
145
+ "co-ai", // Colorado AI Act SB24-205 (postponed to 2026-06-30; stay pending)
146
+ "il-hb3773", // Illinois HB 3773 — IHRA AI amendment (effective 2026-01-01)
147
+ "tx-traiga", // Texas Responsible AI Governance Act HB 149 (effective 2026-01-01)
148
+ "ut-aipa", // Utah AI Disclosure Act (UAIPA + 2025 amendments; sunset 2027-07-01)
149
+ "nyc-ll144", // NYC Local Law 144 — Automated Employment Decision Tools (in force) // allow:raw-byte-literal — regulatory identifier, not bytes
150
+ "ca-tfaia", // California SB 53 — Transparency in Frontier AI Act (effective 2026-01-01)
151
+ "kr-ai-basic", // South Korea AI Basic Act (effective 2026-01-22)
152
+ "cn-ai-label", // China Measures for Labelling of AI-Generated Content (effective 2025-09-01)
153
+ // ---- v0.8.81 expansion — AI management cross-walks ----
154
+ "iso-42001", // ISO/IEC 42001:2023 — AI Management System
155
+ "iso-23894", // ISO/IEC 23894:2023 — AI Risk Management Guidance
156
+ // ---- v0.8.81 expansion — content-credentials posture flags ----
157
+ "ca-sb942", // California SB-942 (Cal. Bus. & Prof. Code §22757) gen-AI disclosure (effective 2026-08-02) // allow:raw-byte-literal — regulatory identifier + date, not bytes
158
+ "ca-ab853", // California AB-853 platform-side gen-AI detection (effective 2026-08-02) // allow:raw-byte-literal — regulatory identifier + date, not bytes
159
+ // ---- v0.8.81 expansion — substrate-to-posture cleanup ----
160
+ "eaa", // EU Accessibility Act / Directive (EU) 2019/882 (effective 2025-06-28)
161
+ "wcag-2-2", // W3C Web Content Accessibility Guidelines 2.2 (Oct 2023 Recommendation)
162
+ "eu-data-act", // EU Data Act / Regulation (EU) 2023/2854 (effective 2025-09-12)
163
+ "hitech", // Health Information Technology for Economic and Clinical Health Act (2009)
164
+ "ferpa", // Family Educational Rights and Privacy Act (20 U.S.C. §1232g)
165
+ "dpdp", // India Digital Personal Data Protection Act 2023 (rules-pending; cascade tier exists)
166
+ // ---- v0.8.82 expansion — privacy 2026 sweep ----
167
+ // US federal child / financial privacy
168
+ "coppa", // Children's Online Privacy Protection Act (15 U.S.C. §6501)
169
+ "coppa-2025", // COPPA 2025 Amendment (FTC final 2025-04-22; effective 2026-06-23 — biometric expansion + knowing-collection disclosure)
170
+ "glba-safeguards", // GLBA Safeguards Rule 2024 Amendment (16 CFR Part 314 — effective 2024-05-13) // allow:raw-byte-literal — CFR title number, not bytes
171
+ // UK
172
+ "uk-duaa", // UK Data (Use and Access) Act 2025 (Royal Assent 2025-06-19; replaces DPDI Bill)
173
+ // Latin America
174
+ "cl-pdpa", // Chile Ley 21.719 (enacted 2024-12-13; effective 2026-12-01)
175
+ "mx-lfpdppp", // Mexico LFPDPPP + 2025 secondary reform
176
+ "ar-pdpa", // Argentina PDPA (Ley 25.326 + 2024 modernization bill)
177
+ // APAC
178
+ "pipa-kr", // South Korea Personal Information Protection Act (2023 major amendment)
179
+ "au-privacy", // Australia Privacy Act + 2024 Amendment Act (first tranche 2024-12-10; statutory tort 2025-06-10)
180
+ "th-pdpa", // Thailand PDPA (effective 2022-06-01)
181
+ "vn-pdp", // Vietnam PDP Decree 13/2023 + 2025 PDP Law (effective 2026-01-01)
182
+ "id-pdp", // Indonesia Personal Data Protection Law (effective 2024-10-17)
183
+ "my-pdpa", // Malaysia PDPA + 2024 amendments (effective 2025-04-30)
184
+ // US state child privacy / age-appropriate design codes
185
+ "ny-safe-kids", // NY Child Data Protection Act / SAFE for Kids Act (effective 2025-06-20)
186
+ "ny-saffe", // NY Stop Addictive Feeds Exploitation for Kids Act (effective 2025-06-20)
187
+ "md-kids-code", // Maryland Age-Appropriate Design Code (enacted 2024)
188
+ "vt-aadc", // Vermont Age-Appropriate Design Code (enacted 2024)
189
+ // US cross-cutting privacy / sectoral
190
+ "gina", // Genetic Information Nondiscrimination Act (effective 2009-11-21)
191
+ "vppa", // Video Privacy Protection Act (1988; class-action pixel-tracking surface)
192
+ "can-spam", // CAN-SPAM Act (effective 2004-01-01)
193
+ "il-gipa", // Illinois Genetic Information Privacy Act (post-2024 amendment private right of action)
194
+ "hhs-repro-24", // HHS Reproductive Health HIPAA Amendment (effective 2024-12-23)
195
+ // NIST cross-walks
196
+ "nist-pf-1.1", // NIST Privacy Framework 1.1 (final 2025-04-14)
197
+ // EU non-personal-data + adjacent
198
+ "dsa", // EU Digital Services Act (Regulation 2022/2065; fully applicable 2024-02-17)
199
+ "dga", // EU Data Governance Act (Regulation 2022/868; applicable 2023-09-24) // allow:raw-byte-literal — calendar day, not bytes
200
+ "eu-cer", // EU Critical Entities Resilience Directive (2022/2557; transposition 2024-10-17)
201
+ "eu-cyber-sol", // EU Cyber Solidarity Act (Regulation 2025/38; effective 2025-02-04)
202
+ "eidas-2", // eIDAS 2 / EUDI Wallet (Regulation 2024/1183; rollout 2026-2027)
203
+ // ---- v0.8.86 expansion — sectoral + cybersecurity directives ----
204
+ "cmmc-2.0", // US DoD Cybersecurity Maturity Model Certification 2.0 (effective 2025-Q1)
205
+ "cjis-v6", // FBI Criminal Justice Information Services Security Policy v6.0 (Dec 2024)
206
+ "iso-27001-2022", // ISO/IEC 27001:2022 — Information Security Management System
207
+ "iso-27002-2022", // ISO/IEC 27002:2022 — Code of practice for information security controls
208
+ "iso-27017", // ISO/IEC 27017 — Cloud-services security controls
209
+ "iso-27018", // ISO/IEC 27018 — PII protection in public-cloud processors
210
+ "iso-27701", // ISO/IEC 27701 — Privacy Information Management System
211
+ "nist-800-66-r2", // NIST SP 800-66 Rev 2 — HIPAA Security Rule implementation guidance // allow:raw-byte-literal — NIST publication number, not bytes
212
+ "ehds", // EU European Health Data Space (Regulation 2025/327; phased 2027-2029)
213
+ "circia", // US Cyber Incident Reporting for Critical Infrastructure Act (final rule pending)
214
+ // ---- v0.9.6 expansion — exceptd framework-control-gap closure ----
215
+ // Postures added to recognise every framework cited in the
216
+ // exceptd 2026-05-11 framework-control-gaps catalog. Each posture
217
+ // either (a) maps to a framework the operator must audit against,
218
+ // or (b) recognises a security testing methodology / SBOM /
219
+ // supply-chain attestation standard. Operators pin the posture
220
+ // and the framework's cascade defaults + audit emissions match
221
+ // the named regime's evidence expectations.
222
+ "nist-800-53", // NIST SP 800-53 Rev 5 — full Moderate / High baseline
223
+ "nist-ai-rmf-1.0", // NIST AI Risk Management Framework 1.0
224
+ "iso-42001-2023", // ISO/IEC 42001:2023 — AI management system (alias for v0.8.81 iso-42001 entry, kept for posture-vocabulary stability) // allow:raw-byte-literal — standard publication year, not bytes
225
+ "iso-23894-2023", // ISO/IEC 23894:2023 — AI risk management guidance (alias)
226
+ "owasp-llm-top-10-2025", // OWASP Top 10 for LLM Applications 2025
227
+ "owasp-asvs-v5.0", // OWASP Application Security Verification Standard v5.0
228
+ "nist-800-218-ssdf", // NIST SP 800-218 Secure Software Development Framework v1.1 // allow:raw-byte-literal — NIST pub number, not bytes
229
+ "nist-800-82-r3", // NIST SP 800-82 Rev 3 — OT security guide // allow:raw-byte-literal — NIST pub number, not bytes
230
+ "nist-800-63b-rev4", // NIST SP 800-63B Rev 4 — Digital Identity (AAL/IAL/FAL)
231
+ "iec-62443-3-3", // IEC 62443-3-3 — IACS system security
232
+ "fedramp-rev5-moderate", // FedRAMP Rev 5 Moderate baseline
233
+ "hipaa-security-rule", // HIPAA Security Rule 45 CFR §164.312 (technical safeguards) // allow:raw-byte-literal — CFR section, not bytes
234
+ "hitrust-csf-v11.4", // HITRUST CSF v11.4
235
+ "nerc-cip-007-6", // NERC CIP-007-6 — BES Cyber System Security Management
236
+ "psd2-rts-sca", // EU PSD2 RTS on Strong Customer Authentication (Commission Delegated Regulation 2018/389)
237
+ "swift-cscf-v2026", // SWIFT Customer Security Controls Framework v2026
238
+ "slsa-v1.0-build-l3", // SLSA v1.0 Build Track Level 3
239
+ "vex-csaf-2.1", // VEX via OASIS CSAF 2.1 — b.vex primitive ships this
240
+ "cyclonedx-v1.6", // CycloneDX v1.6 SBOM — framework ships sbom.cdx.json
241
+ "spdx-v3.0", // SPDX v3.0 SBOM — framework ships sbom.spdx.json (v0.9.6+)
242
+ "owasp-wstg-v5", // OWASP Web Security Testing Guide v5
243
+ "ptes", // Penetration Testing Execution Standard
244
+ "nist-800-115", // NIST SP 800-115 Technical Guide to Information Security Testing // allow:raw-byte-literal — NIST pub number, not bytes
245
+ "cwe-top-25-2024", // CWE Top 25 Most Dangerous Software Weaknesses (2024)
246
+ "cis-controls-v8", // CIS Controls v8
247
+ "cmmc-2.0-level-2", // CMMC 2.0 Level 2 (Advanced) — 110 NIST 800-171 Rev 2 controls // allow:raw-byte-literal — NIST pub number / level, not bytes
248
+ // ---- v0.9.57 — granular CMMC level distinction ----
249
+ // CMMC 2.0 maturity levels carry distinct control-mapping
250
+ // expectations: Level 1 = 15 controls (FAR 52.204-21), Level 2 =
251
+ // 110 controls (NIST 800-171 Rev 2), Level 3 = additional NIST
252
+ // 800-172 enhanced controls. The umbrella "cmmc-2.0" posture
253
+ // remains for back-compat with existing operators; the explicit
254
+ // L1/L2/L3 postures are the recommended pin for new deployments.
255
+ "cmmc-2.0-level-1", // CMMC 2.0 Level 1 (Foundational) — 15 FAR controls; FCI-only data // allow:raw-byte-literal — regulatory identifier, not bytes
256
+ "cmmc-2.0-level-3", // CMMC 2.0 Level 3 (Expert) — NIST 800-172 enhanced controls atop L2 // allow:raw-byte-literal — regulatory identifier, not bytes
257
+ // ---- v0.12.1 — promote POSTURE_DEFAULTS-only entries into the
258
+ // canonical KNOWN_POSTURES surface so operators can actually
259
+ // `b.compliance.set(...)` them. Each entry had cascade
260
+ // configuration wired but couldn't be pinned because set()'s
261
+ // KNOWN_POSTURES check refused unknown strings.
262
+ "42-cfr-part-2", // 42 CFR Part 2 — Confidentiality of Substance Use Disorder Patient Records (HHS final rule 2024-02-08) // allow:raw-byte-literal — CFR section identifier, not bytes
263
+ "hti-1", // ONC HTI-1 — Health IT certification + algorithm transparency (45 CFR Part 170; effective 2024-12-31)
264
+ "uscdi-v4", // USCDI v4 — US Core Data for Interoperability v4 (ONC; 2024-01) // allow:raw-byte-literal — version identifier, not bytes
265
+ "irs-1075", // IRS Publication 1075 — Tax Information Security Guidelines (Rev. 11-2023) // allow:raw-byte-literal — publication number, not bytes
266
+ "nist-800-172-r3", // NIST SP 800-172 Rev 3 — Enhanced Security Requirements for CUI // allow:raw-byte-literal — publication number, not bytes
267
+ "tlp-2.0", // FIRST Traffic Light Protocol 2.0 — information-sharing classifications (TLP:CLEAR / GREEN / AMBER / AMBER+STRICT / RED)
268
+ "soci-au", // Australia Security of Critical Infrastructure Act (SOCI 2018) + 2022 amendments
269
+ "ffiec-cat-2", // FFIEC Cybersecurity Assessment Tool 2.0 (federal financial institution exam) // allow:raw-byte-literal — tool version, not bytes
270
+ "cri-profile-v2.0", // Cyber Risk Institute Profile v2.0 — financial-services framework mapping (NIST CSF cross-walk) // allow:raw-byte-literal — version identifier, not bytes
271
+ "m-22-09", // OMB M-22-09 — Federal Zero Trust Architecture Strategy
272
+ "m-22-18", // OMB M-22-18 — Enhancing Software Supply Chain Security (SSDF attestation)
273
+ "nist-800-53-r5-privacy", // NIST SP 800-53 Rev 5 — Privacy Control Family overlay // allow:raw-byte-literal — publication number, not bytes
274
+ "nist-ai-600-1-genai", // NIST AI 600-1 — Generative AI Profile (companion to AI RMF 1.0) // allow:raw-byte-literal — publication number, not bytes
275
+ "nist-csf-2.0", // NIST Cybersecurity Framework 2.0 (Feb 2024) // allow:raw-byte-literal — framework version, not bytes
276
+ "sb-53", // California SB-53 — Transparency in Frontier AI Act (effective 2025-09-29) // allow:raw-byte-literal — statute identifier, not bytes
277
+ "nyc-ll144-2024", // NYC Local Law 144 — Automated Employment Decision Tool bias audits (2024 enforcement update) // allow:raw-byte-literal — statute identifier, not bytes
278
+ ]);
279
+
280
+ // SUPPLY-34 — Artifact standards (SBOM / VEX format families) are NOT
281
+ // regulatory regimes. Pinning a posture like `cyclonedx-v1.6` to
282
+ // cascade audit + TLS floors conflates the act of EMITTING a SBOM
283
+ // format with the regulatory floor an operator needs. Operators who
284
+ // emit CycloneDX SBOMs do so because of an underlying regime
285
+ // (FedRAMP SBOM requirement, SSDF PW.4, etc.) — not because emitting
286
+ // the format itself defines the floor.
287
+ //
288
+ // b.compliance.artifactStandards exposes the format catalog as a
289
+ // READ-ONLY channel — operators pick a format (or set of formats)
290
+ // for SBOM / VEX emission without affecting the regulatory posture
291
+ // cascade. The names remain in KNOWN_POSTURES for back-compat
292
+ // (existing operators may have pinned them); pinning them via
293
+ // b.compliance.set emits a `compliance.posture.format_as_regime`
294
+ // audit warning so the misconfiguration is grep-able in the audit
295
+ // chain.
296
+ var ARTIFACT_STANDARDS = Object.freeze([
297
+ "cyclonedx-v1.6", // CycloneDX 1.6 SBOM
298
+ "spdx-v3.0", // SPDX 3.0 SBOM
299
+ "vex-csaf-2.1", // VEX via OASIS CSAF 2.1
300
+ ]);
301
+
302
+ var STATE = { posture: null, setAt: null, fipsMode: false };
303
+
304
+ function _emitAudit(action, metadata, outcome) {
305
+ try {
306
+ audit().safeEmit({
307
+ action: action,
308
+ outcome: outcome || "success",
309
+ metadata: metadata,
310
+ });
311
+ } catch (_e) { /* audit best-effort */ }
312
+ }
313
+
314
+ /**
315
+ * @primitive b.compliance.set
316
+ * @signature b.compliance.set(posture)
317
+ * @since 0.7.27
318
+ * @status stable
319
+ * @related b.compliance.current, b.compliance.assert, b.compliance.clear, b.compliance.postureDefault
320
+ *
321
+ * Pin the deployment's compliance posture and cascade the matching
322
+ * defaults into every primitive that owns posture-conditioned state
323
+ * (`b.retention`, `b.audit`, `b.db`, `b.cryptoField`). Throws
324
+ * `compliance/unknown-posture` for names outside `KNOWN_POSTURES`,
325
+ * `compliance/already-set` if a different posture is already pinned
326
+ * (runtime switches are forbidden — they create half-set state across
327
+ * already-initialized primitives). Idempotent for the same posture:
328
+ * calling `set("hipaa")` a second time after `set("hipaa")` is a
329
+ * no-op, no audit row, no cascade.
330
+ *
331
+ * Operators wiring multiple regimes pick the strictest single posture
332
+ * here and read per-regime knobs via `postureDefault(posture, key)`
333
+ * for tenant-level overrides — see the @intro union-of-bars note.
334
+ *
335
+ * Emits `compliance.posture.set` (success), `compliance.posture.set_rejected`
336
+ * (unknown/already-set), `compliance.posture.cascade.applied`/`.skipped`
337
+ * per primitive, `compliance.posture.tz_warning` when `process.env.TZ`
338
+ * is set to a non-UTC value under a regulated posture (HIPAA / PCI-DSS /
339
+ * SOX / GDPR / SOC2 / FDA 21 CFR 11).
340
+ *
341
+ * @example
342
+ * b.compliance.set("hipaa");
343
+ * b.compliance.current(); // → "hipaa"
344
+ *
345
+ * // Calling again with the same posture is idempotent:
346
+ * b.compliance.set("hipaa"); // no-op, no audit row
347
+ *
348
+ * // Switching to a different posture throws:
349
+ * try {
350
+ * b.compliance.set("pci-dss");
351
+ * } catch (e) {
352
+ * e.code; // → "compliance/already-set"
353
+ * }
354
+ */
355
+ function set(posture) {
356
+ if (typeof posture !== "string" || posture.length === 0) {
357
+ throw new ComplianceError("compliance/bad-posture",
358
+ "compliance.set: posture must be a non-empty string, got " +
359
+ JSON.stringify(posture));
360
+ }
361
+ if (KNOWN_POSTURES.indexOf(posture) === -1) {
362
+ _emitAudit("compliance.posture.set_rejected",
363
+ { reason: "unknown-posture", posture: posture }, "denied");
364
+ throw new ComplianceError("compliance/unknown-posture",
365
+ "compliance.set: unknown posture '" + posture + "'; expected one of " +
366
+ KNOWN_POSTURES.join(", "));
367
+ }
368
+ if (STATE.posture && STATE.posture !== posture) {
369
+ // Audit the rejection so an attacker (or operator misconfig) trying
370
+ // to downgrade an already-set posture produces a chain row
371
+ // operators can alert on.
372
+ _emitAudit("compliance.posture.set_rejected",
373
+ { reason: "already-set", current: STATE.posture, attempted: posture },
374
+ "denied");
375
+ throw new ComplianceError("compliance/already-set",
376
+ "compliance.set: posture is already '" + STATE.posture + "' (set at " +
377
+ new Date(STATE.setAt).toISOString() + "). Runtime switches are " +
378
+ "forbidden — they create half-set state across already-initialized " +
379
+ "primitives. Set once at boot.");
380
+ }
381
+ STATE.posture = posture;
382
+ STATE.setAt = Date.now();
383
+ _emitAudit("compliance.posture.set", { posture: posture });
384
+
385
+ // SUPPLY-34 — emit a `format_as_regime` audit warning when an
386
+ // operator pins an artifact-standard format (cyclonedx-v1.6 /
387
+ // spdx-v3.0 / vex-csaf-2.1) as the regulatory posture. These names
388
+ // remain in KNOWN_POSTURES for back-compat but pinning them as the
389
+ // primary regime conflates "I emit this SBOM/VEX format" with "my
390
+ // regulatory floor is X". Operators should pin the regulatory
391
+ // regime (FedRAMP / SSDF / HIPAA / etc.) and surface artifact
392
+ // standards via b.compliance.artifactStandards.
393
+ if (ARTIFACT_STANDARDS.indexOf(posture) !== -1) {
394
+ _emitAudit("compliance.posture.format_as_regime",
395
+ { posture: posture, artifactStandards: ARTIFACT_STANDARDS,
396
+ recommendation: "Artifact standards describe what SBOM/VEX format the deployment emits — not the regulatory floor. Pin the underlying regime (e.g. 'nist-800-218-ssdf', 'fedramp-rev5-moderate') and surface emitted formats via b.compliance.artifactStandards()." },
397
+ "warning");
398
+ }
399
+
400
+ // SUPPLY-21 — emit `fips_conflict` audit warning when posture is
401
+ // FedRAMP / CMMC L3 AND the framework's PQC-first crypto defaults
402
+ // are active without an explicit fipsMode opt-in. Operators see
403
+ // this in the audit chain and either (a) document the deviation
404
+ // in their SSP or (b) set b.compliance.fipsMode(true) before set()
405
+ // to switch the audit-signing path to FIPS-validated AES-GCM +
406
+ // SHA-384.
407
+ var FIPS_BOUNDARY_POSTURES = ["fedramp-rev5-moderate", "cmmc-2.0-level-3"];
408
+ if (FIPS_BOUNDARY_POSTURES.indexOf(posture) !== -1 && !STATE.fipsMode) {
409
+ _emitAudit("compliance.posture.fips_conflict",
410
+ { posture: posture,
411
+ cryptoDefaults: "PQC-first (ML-KEM-1024 / SLH-DSA-SHAKE-256f / XChaCha20-Poly1305 / SHA3-512)",
412
+ fipsMode: false,
413
+ recommendation: "Call b.compliance.fipsMode(true) BEFORE b.compliance.set() to switch b.audit.sign to FIPS-140-3 validated AES-GCM + SHA-384, or document the PQC-first deviation in the SSP." },
414
+ "warning");
415
+ }
416
+
417
+ // F-POSTURE-1 — cascade the posture into every primitive that owns a
418
+ // posture-conditioned default. Each primitive exposes an
419
+ // `applyPosture(name)` that merges the POSTURE_DEFAULTS entry for the
420
+ // posture into its own state and emits
421
+ // `compliance.posture.cascade.applied` with { primitive, posture }
422
+ // metadata. Cascade is ATOMIC at the chain-emission level — every
423
+ // primitive emits success/skipped, and a single primitive's failure
424
+ // (DB not initialized, retention not wired) emits skipped without
425
+ // failing the cascade. Operators wire DB/retention before set();
426
+ // skipped rows surface in the audit chain so a forensic review can
427
+ // reconstruct the boot order.
428
+ _applyPostureCascade(posture);
429
+ // F-AUD-5 — TZ awareness. Auditors expect timestamps in UTC.
430
+ // process.env.TZ controls Node's local-time conversion for any
431
+ // operator code that uses non-UTC formatters; under regulated
432
+ // postures (hipaa / pci-dss / sox / gdpr / soc2) emit a boot
433
+ // warning if it's set to a non-UTC value or unset (which means
434
+ // host-default which on most cloud images IS UTC but isn't
435
+ // guaranteed). Pure signal — no behavior change.
436
+ var REGULATED = ["hipaa", "pci-dss", "sox", "gdpr", "soc2", "fda-21cfr11"];
437
+ if (REGULATED.indexOf(posture) !== -1) {
438
+ var tz = process.env.TZ; // allow:raw-process-env — bootstrap signal, no operator-supplied default needed
439
+ if (typeof tz === "string" && tz !== "UTC" && tz !== "Etc/UTC") {
440
+ _emitAudit("compliance.posture.tz_warning",
441
+ { posture: posture, tz: tz, recommendation: "Set TZ=UTC under regulated postures so audit timestamps align with regulator expectations." },
442
+ "warning");
443
+ }
444
+ }
445
+ }
446
+
447
+ // _applyPostureCascade — F-POSTURE-1. Walks every primitive that
448
+ // participates in posture-conditioned defaults and asks it to merge
449
+ // the named posture into its state. Each step is best-effort at the
450
+ // audit-emission level (a primitive that isn't loaded yet emits
451
+ // 'skipped'); each step's success/skipped emits its own audit row so
452
+ // operators can confirm the cascade landed without re-reading
453
+ // state.posture per primitive.
454
+ function _applyPostureCascade(posture) {
455
+ var steps = [
456
+ { primitive: "retention", resolver: function () { return retentionMod(); } },
457
+ { primitive: "audit", resolver: function () { return audit(); } },
458
+ { primitive: "db", resolver: function () { return db(); } },
459
+ { primitive: "cryptoField", resolver: function () { return cryptoField(); } },
460
+ ];
461
+ for (var i = 0; i < steps.length; i += 1) {
462
+ var step = steps[i];
463
+ var mod;
464
+ try { mod = step.resolver(); }
465
+ catch (_loadErr) { mod = null; }
466
+ if (!mod || typeof mod.applyPosture !== "function") {
467
+ _emitAudit("compliance.posture.cascade.skipped",
468
+ { primitive: step.primitive, posture: posture, reason: "not-loaded-or-no-applyPosture" });
469
+ continue;
470
+ }
471
+ var result;
472
+ try { result = mod.applyPosture(posture); }
473
+ catch (e) {
474
+ _emitAudit("compliance.posture.cascade.skipped",
475
+ { primitive: step.primitive, posture: posture,
476
+ reason: (e && e.message) ? e.message : String(e) },
477
+ "warning");
478
+ continue;
479
+ }
480
+ _emitAudit("compliance.posture.cascade.applied",
481
+ { primitive: step.primitive, posture: posture, applied: result || null });
482
+ }
483
+ }
484
+
485
+ /**
486
+ * @primitive b.compliance.current
487
+ * @signature b.compliance.current()
488
+ * @since 0.7.27
489
+ * @status stable
490
+ * @related b.compliance.set, b.compliance.assert, b.compliance.describe
491
+ *
492
+ * Read the currently-pinned posture, or `null` if `set()` has not yet
493
+ * run. Cheap; pure read of internal state. Operators rendering an
494
+ * admin-UI banner ("running under HIPAA posture") call this once per
495
+ * page render — no caching needed.
496
+ *
497
+ * @example
498
+ * b.compliance.current(); // → null
499
+ * b.compliance.set("hipaa");
500
+ * b.compliance.current(); // → "hipaa"
501
+ */
502
+ function current() {
503
+ return STATE.posture;
504
+ }
505
+
506
+ /**
507
+ * @primitive b.compliance.assert
508
+ * @signature b.compliance.assert(posture)
509
+ * @since 0.7.27
510
+ * @status stable
511
+ * @related b.compliance.current, b.compliance.set
512
+ *
513
+ * Throw `compliance/assertion-failed` if the currently-pinned posture
514
+ * differs from `posture`. Use at the top of a request handler that is
515
+ * only safe to run under a specific regime — fails closed with a
516
+ * stack trace that names the mismatch instead of silently serving
517
+ * under the wrong posture.
518
+ *
519
+ * @example
520
+ * b.compliance.set("hipaa");
521
+ * b.compliance.assert("hipaa"); // → no throw
522
+ *
523
+ * try {
524
+ * b.compliance.assert("pci-dss");
525
+ * } catch (e) {
526
+ * e.code; // → "compliance/assertion-failed"
527
+ * }
528
+ */
529
+ function assert(posture) {
530
+ if (STATE.posture !== posture) {
531
+ throw new ComplianceError("compliance/assertion-failed",
532
+ "compliance.assert('" + posture + "'): current posture is " +
533
+ JSON.stringify(STATE.posture));
534
+ }
535
+ }
536
+
537
+ /**
538
+ * @primitive b.compliance.clear
539
+ * @signature b.compliance.clear()
540
+ * @since 0.7.27
541
+ * @status stable
542
+ * @related b.compliance.set, b.compliance.current
543
+ *
544
+ * Reset the pinned posture to `null` and emit a
545
+ * `compliance.posture.cleared` audit row carrying the previous
546
+ * posture. Reserved for tests + operator-controlled tear-down — the
547
+ * primitives that were cascaded into do not roll back their merged
548
+ * defaults, so production code that called `set()` should not call
549
+ * `clear()` mid-life.
550
+ *
551
+ * @example
552
+ * b.compliance.set("hipaa");
553
+ * b.compliance.clear();
554
+ * b.compliance.current(); // → null
555
+ */
556
+ function clear() {
557
+ // Reserved for tests + operator-controlled tear-down. Emits an audit
558
+ // row so the chain shows the posture was intentionally cleared.
559
+ if (STATE.posture) {
560
+ _emitAudit("compliance.posture.cleared", { previous: STATE.posture });
561
+ }
562
+ STATE.posture = null;
563
+ STATE.setAt = null;
564
+ }
565
+
566
+ function _resetForTest() {
567
+ STATE.posture = null;
568
+ STATE.setAt = null;
569
+ STATE.fipsMode = false;
570
+ }
571
+
572
+ // Posture → human-readable name + statutory citation + jurisdiction.
573
+ // Operators rendering the deployment posture in admin UI / audit logs
574
+ // reach for REGIME_MAP[posture] instead of hand-rolling a lookup
575
+ // table. The values track the regulatory text and update with the
576
+ // framework rather than going stale in operator code.
577
+ var REGIME_MAP = Object.freeze({
578
+ "hipaa": {
579
+ name: "Health Insurance Portability and Accountability Act",
580
+ citation: "Pub. L. 104-191; 45 CFR Parts 160, 162, 164",
581
+ jurisdiction: "US",
582
+ domain: "health",
583
+ },
584
+ "pci-dss": {
585
+ name: "Payment Card Industry Data Security Standard",
586
+ citation: "PCI Security Standards Council v4.0.1",
587
+ jurisdiction: "international",
588
+ domain: "payment",
589
+ },
590
+ "soc2": {
591
+ name: "System and Organization Controls 2",
592
+ citation: "AICPA Trust Services Criteria",
593
+ jurisdiction: "US",
594
+ domain: "audit-attestation",
595
+ },
596
+ "sox": {
597
+ name: "Sarbanes-Oxley Act",
598
+ citation: "Pub. L. 107-204; 15 U.S.C. §§7201-7266",
599
+ jurisdiction: "US",
600
+ domain: "financial-reporting",
601
+ },
602
+ "wmhmda": {
603
+ name: "Washington My Health My Data Act",
604
+ citation: "RCW 19.373",
605
+ jurisdiction: "US-WA",
606
+ domain: "health",
607
+ },
608
+ "bipa": {
609
+ name: "Illinois Biometric Information Privacy Act",
610
+ citation: "740 ILCS 14",
611
+ jurisdiction: "US-IL",
612
+ domain: "biometrics",
613
+ },
614
+ "ccpa": {
615
+ name: "California Consumer Privacy Act / California Privacy Rights Act",
616
+ citation: "Cal. Civ. Code §§1798.100-1798.199",
617
+ jurisdiction: "US-CA",
618
+ domain: "privacy",
619
+ },
620
+ "gdpr": {
621
+ name: "General Data Protection Regulation",
622
+ citation: "Regulation (EU) 2016/679",
623
+ jurisdiction: "EU",
624
+ domain: "privacy",
625
+ },
626
+ "dora": {
627
+ name: "Digital Operational Resilience Act",
628
+ citation: "Regulation (EU) 2022/2554",
629
+ jurisdiction: "EU",
630
+ domain: "financial-resilience",
631
+ },
632
+ "nis2": {
633
+ name: "Network and Information Security Directive 2",
634
+ citation: "Directive (EU) 2022/2555",
635
+ jurisdiction: "EU",
636
+ domain: "cybersecurity",
637
+ },
638
+ "cra": {
639
+ name: "Cyber Resilience Act",
640
+ citation: "Regulation (EU) 2024/2847",
641
+ jurisdiction: "EU",
642
+ domain: "product-cybersecurity",
643
+ },
644
+ "ai-act": {
645
+ name: "Artificial Intelligence Act",
646
+ citation: "Regulation (EU) 2024/1689",
647
+ jurisdiction: "EU",
648
+ domain: "ai-governance",
649
+ },
650
+ "lgpd-br": {
651
+ name: "Lei Geral de Proteção de Dados",
652
+ citation: "Lei nº 13.709/2018",
653
+ jurisdiction: "BR",
654
+ domain: "privacy",
655
+ },
656
+ "pipl-cn": {
657
+ name: "Personal Information Protection Law",
658
+ citation: "Adopted Aug 20, 2021; effective Nov 1, 2021",
659
+ jurisdiction: "CN",
660
+ domain: "privacy",
661
+ },
662
+ "appi-jp": {
663
+ name: "Act on Protection of Personal Information",
664
+ citation: "Act No. 57 of 2003 (most recent amendment 2022)",
665
+ jurisdiction: "JP",
666
+ domain: "privacy",
667
+ },
668
+ "pdpa-sg": {
669
+ name: "Personal Data Protection Act",
670
+ citation: "Act 26 of 2012",
671
+ jurisdiction: "SG",
672
+ domain: "privacy",
673
+ },
674
+ "pipeda-ca": {
675
+ name: "Personal Information Protection and Electronic Documents Act",
676
+ citation: "S.C. 2000, c. 5",
677
+ jurisdiction: "CA",
678
+ domain: "privacy",
679
+ },
680
+ "uk-gdpr": {
681
+ name: "UK General Data Protection Regulation",
682
+ citation: "Data Protection Act 2018 + retained EU GDPR",
683
+ jurisdiction: "UK",
684
+ domain: "privacy",
685
+ },
686
+ "fapi-2.0-message-signing": {
687
+ name: "FAPI 2.0 Message Signing Profile",
688
+ citation: "OpenID Foundation FAPI 2.0 Message Signing — Final",
689
+ jurisdiction: "INTL",
690
+ domain: "financial",
691
+ },
692
+ "modpa": {
693
+ name: "Maryland Online Data Privacy Act",
694
+ citation: "Md. Code Ann., Com. Law §§14-4601 et seq. (effective 2025-10-01)",
695
+ jurisdiction: "US-MD",
696
+ domain: "privacy",
697
+ },
698
+ "nydfs-500": {
699
+ name: "NYDFS 23 NYCRR 500 Amendment 2",
700
+ citation: "23 NYCRR Part 500 (Second Amendment, effective 2024-11-01 with rolling phase-in)",
701
+ jurisdiction: "US-NY",
702
+ domain: "financial",
703
+ },
704
+ "hipaa-2026": {
705
+ name: "HIPAA Security Rule (2026 Final)",
706
+ citation: "45 CFR Parts 160, 162, 164 — HHS Final Rule (effective 2026-Q4)",
707
+ jurisdiction: "US",
708
+ domain: "health",
709
+ },
710
+ "quebec-25": {
711
+ name: "Loi 25 (Quebec — final phase)",
712
+ citation: "An Act to modernize legislative provisions as regards the protection of personal information (Final phase 2026-09-22)",
713
+ jurisdiction: "CA-QC",
714
+ domain: "privacy",
715
+ },
716
+ // v0.8.77 — US state consumer-privacy postures
717
+ "vcdpa": { name: "Virginia Consumer Data Protection Act", citation: "Va. Code §59.1-575 et seq. (effective 2023-01-01)", jurisdiction: "US-VA", domain: "privacy" },
718
+ "co-cpa": { name: "Colorado Privacy Act", citation: "C.R.S. §6-1-1301 et seq. (effective 2023-07-01)", jurisdiction: "US-CO", domain: "privacy" },
719
+ "ctdpa": { name: "Connecticut Data Privacy Act", citation: "Conn. Gen. Stat. §42-515 et seq. (effective 2023-07-01)", jurisdiction: "US-CT", domain: "privacy" },
720
+ "ucpa": { name: "Utah Consumer Privacy Act", citation: "Utah Code §13-61-101 et seq. (effective 2023-12-31)", jurisdiction: "US-UT", domain: "privacy" },
721
+ "tdpsa": { name: "Texas Data Privacy and Security Act", citation: "Tex. Bus. & Com. Code §541.001 et seq. (effective 2024-07-01)", jurisdiction: "US-TX", domain: "privacy" },
722
+ "or-cpa": { name: "Oregon Consumer Privacy Act", citation: "Or. Rev. Stat. §646A.570 et seq. (effective 2024-07-01)", jurisdiction: "US-OR", domain: "privacy" },
723
+ "mt-cdpa": { name: "Montana Consumer Data Privacy Act", citation: "Mont. Code §30-14-2801 et seq. (effective 2024-10-01)", jurisdiction: "US-MT", domain: "privacy" },
724
+ "ia-icdpa": { name: "Iowa Consumer Data Protection Act", citation: "Iowa Code §715D (effective 2025-01-01)", jurisdiction: "US-IA", domain: "privacy" },
725
+ "in-indpa": { name: "Indiana Consumer Data Protection Act", citation: "Ind. Code §24-15 (effective 2026-01-01)", jurisdiction: "US-IN", domain: "privacy" },
726
+ "de-dpdpa": { name: "Delaware Personal Data Privacy Act", citation: "6 Del. Code Ch. 12D (effective 2026-01-01)", jurisdiction: "US-DE", domain: "privacy" },
727
+ "nh-nhpa": { name: "New Hampshire SB 255 Consumer Privacy Act", citation: "NH RSA Chapter 507-H (effective 2025-01-01)", jurisdiction: "US-NH", domain: "privacy" },
728
+ "nj-njdpa": { name: "New Jersey Data Privacy Act", citation: "N.J. Rev. Stat. §56:8-166.4 et seq. (effective 2025-01-15)", jurisdiction: "US-NJ", domain: "privacy" },
729
+ "ky-kcdpa": { name: "Kentucky Consumer Data Protection Act", citation: "Ky. Rev. Stat. §367.3611 et seq. (effective 2026-01-01)", jurisdiction: "US-KY", domain: "privacy" },
730
+ "tn-tipa": { name: "Tennessee Information Protection Act", citation: "Tenn. Code §47-18-3201 et seq. (effective 2025-07-01)", jurisdiction: "US-TN", domain: "privacy" },
731
+ "mn-mncdpa": { name: "Minnesota Consumer Data Privacy Act", citation: "Minn. Stat. §325O (effective 2025-07-31)", jurisdiction: "US-MN", domain: "privacy" },
732
+ "ri-ricpa": { name: "Rhode Island Consumer Privacy Act", citation: "R.I. Gen. Laws §6-48.1 (effective 2026-01-01)", jurisdiction: "US-RI", domain: "privacy" },
733
+ "ne-dpa": { name: "Nebraska Data Privacy Act", citation: "Neb. Rev. Stat. §87-1101 et seq. (effective 2025-01-01)", jurisdiction: "US-NE", domain: "privacy" },
734
+ "nv-sb370": { name: "Nevada SB 370 Consumer Health Data Privacy", citation: "Nev. Rev. Stat. §603A (consumer-health amendments, effective 2024-03-31)", jurisdiction: "US-NV", domain: "health" },
735
+ "ca-aadc": { name: "California Age-Appropriate Design Code Act", citation: "Cal. Civ. Code §1798.99.28 et seq. (partial preliminary injunction NetChoice v. Bonta)", jurisdiction: "US-CA", domain: "privacy" },
736
+ "ct-sb3": { name: "Connecticut SB 3 Consumer Health Data", citation: "Conn. P.A. 23-56 (effective 2023-07-01)", jurisdiction: "US-CT", domain: "health" },
737
+ "tx-cubi": { name: "Texas Capture or Use of Biometric Identifier", citation: "Tex. Bus. & Com. Code §503.001 (effective 2009-09-01)", jurisdiction: "US-TX", domain: "biometric" },
738
+ "fl-fdbr": { name: "Florida Digital Bill of Rights", citation: "Fla. Stat. §501.701 et seq. SB 262 (effective 2024-07-01)", jurisdiction: "US-FL", domain: "privacy" },
739
+ // ---- v0.8.81 — AI governance ----
740
+ "co-ai": { name: "Colorado AI Act", citation: "C.R.S. §6-1-1701 et seq. SB24-205 (postponed to 2026-06-30; enforcement stayed)", jurisdiction: "US-CO", domain: "ai-governance" },
741
+ "il-hb3773": { name: "Illinois HB 3773 — AI in Employment", citation: "775 ILCS 5 IHRA AI amendment (effective 2026-01-01)", jurisdiction: "US-IL", domain: "ai-governance" },
742
+ "tx-traiga": { name: "Texas Responsible AI Governance Act", citation: "Tex. Bus. & Com. Code Ch. 552 HB 149 (effective 2026-01-01)", jurisdiction: "US-TX", domain: "ai-governance" },
743
+ "ut-aipa": { name: "Utah AI Disclosure Act (UAIPA)", citation: "Utah Code §13-2-12 SB149 + 2025 amendments (sunset 2027-07-01)", jurisdiction: "US-UT", domain: "ai-governance" },
744
+ "nyc-ll144": { name: "NYC Automated Employment Decision Tools Law", citation: "NYC Admin. Code §20-870 et seq. Local Law 144 (in force 2023-07-05)", jurisdiction: "US-NY-NYC", domain: "ai-governance" },
745
+ "ca-tfaia": { name: "California Transparency in Frontier AI Act", citation: "Cal. Bus. & Prof. Code §22757.10 et seq. SB 53 (effective 2026-01-01)", jurisdiction: "US-CA", domain: "ai-governance" },
746
+ "kr-ai-basic": { name: "South Korea AI Basic Act", citation: "Framework Act on Development of AI (effective 2026-01-22)", jurisdiction: "KR", domain: "ai-governance" },
747
+ "cn-ai-label": { name: "China — Measures for Labelling AI-Generated Content", citation: "CAC + MIIT + Ministry of Public Security + NRTA Order (effective 2025-09-01)", jurisdiction: "CN", domain: "ai-governance" },
748
+ // ---- v0.8.81 — AI management cross-walks ----
749
+ "iso-42001": { name: "ISO/IEC 42001 — AI Management System", citation: "ISO/IEC 42001:2023", jurisdiction: "international", domain: "ai-governance" },
750
+ "iso-23894": { name: "ISO/IEC 23894 — AI Risk Management", citation: "ISO/IEC 23894:2023", jurisdiction: "international", domain: "ai-governance" },
751
+ // ---- v0.8.81 — content-credentials posture flags ----
752
+ "ca-sb942": { name: "California Gen-AI Provenance Disclosure", citation: "Cal. Bus. & Prof. Code §22757 SB-942 (effective 2026-08-02)", jurisdiction: "US-CA", domain: "content-credentials" },
753
+ "ca-ab853": { name: "California Platform Gen-AI Detection", citation: "Cal. Bus. & Prof. Code §22757 AB-853 (effective 2026-08-02)", jurisdiction: "US-CA", domain: "content-credentials" },
754
+ // ---- v0.8.81 — substrate-to-posture cleanup ----
755
+ "eaa": { name: "EU Accessibility Act", citation: "Directive (EU) 2019/882 (effective 2025-06-28)", jurisdiction: "EU", domain: "accessibility" },
756
+ "wcag-2-2": { name: "W3C Web Content Accessibility Guidelines 2.2", citation: "W3C Recommendation (Oct 2023)", jurisdiction: "international", domain: "accessibility" },
757
+ "eu-data-act": { name: "EU Data Act", citation: "Regulation (EU) 2023/2854 (effective 2025-09-12)", jurisdiction: "EU", domain: "data-sharing" },
758
+ "hitech": { name: "Health Information Technology for Economic and Clinical Health Act", citation: "Pub. L. 111-5, Title XIII, Subtitle D (2009)", jurisdiction: "US", domain: "health" },
759
+ "ferpa": { name: "Family Educational Rights and Privacy Act", citation: "20 U.S.C. §1232g; 34 CFR Part 99", jurisdiction: "US", domain: "student-records" },
760
+ "dpdp": { name: "Digital Personal Data Protection Act 2023", citation: "Act 22 of 2023 (India; rules pending)", jurisdiction: "IN", domain: "privacy" },
761
+ // ---- v0.8.82 — privacy 2026 sweep ----
762
+ // US federal
763
+ "coppa": { name: "Children's Online Privacy Protection Act", citation: "15 U.S.C. §§6501-6506; 16 CFR Part 312 (effective 2000-04-21)", jurisdiction: "US", domain: "child-privacy" },
764
+ "coppa-2025": { name: "COPPA 2025 Amendment", citation: "FTC final rule (2025-04-22; effective 2026-06-23) — biometric expansion + knowing-collection-13-and-under disclosure", jurisdiction: "US", domain: "child-privacy" },
765
+ "glba-safeguards": { name: "GLBA Safeguards Rule 2024 Amendment", citation: "16 CFR Part 314 (effective 2024-05-13)", jurisdiction: "US", domain: "financial-privacy" },
766
+ "gina": { name: "Genetic Information Nondiscrimination Act", citation: "Pub. L. 110-233; 42 U.S.C. §2000ff et seq. (effective 2009-11-21)", jurisdiction: "US", domain: "genetic-privacy" },
767
+ "vppa": { name: "Video Privacy Protection Act", citation: "18 U.S.C. §2710 (effective 1988-11-05)", jurisdiction: "US", domain: "consumer-privacy" },
768
+ "can-spam": { name: "CAN-SPAM Act", citation: "15 U.S.C. §§7701-7713; 16 CFR Part 316 (effective 2004-01-01)", jurisdiction: "US", domain: "consumer-privacy" },
769
+ "il-gipa": { name: "Illinois Genetic Information Privacy Act", citation: "410 ILCS 513 (private right of action post-2024 amendment)", jurisdiction: "US-IL", domain: "genetic-privacy" },
770
+ "hhs-repro-24": { name: "HHS Reproductive Health HIPAA Amendment 2024", citation: "45 CFR Parts 160, 164 — Final Rule (effective 2024-12-23)", jurisdiction: "US", domain: "health" },
771
+ // NIST cross-walk
772
+ "nist-pf-1.1": { name: "NIST Privacy Framework 1.1", citation: "NIST PF 1.1 (final 2025-04-14)", jurisdiction: "US", domain: "privacy" },
773
+ // UK
774
+ "uk-duaa": { name: "UK Data (Use and Access) Act 2025", citation: "DUAA c. 26 (Royal Assent 2025-06-19; replaces DPDI Bill)", jurisdiction: "UK", domain: "privacy" },
775
+ // Latin America
776
+ "cl-pdpa": { name: "Chile Ley 21.719 Protección de Datos Personales", citation: "Ley 21.719 (enacted 2024-12-13; effective 2026-12-01)", jurisdiction: "CL", domain: "privacy" },
777
+ "mx-lfpdppp": { name: "Mexico LFPDPPP + 2025 reform", citation: "Ley Federal de Protección de Datos Personales en Posesión de los Particulares (2010 + 2025 secondary reform)", jurisdiction: "MX", domain: "privacy" },
778
+ "ar-pdpa": { name: "Argentina Personal Data Protection Act", citation: "Ley 25.326 + 2024 modernization bill (pending)", jurisdiction: "AR", domain: "privacy" },
779
+ // APAC
780
+ "pipa-kr": { name: "South Korea Personal Information Protection Act", citation: "PIPA 2011 + 2023 major amendment (phased 2023-09-15 / 2024-03-15)", jurisdiction: "KR", domain: "privacy" },
781
+ "au-privacy": { name: "Australia Privacy Act + 2024 Amendment Act", citation: "Privacy Act 1988 + Privacy and Other Legislation Amendment Act 2024 (first tranche 2024-12-10; statutory tort 2025-06-10)", jurisdiction: "AU", domain: "privacy" },
782
+ "th-pdpa": { name: "Thailand Personal Data Protection Act", citation: "PDPA B.E. 2562 (2019; full effect 2022-06-01)", jurisdiction: "TH", domain: "privacy" },
783
+ "vn-pdp": { name: "Vietnam Personal Data Protection Law", citation: "Decree 13/2023 + PDP Law (effective 2026-01-01)", jurisdiction: "VN", domain: "privacy" },
784
+ "id-pdp": { name: "Indonesia Personal Data Protection Law", citation: "Law 27 of 2022 (effective 2024-10-17)", jurisdiction: "ID", domain: "privacy" },
785
+ "my-pdpa": { name: "Malaysia Personal Data Protection Act", citation: "PDPA 2010 + 2024 amendments (effective 2025-04-30)", jurisdiction: "MY", domain: "privacy" },
786
+ // US state child privacy
787
+ "ny-safe-kids": { name: "NY Child Data Protection Act / SAFE for Kids Act", citation: "N.Y. Gen. Bus. Law §899-ff et seq. (effective 2025-06-20)", jurisdiction: "US-NY", domain: "child-privacy" },
788
+ "ny-saffe": { name: "NY Stop Addictive Feeds Exploitation for Kids Act", citation: "N.Y. Gen. Bus. Law §1500 et seq. (effective 2025-06-20)", jurisdiction: "US-NY", domain: "child-privacy" },
789
+ "md-kids-code": { name: "Maryland Age-Appropriate Design Code", citation: "Md. Code Ann., Com. Law §14-4901 et seq. (enacted 2024)", jurisdiction: "US-MD", domain: "child-privacy" },
790
+ "vt-aadc": { name: "Vermont Age-Appropriate Design Code", citation: "Vt. Stat. Ann. tit. 9 §2447 et seq. (enacted 2024)", jurisdiction: "US-VT", domain: "child-privacy" },
791
+ // EU non-personal-data + adjacent
792
+ "dsa": { name: "EU Digital Services Act", citation: "Regulation (EU) 2022/2065 (fully applicable 2024-02-17)", jurisdiction: "EU", domain: "platform-governance" },
793
+ "dga": { name: "EU Data Governance Act", citation: "Regulation (EU) 2022/868 (applicable 2023-09-24)", jurisdiction: "EU", domain: "data-sharing" },
794
+ "eu-cer": { name: "EU Critical Entities Resilience Directive", citation: "Directive (EU) 2022/2557 (transposition 2024-10-17)", jurisdiction: "EU", domain: "cybersecurity" },
795
+ "eu-cyber-sol": { name: "EU Cyber Solidarity Act", citation: "Regulation (EU) 2025/38 (effective 2025-02-04)", jurisdiction: "EU", domain: "cybersecurity" },
796
+ "eidas-2": { name: "eIDAS 2 / EUDI Wallet", citation: "Regulation (EU) 2024/1183 (rollout 2026-2027)", jurisdiction: "EU", domain: "identity" },
797
+ // ---- v0.8.86 — sectoral + cybersecurity directives ----
798
+ "cmmc-2.0": { name: "Cybersecurity Maturity Model Certification 2.0", citation: "32 CFR Part 170 (DFARS rule effective 2025-Q1)", jurisdiction: "US", domain: "cybersecurity" },
799
+ "cjis-v6": { name: "FBI CJIS Security Policy v6.0", citation: "CJIS Security Policy v6.0 (effective 2024-12)", jurisdiction: "US", domain: "law-enforcement" },
800
+ "iso-27001-2022": { name: "ISO/IEC 27001:2022 Information Security Management System", citation: "ISO/IEC 27001:2022", jurisdiction: "international", domain: "cybersecurity" },
801
+ "iso-27002-2022": { name: "ISO/IEC 27002:2022 Information Security Controls", citation: "ISO/IEC 27002:2022", jurisdiction: "international", domain: "cybersecurity" },
802
+ "iso-27017": { name: "ISO/IEC 27017 Cloud Services Security Controls", citation: "ISO/IEC 27017:2015", jurisdiction: "international", domain: "cybersecurity" },
803
+ "iso-27018": { name: "ISO/IEC 27018 PII Protection in Public Cloud", citation: "ISO/IEC 27018:2019", jurisdiction: "international", domain: "privacy" },
804
+ "iso-27701": { name: "ISO/IEC 27701 Privacy Information Management System", citation: "ISO/IEC 27701:2019", jurisdiction: "international", domain: "privacy" },
805
+ "nist-800-66-r2": { name: "NIST SP 800-66 Rev 2 — HIPAA Security Rule Guidance", citation: "NIST SP 800-66 Rev 2 (Feb 2024)", jurisdiction: "US", domain: "health" },
806
+ "ehds": { name: "European Health Data Space", citation: "Regulation (EU) 2025/327 (phased 2027-2029)", jurisdiction: "EU", domain: "health" },
807
+ "circia": { name: "Cyber Incident Reporting for Critical Infrastructure Act", citation: "6 U.S.C. §681 et seq. (final rule pending)", jurisdiction: "US", domain: "cybersecurity" },
808
+ // ---- v0.12.1 — REGIME_MAP backfill for KNOWN_POSTURES without
809
+ // describe() coverage. Each entry resolves `b.compliance.describe
810
+ // (posture)` → { name, citation, jurisdiction, domain } so admin
811
+ // UI / generated audit reports rendering "running under <name>
812
+ // (<citation>)" stops getting null.
813
+ // ---- POSTURE_DEFAULTS-orphan postures promoted into KNOWN_POSTURES ----
814
+ "42-cfr-part-2": { name: "Confidentiality of Substance Use Disorder Patient Records", citation: "42 CFR Part 2 (HHS final rule effective 2024-02-08)", jurisdiction: "US", domain: "health" },
815
+ "hti-1": { name: "ONC HTI-1 Final Rule — Health IT Certification + Algorithm Transparency", citation: "45 CFR Part 170 / 89 FR 1192 (effective 2024-12-31)", jurisdiction: "US", domain: "health" },
816
+ "uscdi-v4": { name: "US Core Data for Interoperability v4", citation: "ONC USCDI v4 (Jan 2024)", jurisdiction: "US", domain: "health" },
817
+ "irs-1075": { name: "IRS Publication 1075 — Tax Information Security Guidelines", citation: "IRS Pub 1075 (Rev. 11-2023)", jurisdiction: "US", domain: "tax" },
818
+ "nist-800-172-r3": { name: "NIST SP 800-172 Rev 3 — Enhanced CUI Security Requirements", citation: "NIST SP 800-172 Rev 3", jurisdiction: "US", domain: "cybersecurity" },
819
+ "tlp-2.0": { name: "FIRST Traffic Light Protocol 2.0", citation: "FIRST TLP v2.0 (Aug 2022)", jurisdiction: "international", domain: "information-sharing" },
820
+ "soci-au": { name: "Australia Security of Critical Infrastructure Act", citation: "SOCI 2018 + 2022 amendments", jurisdiction: "AU", domain: "critical-infrastructure" },
821
+ "ffiec-cat-2": { name: "FFIEC Cybersecurity Assessment Tool 2.0", citation: "FFIEC CAT v2.0", jurisdiction: "US", domain: "financial" },
822
+ "cri-profile-v2.0":{ name: "Cyber Risk Institute Profile v2.0", citation: "CRI Profile v2.0 (financial-services NIST CSF cross-walk)", jurisdiction: "US", domain: "financial" },
823
+ "m-22-09": { name: "OMB M-22-09 — Federal Zero Trust Architecture Strategy", citation: "OMB Memorandum M-22-09 (2022-01-26)", jurisdiction: "US", domain: "cybersecurity" },
824
+ "m-22-18": { name: "OMB M-22-18 — Software Supply Chain Security", citation: "OMB Memorandum M-22-18 (2022-09-14)", jurisdiction: "US", domain: "supply-chain" },
825
+ "nist-800-53-r5-privacy": { name: "NIST SP 800-53 Rev 5 — Privacy Control Family", citation: "NIST SP 800-53 Rev 5 (Privacy overlay)", jurisdiction: "US", domain: "privacy" },
826
+ "nist-ai-600-1-genai": { name: "NIST AI 600-1 — Generative AI Profile", citation: "NIST AI 600-1 (Jul 2024) — companion to AI RMF 1.0", jurisdiction: "US", domain: "ai" },
827
+ "nist-csf-2.0": { name: "NIST Cybersecurity Framework 2.0", citation: "NIST CSF 2.0 (Feb 2024)", jurisdiction: "US", domain: "cybersecurity" },
828
+ "sb-53": { name: "California SB-53 — Transparency in Frontier AI Act", citation: "Cal. Health & Safety Code §22757 et seq. (effective 2025-09-29)", jurisdiction: "US-CA", domain: "ai" },
829
+ "nyc-ll144-2024": { name: "NYC Local Law 144 — Automated Employment Decision Tool Bias Audits", citation: "NYC Local Law 144 of 2021 + 2024 DCWP enforcement update", jurisdiction: "US-NY", domain: "ai" },
830
+ // ---- Pre-existing KNOWN_POSTURES that lacked REGIME_MAP records ----
831
+ "sox-404": { name: "Sarbanes-Oxley §404 — Internal Controls over Financial Reporting", citation: "15 U.S.C. §7262", jurisdiction: "US", domain: "financial-reporting" },
832
+ "soc2-cc1.3": { name: "SOC 2 Trust Services Criterion CC1.3 — Segregation of Duties", citation: "AICPA Trust Services Criteria CC1.3", jurisdiction: "US", domain: "audit-attestation" },
833
+ "fapi-2.0": { name: "Financial-grade API 2.0 Final", citation: "OpenID Foundation FAPI 2.0 Final (Feb 2025)", jurisdiction: "international", domain: "financial" },
834
+ "cfpb-1033": { name: "CFPB §1033 — Personal Financial Data Rights", citation: "12 CFR Part 1033 (Final Rule 2024-10-22; tiered effective dates from 2026-04-01)", jurisdiction: "US", domain: "financial" },
835
+ "iab-tcf-v2.3": { name: "IAB Transparency & Consent Framework v2.3", citation: "IAB Europe TCF v2.3 (Sep 2024)", jurisdiction: "EU", domain: "advertising" },
836
+ "iab-mspa": { name: "IAB Multi-State Privacy Agreement", citation: "IAB Tech Lab MSPA + Global Privacy Platform", jurisdiction: "US", domain: "privacy" },
837
+ "tcpa-10dlc": { name: "TCPA 10DLC Messaging Compliance", citation: "47 U.S.C. §227 + CTIA 10DLC + FCC 1:1 disclosure rule", jurisdiction: "US", domain: "telecommunications" },
838
+ "fda-21cfr11": { name: "FDA 21 CFR Part 11 — Electronic Records / Signatures", citation: "21 CFR Part 11", jurisdiction: "US", domain: "life-sciences" },
839
+ "fda-annex-11": { name: "EU GMP Annex 11 — Computerized Systems", citation: "EudraLex Vol. 4 Annex 11", jurisdiction: "EU", domain: "life-sciences" },
840
+ "sec-1.05": { name: "SEC Cybersecurity Risk Management — Item 1.05 Form 8-K", citation: "17 CFR §229.106 + Item 1.05 (effective 2023-12-18)", jurisdiction: "US", domain: "financial-reporting" },
841
+ "ny-2-d": { name: "NY Education Law §2-d — Student Privacy", citation: "N.Y. Educ. Law §2-d", jurisdiction: "US-NY", domain: "education" },
842
+ "il-soppa": { name: "Illinois Student Online Personal Protection Act", citation: "105 ILCS 85", jurisdiction: "US-IL", domain: "education" },
843
+ "ca-sopipa": { name: "California Student Online Personal Information Protection Act", citation: "Cal. Bus. & Prof. Code §22584", jurisdiction: "US-CA", domain: "education" },
844
+ "ct-pa-5-2": { name: "Connecticut Public Act 5-2 — Student Data Privacy", citation: "Conn. Public Act No. 16-189", jurisdiction: "US-CT", domain: "education" },
845
+ "tx-hb-4504": { name: "Texas HB 4504 — Student Data Privacy", citation: "Tex. Educ. Code §32.151", jurisdiction: "US-TX", domain: "education" },
846
+ "va-sb-1376": { name: "Virginia SB 1376 — Student Data Privacy", citation: "Va. Code §22.1-289.01", jurisdiction: "US-VA", domain: "education" },
847
+ "staterramp": { name: "StateRAMP / TX-RAMP / AZ-RAMP / GovRAMP Family", citation: "StateRAMP Program (FedRAMP-Moderate cross-walk)", jurisdiction: "US", domain: "cybersecurity" },
848
+ "irap": { name: "Australia Information Security Registered Assessors Program / Essential Eight / ISM", citation: "ASD IRAP + ISM", jurisdiction: "AU", domain: "cybersecurity" },
849
+ "bsi-c5": { name: "Germany BSI C5 — Cloud Computing Compliance Catalogue", citation: "BSI Cloud Computing Compliance Criteria Catalogue (C5:2020)", jurisdiction: "DE", domain: "cybersecurity" },
850
+ "ens-es": { name: "Spain Esquema Nacional de Seguridad", citation: "Real Decreto 311/2022", jurisdiction: "ES", domain: "cybersecurity" },
851
+ "uk-g-cloud": { name: "UK G-Cloud Framework", citation: "UK Crown Commercial Service G-Cloud 14", jurisdiction: "UK", domain: "cybersecurity" },
852
+ // ---- v0.9.6 expansion REGIME_MAP backfill (cybersecurity / AI / supply-chain frameworks) ----
853
+ "nist-800-53": { name: "NIST SP 800-53 Rev 5 — Security & Privacy Controls", citation: "NIST SP 800-53 Rev 5", jurisdiction: "US", domain: "cybersecurity" },
854
+ "nist-ai-rmf-1.0": { name: "NIST AI Risk Management Framework 1.0", citation: "NIST AI 100-1 (Jan 2023)", jurisdiction: "US", domain: "ai" },
855
+ "iso-42001-2023": { name: "ISO/IEC 42001:2023 — AI Management System", citation: "ISO/IEC 42001:2023", jurisdiction: "international", domain: "ai" },
856
+ "iso-23894-2023": { name: "ISO/IEC 23894:2023 — AI Risk Management", citation: "ISO/IEC 23894:2023", jurisdiction: "international", domain: "ai" },
857
+ "owasp-llm-top-10-2025": { name: "OWASP Top 10 for LLM Applications 2025", citation: "OWASP LLM Top 10 v2025", jurisdiction: "international", domain: "ai" },
858
+ "owasp-asvs-v5.0": { name: "OWASP Application Security Verification Standard v5.0", citation: "OWASP ASVS v5.0", jurisdiction: "international", domain: "cybersecurity" },
859
+ "nist-800-218-ssdf": { name: "NIST SP 800-218 — Secure Software Development Framework", citation: "NIST SP 800-218 v1.1", jurisdiction: "US", domain: "supply-chain" },
860
+ "nist-800-82-r3": { name: "NIST SP 800-82 Rev 3 — OT Security Guide", citation: "NIST SP 800-82 Rev 3", jurisdiction: "US", domain: "operational-technology" },
861
+ "nist-800-63b-rev4": { name: "NIST SP 800-63B Rev 4 — Digital Identity Authentication", citation: "NIST SP 800-63B Rev 4", jurisdiction: "US", domain: "identity" },
862
+ "iec-62443-3-3": { name: "IEC 62443-3-3 — IACS System Security", citation: "IEC 62443-3-3:2013", jurisdiction: "international", domain: "operational-technology" },
863
+ "fedramp-rev5-moderate": { name: "FedRAMP Rev 5 Moderate Baseline", citation: "GSA FedRAMP Rev 5 (Moderate baseline)", jurisdiction: "US", domain: "cybersecurity" },
864
+ "hipaa-security-rule": { name: "HIPAA Security Rule — Technical Safeguards", citation: "45 CFR §164.312", jurisdiction: "US", domain: "health" },
865
+ "hitrust-csf-v11.4": { name: "HITRUST Common Security Framework v11.4", citation: "HITRUST CSF v11.4", jurisdiction: "US", domain: "health" },
866
+ "nerc-cip-007-6": { name: "NERC CIP-007-6 — BES Cyber System Security Management", citation: "NERC CIP-007-6", jurisdiction: "US", domain: "energy" },
867
+ "psd2-rts-sca": { name: "EU PSD2 RTS on Strong Customer Authentication", citation: "Commission Delegated Regulation 2018/389", jurisdiction: "EU", domain: "financial" },
868
+ "swift-cscf-v2026": { name: "SWIFT Customer Security Controls Framework v2026", citation: "SWIFT CSCF v2026", jurisdiction: "international", domain: "financial" },
869
+ "slsa-v1.0-build-l3": { name: "SLSA v1.0 Build Track Level 3", citation: "SLSA Specification v1.0", jurisdiction: "international", domain: "supply-chain" },
870
+ "vex-csaf-2.1": { name: "OASIS CSAF 2.1 — VEX", citation: "OASIS CSAF 2.1", jurisdiction: "international", domain: "supply-chain" },
871
+ "cyclonedx-v1.6": { name: "CycloneDX v1.6 SBOM", citation: "OWASP CycloneDX v1.6", jurisdiction: "international", domain: "supply-chain" },
872
+ "spdx-v3.0": { name: "SPDX v3.0 SBOM", citation: "Linux Foundation SPDX v3.0", jurisdiction: "international", domain: "supply-chain" },
873
+ "owasp-wstg-v5": { name: "OWASP Web Security Testing Guide v5", citation: "OWASP WSTG v5", jurisdiction: "international", domain: "cybersecurity" },
874
+ "ptes": { name: "Penetration Testing Execution Standard", citation: "PTES (community standard)", jurisdiction: "international", domain: "cybersecurity" },
875
+ "nist-800-115": { name: "NIST SP 800-115 — Technical Guide to Information Security Testing", citation: "NIST SP 800-115", jurisdiction: "US", domain: "cybersecurity" },
876
+ "cwe-top-25-2024": { name: "CWE Top 25 Most Dangerous Software Weaknesses (2024)", citation: "MITRE CWE Top 25 (2024)", jurisdiction: "international", domain: "cybersecurity" },
877
+ "cis-controls-v8": { name: "CIS Controls v8", citation: "Center for Internet Security CIS Controls v8", jurisdiction: "international", domain: "cybersecurity" },
878
+ "cmmc-2.0-level-2": { name: "CMMC 2.0 Level 2 — Advanced", citation: "32 CFR Part 170 + NIST SP 800-171 Rev 2", jurisdiction: "US", domain: "cybersecurity" },
879
+ "cmmc-2.0-level-1": { name: "CMMC 2.0 Level 1 — Foundational", citation: "32 CFR Part 170 + FAR 52.204-21", jurisdiction: "US", domain: "cybersecurity" },
880
+ "cmmc-2.0-level-3": { name: "CMMC 2.0 Level 3 — Expert", citation: "32 CFR Part 170 + NIST SP 800-172 enhanced", jurisdiction: "US", domain: "cybersecurity" },
881
+ });
882
+
883
+ /**
884
+ * @primitive b.compliance.describe
885
+ * @signature b.compliance.describe(posture)
886
+ * @since 0.7.27
887
+ * @status stable
888
+ * @related b.compliance.list, b.compliance.posturesByJurisdiction, b.compliance.posturesByDomain
889
+ *
890
+ * Resolve a posture name to its human-readable record:
891
+ * `{ name, citation, jurisdiction, domain }`. Returns `null` for
892
+ * unknown postures. Operators rendering "we run under {name}
893
+ * ({citation})" in admin UI / generated audit reports reach for this
894
+ * instead of hand-rolling a lookup; the values track the regulatory
895
+ * text and update with the framework rather than going stale in
896
+ * operator code.
897
+ *
898
+ * @example
899
+ * var meta = b.compliance.describe("hipaa");
900
+ * meta.name; // → "Health Insurance Portability and Accountability Act"
901
+ * meta.citation; // → "Pub. L. 104-191; 45 CFR Parts 160, 162, 164"
902
+ * meta.jurisdiction; // → "US"
903
+ * meta.domain; // → "health"
904
+ *
905
+ * b.compliance.describe("not-a-real-posture"); // → null
906
+ */
907
+ function describe(posture) {
908
+ return REGIME_MAP[posture] || null;
909
+ }
910
+
911
+ // POSTURE_DEFAULTS — per-posture configuration knobs that primitives
912
+ // (b.backup, b.retention, b.audit, b.cryptoField, b.db, etc.) consult
913
+ // when the operator hasn't passed an explicit value. Not user-facing
914
+ // config — primitives look up here at boot to enforce regulatory
915
+ // floors.
916
+ //
917
+ // Keys per posture:
918
+ // backupEncryptionRequired — backup.create refuses encrypt:false (F-BUDR-4)
919
+ // auditChainSignedRequired — audit emissions MUST be ML-DSA-87 chain-signed
920
+ // tlsMinVersion — minimum TLS version (string e.g. "TLSv1.3")
921
+ // sessionAbsoluteTimeoutMs — hard session expiry ceiling
922
+ // requireVacuumAfterErase — F-RTBF-2: cryptoField.eraseRow must call
923
+ // b.db.vacuumAfterErase({ mode: "full" })
924
+ // so freed B-tree index pages don't linger
925
+ // with sealed-column ciphertext readable
926
+ // from a forensic disk image. GDPR Art. 17
927
+ // + DPDP §12 + LGPD-BR Art. 18 + PIPL-CN
928
+ // Art. 47 all require effective erasure;
929
+ // leftover index residue defeats it.
930
+ //
931
+ // This table is the single source-of-truth — duplicating values into
932
+ // per-primitive defaults would drift the moment a regulator updates.
933
+ var POSTURE_DEFAULTS = Object.freeze({
934
+ "hipaa": Object.freeze({
935
+ backupEncryptionRequired: true,
936
+ auditChainSignedRequired: true,
937
+ tlsMinVersion: "TLSv1.3",
938
+ requireVacuumAfterErase: true,
939
+ }),
940
+ "pci-dss": Object.freeze({
941
+ backupEncryptionRequired: true,
942
+ auditChainSignedRequired: true,
943
+ tlsMinVersion: "TLSv1.3",
944
+ requireVacuumAfterErase: false,
945
+ }),
946
+ "gdpr": Object.freeze({
947
+ backupEncryptionRequired: false, // GDPR Art. 32 says "appropriate" — not mandatory floor // allow:protocol-constant — regulatory article number in prose
948
+ auditChainSignedRequired: true,
949
+ tlsMinVersion: "TLSv1.3",
950
+ // GDPR Art. 17 — "right to erasure" includes residual indexes; B-tree
951
+ // pages holding sealed-column ciphertext after a row-erase defeat
952
+ // the right unless followed by a full vacuum.
953
+ requireVacuumAfterErase: true,
954
+ }),
955
+ "soc2": Object.freeze({
956
+ backupEncryptionRequired: false,
957
+ auditChainSignedRequired: true,
958
+ tlsMinVersion: "TLSv1.3",
959
+ requireVacuumAfterErase: false,
960
+ }),
961
+ "dora": Object.freeze({
962
+ backupEncryptionRequired: true,
963
+ auditChainSignedRequired: true,
964
+ tlsMinVersion: "TLSv1.3",
965
+ requireVacuumAfterErase: false,
966
+ }),
967
+ // LGPD-BR Art. 18 — equivalent right to deletion + residue cleanup.
968
+ "lgpd-br": Object.freeze({
969
+ backupEncryptionRequired: false,
970
+ auditChainSignedRequired: true,
971
+ tlsMinVersion: "TLSv1.3",
972
+ requireVacuumAfterErase: true,
973
+ }),
974
+ // PIPL-CN Art. 47 — deletion right; cross-border residue concerns.
975
+ "pipl-cn": Object.freeze({
976
+ backupEncryptionRequired: true,
977
+ auditChainSignedRequired: true,
978
+ tlsMinVersion: "TLSv1.3",
979
+ requireVacuumAfterErase: true,
980
+ }),
981
+ // India DPDP Act 2023 §12 — right to erasure with effectiveness floor.
982
+ "dpdp": Object.freeze({
983
+ backupEncryptionRequired: false,
984
+ auditChainSignedRequired: true,
985
+ tlsMinVersion: "TLSv1.3",
986
+ requireVacuumAfterErase: true,
987
+ }),
988
+ // v0.8.70 — 2026 effective deadlines
989
+ "modpa": Object.freeze({
990
+ // Maryland Online Data Privacy Act (effective 2026-10-01) —
991
+ // unique among US state privacy laws for its strict data-
992
+ // minimization standard ("reasonably necessary"). The cascade
993
+ // floors mirror GDPR-tier audit + at-rest encryption.
994
+ backupEncryptionRequired: true,
995
+ auditChainSignedRequired: true,
996
+ tlsMinVersion: "TLSv1.3",
997
+ requireVacuumAfterErase: true,
998
+ }),
999
+ "nydfs-500": Object.freeze({
1000
+ // NYDFS 23 NYCRR 500 Amendment 2 — financial cyber. Adds
1001
+ // mandatory MFA, annual penetration test, asset inventory,
1002
+ // governance reporting. Floor: encrypted backups + signed
1003
+ // audit chain (already true), TLS 1.3 minimum.
1004
+ backupEncryptionRequired: true,
1005
+ auditChainSignedRequired: true,
1006
+ tlsMinVersion: "TLSv1.3",
1007
+ requireVacuumAfterErase: true,
1008
+ }),
1009
+ "hipaa-2026": Object.freeze({
1010
+ // HHS HIPAA Security Rule final 2026-Q4 — extends hipaa with
1011
+ // mandatory MFA, asset inventory, 72h restoration testing,
1012
+ // expanded encryption-at-rest scope.
1013
+ backupEncryptionRequired: true,
1014
+ auditChainSignedRequired: true,
1015
+ tlsMinVersion: "TLSv1.3",
1016
+ requireVacuumAfterErase: true,
1017
+ }),
1018
+ "quebec-25": Object.freeze({
1019
+ // Quebec Law 25 final phase (effective 2026-09-22) — DPIA
1020
+ // mandatory for high-risk processing + automated-decision
1021
+ // explanation right. Cascade floor: encrypted backups + signed
1022
+ // audit chain.
1023
+ backupEncryptionRequired: true,
1024
+ auditChainSignedRequired: true,
1025
+ tlsMinVersion: "TLSv1.3",
1026
+ requireVacuumAfterErase: true,
1027
+ }),
1028
+ // v0.8.81 — Florida Digital Bill of Rights SB 262 (effective
1029
+ // 2024-07-01). Narrow scope ($1B+ revenue threshold); privacy-tier
1030
+ // floor matching peer state consumer-privacy postures.
1031
+ "fl-fdbr": Object.freeze({
1032
+ backupEncryptionRequired: false,
1033
+ auditChainSignedRequired: true,
1034
+ tlsMinVersion: "TLSv1.3",
1035
+ requireVacuumAfterErase: true,
1036
+ }),
1037
+ // v0.8.81 — HITECH Act extends HIPAA; treat as HIPAA-tier floor
1038
+ // (encrypted backups, signed audit chain, vacuum-after-erase).
1039
+ "hitech": Object.freeze({
1040
+ backupEncryptionRequired: true,
1041
+ auditChainSignedRequired: true,
1042
+ tlsMinVersion: "TLSv1.3",
1043
+ requireVacuumAfterErase: true,
1044
+ }),
1045
+ // v0.8.81 — FERPA covers student educational records; treat as
1046
+ // privacy-tier with full erasure-residue cleanup (record-purge
1047
+ // workflows for transferred students).
1048
+ "ferpa": Object.freeze({
1049
+ backupEncryptionRequired: false,
1050
+ auditChainSignedRequired: true,
1051
+ tlsMinVersion: "TLSv1.3",
1052
+ requireVacuumAfterErase: true,
1053
+ }),
1054
+ // v0.8.81 — AI-governance postures share an audit-chain-signed
1055
+ // floor so AI-decision audit trails survive forensic challenge
1056
+ // (NYC LL144 annual bias audit, IL HB 3773 employment notice
1057
+ // chain, Colorado AI Act impact-assessment records, Utah UAIPA
1058
+ // disclosure ledger). TLS-1.3 minimum + signed chain only; no
1059
+ // vacuum-after-erase mandate at this tier.
1060
+ "co-ai": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1061
+ "il-hb3773": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1062
+ "tx-traiga": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1063
+ "ut-aipa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1064
+ "nyc-ll144": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1065
+ "ca-tfaia": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }), // Frontier-AI critical-incident records: encrypted at rest, residue-clean on erasure
1066
+ "kr-ai-basic": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1067
+ "cn-ai-label": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1068
+ // v0.8.81 — ISO/IEC 42001 + 23894 — voluntary AI management
1069
+ // certifications. Cascade matches the strictest peer (audit-chain
1070
+ // signed + TLS 1.3); operators chasing ISO certification under a
1071
+ // base regulated posture get strict cumulative floors via
1072
+ // postureDefault() reads.
1073
+ "iso-42001": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1074
+ "iso-23894": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1075
+ // v0.8.81 — California SB-942 + AB-853 are content-credentials
1076
+ // posture flags, not data-floor regulations. Cascade leaves
1077
+ // operator-controlled defaults in place (no backup encryption
1078
+ // mandate, no residue-vacuum mandate); the meaningful effect rides
1079
+ // through b.contentCredentials manifest emission, not the data
1080
+ // tier. TLS 1.3 retained as the framework-wide floor.
1081
+ "ca-sb942": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1082
+ "ca-ab853": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1083
+ // v0.8.81 — EAA + WCAG 2.2 are accessibility postures; no data-
1084
+ // floor cascade. The meaningful effect rides through
1085
+ // b.guardHtml.wcag + b.compliance-eaa primitives.
1086
+ "eaa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1087
+ "wcag-2-2": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1088
+ // v0.8.81 — EU Data Act covers B2G + IoT-data sharing; cascade
1089
+ // floor matches GDPR-tier audit signing + TLS 1.3.
1090
+ "eu-data-act": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1091
+ // v0.8.82 — COPPA + 2025 Amendment: child-data deletion + age-verification
1092
+ // floor (operator-facing rule: when a covered child is identified, knowing-
1093
+ // collection beyond age 13 requires verifiable parental consent; on
1094
+ // withdrawal, full residue cleanup applies). Cascade: signed audit chain
1095
+ // + vacuum-after-erase + TLS 1.3.
1096
+ "coppa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1097
+ "coppa-2025": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1098
+ // v0.8.82 — GLBA Safeguards 2024 Amendment: financial-tier cascade
1099
+ // matching pci-dss + nydfs-500 floor (encrypted backups + signed audit +
1100
+ // TLS 1.3). No vacuum-after-erase mandate at this tier.
1101
+ "glba-safeguards": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1102
+ // v0.8.82 — UK DUAA 2025: privacy-tier with GDPR-equivalent floor
1103
+ // (signed audit + TLS 1.3 + vacuum-after-erase per UK GDPR Art. 17).
1104
+ "uk-duaa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1105
+ // v0.8.82 — Chile Ley 21.719: GDPR-equivalent privacy floor with
1106
+ // strict effective-erasure obligation under the right-to-erasure
1107
+ // article (Art. 8). Cascade mirrors gdpr.
1108
+ "cl-pdpa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1109
+ // v0.8.82 — Korea PIPA: privacy-tier with full erasure-residue cleanup
1110
+ // under the right-to-erasure article. Cascade matches gdpr/lgpd-br tier.
1111
+ "pipa-kr": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1112
+ // v0.8.82 — Australia Privacy Act 2024 Amendment: privacy-tier with
1113
+ // statutory-tort exposure. Encrypted backups + signed audit + vacuum-
1114
+ // after-erase per statutory right-to-erasure.
1115
+ "au-privacy": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1116
+ // v0.8.82 — Other LATAM + APAC postures share the GDPR-equivalent
1117
+ // privacy floor.
1118
+ "mx-lfpdppp": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1119
+ "ar-pdpa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1120
+ "th-pdpa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1121
+ "vn-pdp": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1122
+ "id-pdp": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1123
+ "my-pdpa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1124
+ // v0.8.82 — US state child-privacy + cross-cutting US statutes.
1125
+ "ny-safe-kids": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1126
+ "ny-saffe": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1127
+ "md-kids-code": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1128
+ "vt-aadc": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1129
+ "gina": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1130
+ "vppa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1131
+ "can-spam": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1132
+ "il-gipa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1133
+ "hhs-repro-24": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1134
+ // v0.8.82 — NIST Privacy Framework 1.1 cross-walk posture; cascade
1135
+ // matches gdpr-tier audit signing.
1136
+ "nist-pf-1.1": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1137
+ // v0.8.82 — EU platform/data/cyber adjacent: audit-chain signed,
1138
+ // TLS 1.3, no special data-tier mandate at this layer.
1139
+ "dsa": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1140
+ "dga": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1141
+ "eu-cer": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1142
+ "eu-cyber-sol": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1143
+ "eidas-2": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1144
+ // v0.8.86 — sectoral + cybersecurity directives. DoD CMMC + FBI
1145
+ // CJIS + healthcare regimes share an encrypted-at-rest + signed-
1146
+ // audit-chain floor; ISO 27001/27002 + ISO 27017/27018/27701 are
1147
+ // operator-adopted governance standards with the same baseline.
1148
+ "cmmc-2.0": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1149
+ "cjis-v6": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1150
+ "iso-27001-2022": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1151
+ "iso-27002-2022": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1152
+ "iso-27017": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1153
+ "iso-27018": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1154
+ "iso-27701": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1155
+ "nist-800-66-r2": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1156
+ "ehds": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1157
+ "circia": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1158
+ // ---- v0.9.6 — exceptd framework-control-gap closure cascade ----
1159
+ "nist-800-53": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1160
+ // SUPPLY-18 — NIST AI-RMF MANAGE.4.3 / ISO 23894 §6.5 / ISO 42001
1161
+ // §A.6 require encrypted backups for AI system state (model
1162
+ // weights, training data, prompt logs all contain regulated
1163
+ // payload). All AI-domain postures now enforce backupEncryption.
1164
+ "nist-ai-rmf-1.0": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1165
+ "iso-42001-2023": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1166
+ "iso-23894-2023": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1167
+ "owasp-llm-top-10-2025": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1168
+ // SUPPLY-19 — OWASP ASVS v5.0 §8.3.4 (sensitive-data deletion)
1169
+ // requires post-delete storage reclamation. Set requireVacuumAfterErase
1170
+ // so operators pinning ASVS v5.0 inherit the proper floor.
1171
+ "owasp-asvs-v5.0": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1172
+ "nist-800-218-ssdf": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1173
+ "nist-800-82-r3": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1174
+ "nist-800-63b-rev4": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1175
+ "iec-62443-3-3": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1176
+ // SUPPLY-21 — FedRAMP Rev 5 Moderate baseline references FIPS 140-3
1177
+ // validated cryptography for protect-against-disclosure controls
1178
+ // (SC-13, SC-28). The framework's PQC-first defaults (ML-KEM-1024,
1179
+ // XChaCha20-Poly1305, SHA3-512) are NOT FIPS-140-3 validated as of
1180
+ // the FedRAMP Rev 5 baseline publication — FIPS modules are still
1181
+ // being certified for the ML-KEM / ML-DSA primitives upstream.
1182
+ //
1183
+ // Conflict resolution: PQC-first remains the framework default
1184
+ // — the framework refuses to weaken security middleware to fit a
1185
+ // posture flag. Operators in a FedRAMP boundary opt into
1186
+ // `fipsMode: true` to
1187
+ // switch `b.audit.sign` from SLH-DSA-SHAKE-256f to FIPS-validated
1188
+ // AES-GCM + SHA-384 for the audit-chain signing path. The runtime
1189
+ // emits a `compliance.posture.fips_conflict` audit warning when
1190
+ // posture=fedramp-rev5-moderate AND fipsMode is NOT set so the
1191
+ // conflict is grep-able in the audit chain.
1192
+ //
1193
+ // Operators pinning this posture without setting fipsMode are
1194
+ // signaling "ship the PQC-first defaults and accept that the
1195
+ // FedRAMP boundary will need to document the deviation in their
1196
+ // SSP." The audit warning is the operator-visible signal.
1197
+ "fedramp-rev5-moderate": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true, fipsMode: false }),
1198
+ "hipaa-security-rule": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1199
+ "hitrust-csf-v11.4": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1200
+ "nerc-cip-007-6": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1201
+ "psd2-rts-sca": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1202
+ "swift-cscf-v2026": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1203
+ "slsa-v1.0-build-l3": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1204
+ "vex-csaf-2.1": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1205
+ "cyclonedx-v1.6": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1206
+ "spdx-v3.0": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1207
+ "owasp-wstg-v5": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1208
+ "ptes": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1209
+ "nist-800-115": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1210
+ "cwe-top-25-2024": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1211
+ "cis-controls-v8": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1212
+ // SUPPLY-20 — CMMC 2.0 levels differ in control mapping:
1213
+ // L1 (Foundational, 15 FAR controls, FCI data only) — encrypted
1214
+ // backups NOT mandated; audit-chain encouraged.
1215
+ // L2 (Advanced, 110 NIST 800-171 Rev 2 controls, CUI data) —
1216
+ // encrypted backups + signed audit + post-erase vacuum.
1217
+ // L3 (Expert, NIST 800-172 enhanced atop L2) — same control floor
1218
+ // as L2 plus operator-attested enhanced practices the
1219
+ // framework can't auto-cascade (FIPS 140-3 boundary,
1220
+ // continuous monitoring).
1221
+ "cmmc-2.0-level-1": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1222
+ "cmmc-2.0-level-2": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1223
+ "cmmc-2.0-level-3": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true, fipsMode: false }),
1224
+ // ---- v0.10.16 — sectoral catch-up ----
1225
+ // 42 CFR Part 2 — Substance Use Disorder records confidentiality
1226
+ // (HHS final rule 2024-04-16 aligns Part 2 with HIPAA but retains
1227
+ // a stricter consent floor; encrypted backups + signed audit chain
1228
+ // + post-erase vacuum because the rule narrows the consent window
1229
+ // and operators must demonstrate effective erasure on revocation).
1230
+ "42-cfr-part-2": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1231
+ // ONC HTI-1 final rule (45 CFR Part 170 / 89 FR 1192, effective
1232
+ // 2024-12-31) — health IT certification. Brings algorithmic
1233
+ // transparency / DSI (Decision Support Interventions) requirements.
1234
+ // Cascade: encrypted backups + signed audit + vacuum (PHI-tier).
1235
+ "hti-1": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1236
+ // USCDI v4 (ONC October 2023) — US Core Data for Interoperability
1237
+ // standard data classes for EHR exchange. PHI-tier cascade.
1238
+ "uscdi-v4": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1239
+ // IRS Publication 1075 — Federal Tax Information (FTI) safeguards.
1240
+ // FTI-tier: encrypted at rest, signed audit, vacuum after erasure
1241
+ // (Pub 1075 §4.3 requires sanitization on disposal).
1242
+ "irs-1075": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1243
+ // NIST 800-172 Rev 3 — Enhanced Security Requirements for Protecting
1244
+ // CUI. Layered atop 800-171 / CMMC-L2. FIPS-validated crypto
1245
+ // floor — same operator-opt-in flag pattern as fedramp-rev5-moderate.
1246
+ "nist-800-172-r3": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true, fipsMode: false }),
1247
+ // FIRST Traffic Light Protocol 2.0 (August 2022) — controls sharing
1248
+ // of cyber threat information. Cascade: signed audit chain (the
1249
+ // protocol's normative effect is on the audit + sharing surface,
1250
+ // not data-at-rest).
1251
+ "tlp-2.0": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1252
+ // Security of Critical Infrastructure Act 2018 (Australia, SOCI Act)
1253
+ // + 2021/2022 amendments — critical-infrastructure cyber + ENS
1254
+ // (Enhanced Cyber Security Obligations). Cascade: encrypted backups
1255
+ // + signed audit (ENS §30CT data-integrity obligation).
1256
+ "soci-au": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1257
+ // EU NIS 2 Directive (Directive (EU) 2022/2555) — transposition
1258
+ // deadline 2024-10-17. Cybersecurity for essential + important
1259
+ // entities. Encrypted backups + signed audit chain (Art. 21(2)(d)
1260
+ // requires backup management + crisis recovery).
1261
+ "nis2": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1262
+ // EU Cyber Resilience Act (Reg. (EU) 2024/2847) — product
1263
+ // cybersecurity; full applicability 2027-12-11 with reporting
1264
+ // obligations starting 2026-09-11. SUPPLY-tier cascade.
1265
+ "cra": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1266
+ // FFIEC Cybersecurity Assessment Tool 2.0 — financial-tier; aligns
1267
+ // with NIST CSF 2.0 + CRI Profile. Cascade matches glba-safeguards.
1268
+ "ffiec-cat-2": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1269
+ // CRI Profile v2.0 (Cyber Risk Institute, May 2024) — financial-tier
1270
+ // cyber risk + NIST CSF 2.0 cross-walk.
1271
+ "cri-profile-v2.0": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1272
+ // OMB M-22-09 — Moving to Zero Trust (US federal). Cascade: signed
1273
+ // audit + TLS 1.3 (the memorandum's normative effect rides through
1274
+ // the identity + segmentation surfaces).
1275
+ "m-22-09": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1276
+ // OMB M-22-18 — Enhancing the Security of the Software Supply Chain
1277
+ // (the SSDF / attestation requirement). SUPPLY-tier — audit-chain
1278
+ // signed for the attestation records.
1279
+ "m-22-18": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1280
+ // NIST 800-53 Rev 5 Privacy baseline — additive privacy controls
1281
+ // overlay. Cascade: vacuum-after-erase per PT-2(2) and SI-12.
1282
+ "nist-800-53-r5-privacy": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1283
+ // NIST AI-RMF Generative AI Profile (NIST AI 600-1, July 2024) —
1284
+ // generative AI risk management overlay. AI-tier cascade.
1285
+ "nist-ai-600-1-genai": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1286
+ // NIST CSF 2.0 (February 2024) — Cybersecurity Framework with the
1287
+ // GOVERN function added.
1288
+ "nist-csf-2.0": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1289
+ // SB 53 / California Frontier AI Disclosure (effective 2026 fiscal)
1290
+ // — frontier-model critical incident disclosure ledger.
1291
+ "sb-53": Object.freeze({ backupEncryptionRequired: true, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: true }),
1292
+ // NYC Local Law 144 (2023) — Automated Employment Decision Tools
1293
+ // (bias-audit + candidate notice) — bias-audit posture (already
1294
+ // present as "nyc-ll144"); 2024 amendment adds annual re-audit
1295
+ // signing.
1296
+ "nyc-ll144-2024": Object.freeze({ backupEncryptionRequired: false, auditChainSignedRequired: true, tlsMinVersion: "TLSv1.3", requireVacuumAfterErase: false }),
1297
+ });
1298
+
1299
+ /**
1300
+ * @primitive b.compliance.postureDefault
1301
+ * @signature b.compliance.postureDefault(posture, key)
1302
+ * @since 0.7.27
1303
+ * @status stable
1304
+ * @related b.compliance.set, b.compliance.list
1305
+ *
1306
+ * Look up a single posture-conditioned default without pinning the
1307
+ * posture globally. Returns `null` for unknown postures, unknown
1308
+ * keys, or empty/non-string inputs. Used by primitives that need to
1309
+ * read a regime's floor per-tenant in a multi-tenant deployment
1310
+ * where `set()` would over-pin the process.
1311
+ *
1312
+ * Recognised keys per posture include `backupEncryptionRequired`,
1313
+ * `auditChainSignedRequired`, `tlsMinVersion`, and
1314
+ * `requireVacuumAfterErase` — the floors enforced by `b.backup`,
1315
+ * `b.audit`, the TLS minimum-version gate, and `b.cryptoField`'s
1316
+ * residual-erasure pass.
1317
+ *
1318
+ * @example
1319
+ * b.compliance.postureDefault("hipaa", "tlsMinVersion");
1320
+ * // → "TLSv1.3"
1321
+ *
1322
+ * b.compliance.postureDefault("hipaa", "backupEncryptionRequired");
1323
+ * // → true
1324
+ *
1325
+ * b.compliance.postureDefault("soc2", "requireVacuumAfterErase");
1326
+ * // → false
1327
+ *
1328
+ * b.compliance.postureDefault("hipaa", "no-such-key");
1329
+ * // → null
1330
+ *
1331
+ * b.compliance.postureDefault("not-a-real-posture", "tlsMinVersion");
1332
+ * // → null
1333
+ */
1334
+ function postureDefault(posture, key) {
1335
+ if (typeof posture !== "string" || posture.length === 0) return null;
1336
+ var d = POSTURE_DEFAULTS[posture];
1337
+ if (!d) return null;
1338
+ return Object.prototype.hasOwnProperty.call(d, key) ? d[key] : null;
1339
+ }
1340
+
1341
+ // posturesByDomain — list every posture that maps to the named
1342
+ // domain (privacy / health / payment / cybersecurity / etc.).
1343
+ // Operators rendering compliance dashboards grouped by domain pull
1344
+ // the per-domain posture list with this; admin UIs that show "we
1345
+ // satisfy the privacy regimes for {users.country}" use it to pick
1346
+ // the right posture name without hand-rolling the lookup.
1347
+ /**
1348
+ * @primitive b.compliance.posturesByDomain
1349
+ * @signature b.compliance.posturesByDomain(domain)
1350
+ * @since 0.7.27
1351
+ * @status stable
1352
+ * @related b.compliance.posturesByJurisdiction, b.compliance.list, b.compliance.describe
1353
+ *
1354
+ * Return every posture name whose `REGIME_MAP[p].domain` equals
1355
+ * `domain`, in canonical `KNOWN_POSTURES` order. Returns `[]` for
1356
+ * empty/non-string inputs and for domains with no matches.
1357
+ * Operators rendering compliance dashboards grouped by domain
1358
+ * (privacy / health / payment / cybersecurity / etc.) iterate the
1359
+ * domain list once and read posture sets from here.
1360
+ *
1361
+ * @example
1362
+ * b.compliance.posturesByDomain("privacy");
1363
+ * // → ["ccpa", "gdpr", "lgpd-br", "pipl-cn", "appi-jp",
1364
+ * // "pdpa-sg", "pipeda-ca", "uk-gdpr"]
1365
+ *
1366
+ * b.compliance.posturesByDomain("health");
1367
+ * // → ["hipaa", "wmhmda"]
1368
+ *
1369
+ * b.compliance.posturesByDomain("payment");
1370
+ * // → ["pci-dss"]
1371
+ *
1372
+ * b.compliance.posturesByDomain("not-a-domain");
1373
+ * // → []
1374
+ */
1375
+ function posturesByDomain(domain) {
1376
+ if (typeof domain !== "string" || domain.length === 0) return [];
1377
+ var out = [];
1378
+ var keys = Object.keys(REGIME_MAP);
1379
+ for (var i = 0; i < keys.length; i++) {
1380
+ if (REGIME_MAP[keys[i]].domain === domain) out.push(keys[i]);
1381
+ }
1382
+ return out;
1383
+ }
1384
+
1385
+ // posturesByJurisdiction — same shape, keyed off the ISO 3166 alpha-2
1386
+ // code or `EU` / `international`. Operators handling a multi-region
1387
+ // deployment (e.g. one that serves users in EU + CA + JP) iterate
1388
+ // over jurisdiction codes and resolve to per-jurisdiction posture
1389
+ // configs without hand-rolling the lookup table.
1390
+ /**
1391
+ * @primitive b.compliance.posturesByJurisdiction
1392
+ * @signature b.compliance.posturesByJurisdiction(jurisdiction)
1393
+ * @since 0.7.27
1394
+ * @status stable
1395
+ * @related b.compliance.posturesByDomain, b.compliance.list, b.compliance.describe
1396
+ *
1397
+ * Return every posture whose `REGIME_MAP[p].jurisdiction` equals
1398
+ * `jurisdiction`, in canonical `KNOWN_POSTURES` order. Jurisdiction
1399
+ * values are ISO 3166 alpha-2 codes (`US`, `BR`, `CA`, `JP`, `CN`,
1400
+ * `SG`, `UK`) plus `EU` and `international`, and `US-`-prefixed
1401
+ * state codes (`US-CA`, `US-IL`, `US-WA`). Returns `[]` for
1402
+ * empty/non-string inputs and unknown jurisdictions.
1403
+ *
1404
+ * @example
1405
+ * b.compliance.posturesByJurisdiction("EU");
1406
+ * // → ["gdpr", "dora", "nis2", "cra", "ai-act"]
1407
+ *
1408
+ * b.compliance.posturesByJurisdiction("US");
1409
+ * // → ["hipaa", "soc2", "sox"]
1410
+ *
1411
+ * b.compliance.posturesByJurisdiction("US-CA");
1412
+ * // → ["ccpa"]
1413
+ *
1414
+ * b.compliance.posturesByJurisdiction("XX");
1415
+ * // → []
1416
+ */
1417
+ function posturesByJurisdiction(jurisdiction) {
1418
+ if (typeof jurisdiction !== "string" || jurisdiction.length === 0) return [];
1419
+ var out = [];
1420
+ var keys = Object.keys(REGIME_MAP);
1421
+ for (var i = 0; i < keys.length; i++) {
1422
+ if (REGIME_MAP[keys[i]].jurisdiction === jurisdiction) out.push(keys[i]);
1423
+ }
1424
+ return out;
1425
+ }
1426
+
1427
+ // list — returns every posture as a { name, ...regime-map-fields }
1428
+ // object array, in canonical KNOWN_POSTURES order. Useful for admin
1429
+ // UIs that render the full set as a dropdown / table.
1430
+ /**
1431
+ * @primitive b.compliance.list
1432
+ * @signature b.compliance.list()
1433
+ * @since 0.7.27
1434
+ * @status stable
1435
+ * @related b.compliance.describe, b.compliance.posturesByDomain, b.compliance.posturesByJurisdiction
1436
+ *
1437
+ * Return every documented posture as a
1438
+ * `{ posture, name, citation, jurisdiction, domain }` record array,
1439
+ * in canonical `KNOWN_POSTURES` order. Postures present in
1440
+ * `KNOWN_POSTURES` but missing from `REGIME_MAP` (sectoral identifiers
1441
+ * such as `fapi-2.0` or `ny-2-d`) are skipped — `list()` is the
1442
+ * "regimes with full metadata" view; full naming awaits the regime
1443
+ * map gaining those rows. Useful for admin UIs that render the full
1444
+ * set as a dropdown / table without hand-rolling iteration over
1445
+ * `REGIME_MAP`.
1446
+ *
1447
+ * @example
1448
+ * var rows = b.compliance.list();
1449
+ * rows[0].posture; // → "hipaa"
1450
+ * rows[0].jurisdiction; // → "US"
1451
+ * rows[0].domain; // → "health"
1452
+ *
1453
+ * // Render as a dropdown:
1454
+ * var options = rows.map(function (r) {
1455
+ * return { value: r.posture, label: r.name + " (" + r.jurisdiction + ")" };
1456
+ * });
1457
+ */
1458
+ function list() {
1459
+ var out = [];
1460
+ for (var i = 0; i < KNOWN_POSTURES.length; i++) {
1461
+ var p = KNOWN_POSTURES[i];
1462
+ var meta = REGIME_MAP[p];
1463
+ if (!meta) continue;
1464
+ out.push({
1465
+ posture: p,
1466
+ name: meta.name,
1467
+ citation: meta.citation,
1468
+ jurisdiction: meta.jurisdiction,
1469
+ domain: meta.domain,
1470
+ });
1471
+ }
1472
+ return out;
1473
+ }
1474
+
1475
+ /**
1476
+ * @primitive b.compliance.artifactStandards
1477
+ * @signature b.compliance.artifactStandards()
1478
+ * @since 0.9.57
1479
+ * @status stable
1480
+ *
1481
+ * Return the set of SBOM / VEX artifact standards the framework can
1482
+ * emit. These are FORMAT FAMILIES, not regulatory regimes — pinning
1483
+ * one of these names as the deployment's compliance posture conflates
1484
+ * "format I emit" with "regulatory floor I meet" (SUPPLY-34). Pin
1485
+ * the regulatory regime (FedRAMP / SSDF / HIPAA / etc.) via
1486
+ * `b.compliance.set()` and surface the emitted artifact standards via
1487
+ * this read-only catalog.
1488
+ *
1489
+ * @example
1490
+ * b.compliance.artifactStandards();
1491
+ * // → ["cyclonedx-v1.6", "spdx-v3.0", "vex-csaf-2.1"]
1492
+ */
1493
+ function artifactStandards() {
1494
+ return ARTIFACT_STANDARDS.slice();
1495
+ }
1496
+
1497
+ /**
1498
+ * @primitive b.compliance.fipsMode
1499
+ * @signature b.compliance.fipsMode(enable?)
1500
+ * @since 0.9.57
1501
+ * @status stable
1502
+ * @related b.compliance.set
1503
+ *
1504
+ * Get or set the FIPS-mode flag. When `enable === true`, the
1505
+ * framework's audit-chain signing path (b.audit.sign) switches from
1506
+ * the PQC-first default (SLH-DSA-SHAKE-256f) to a FIPS-140-3
1507
+ * validated AES-GCM + SHA-384 path so a FedRAMP / CMMC L3 boundary
1508
+ * can pin the audit signer to a validated module.
1509
+ *
1510
+ * Call BEFORE b.compliance.set() so the fips_conflict audit warning
1511
+ * doesn't fire at posture-set time. Cannot be toggled after posture
1512
+ * is pinned — runtime switches create half-set crypto state. Returns
1513
+ * the current flag value when called with no argument.
1514
+ *
1515
+ * @example
1516
+ * b.compliance.fipsMode(true); // opt into FIPS-validated path
1517
+ * b.compliance.set("fedramp-rev5-moderate");
1518
+ * b.compliance.fipsMode(); // → true
1519
+ */
1520
+ function fipsMode(enable) {
1521
+ if (enable === undefined) return STATE.fipsMode === true;
1522
+ if (typeof enable !== "boolean") {
1523
+ throw new ComplianceError("compliance/bad-fips-mode",
1524
+ "compliance.fipsMode: argument must be boolean when supplied (got " +
1525
+ typeof enable + ")");
1526
+ }
1527
+ if (STATE.posture) {
1528
+ throw new ComplianceError("compliance/fips-after-set",
1529
+ "compliance.fipsMode: posture is already pinned ('" + STATE.posture +
1530
+ "'); FIPS-mode must be set BEFORE b.compliance.set() — runtime " +
1531
+ "switches create half-set crypto state.");
1532
+ }
1533
+ STATE.fipsMode = enable;
1534
+ _emitAudit("compliance.fips_mode.set", { fipsMode: enable });
1535
+ return STATE.fipsMode;
1536
+ }
1537
+
1538
+ module.exports = {
1539
+ set: set,
1540
+ current: current,
1541
+ assert: assert,
1542
+ clear: clear,
1543
+ describe: describe,
1544
+ posturesByDomain: posturesByDomain,
1545
+ posturesByJurisdiction: posturesByJurisdiction,
1546
+ list: list,
1547
+ postureDefault: postureDefault,
1548
+ sanctions: sanctions,
1549
+ aiAct: aiAct,
1550
+ artifactStandards: artifactStandards,
1551
+ fipsMode: fipsMode,
1552
+ KNOWN_POSTURES: KNOWN_POSTURES,
1553
+ POSTURE_DEFAULTS: POSTURE_DEFAULTS,
1554
+ ARTIFACT_STANDARDS: ARTIFACT_STANDARDS,
1555
+ REGIME_MAP: REGIME_MAP,
1556
+ ComplianceError: ComplianceError,
1557
+ _resetForTest: _resetForTest,
1558
+ };