failproofai 1.0.6-beta.1 → 1.0.7-beta.0

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 (258) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  6. package/.next/standalone/.next/server/app/_global-error/page.js +4 -4
  7. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  11. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +6 -6
  12. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  13. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page.js +4 -4
  16. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.rsc +15 -15
  20. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  21. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +14 -14
  22. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  23. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/audit/run/route.js +8 -7
  25. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  32. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  33. package/.next/standalone/.next/server/app/audit/page.js +7 -5
  34. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/index.html +1 -1
  37. package/.next/standalone/.next/server/app/index.rsc +15 -15
  38. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +14 -14
  39. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -15
  40. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  41. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  42. package/.next/standalone/.next/server/app/page.js +6 -6
  43. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
  46. package/.next/standalone/.next/server/app/policies/page.js +13 -11
  47. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  50. package/.next/standalone/.next/server/app/project/[name]/page.js +8 -7
  51. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  54. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  55. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +7 -7
  56. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  59. package/.next/standalone/.next/server/app/projects/page.js +7 -6
  60. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  61. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +41 -8
  63. package/.next/standalone/.next/server/app/settings/page.js +12 -9
  64. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/chunks/{[externals]__1msfs-h._.js → [externals]__19_pzeq._.js} +1 -1
  67. package/.next/standalone/.next/server/chunks/{[externals]__1_bftcl._.js → [externals]__1j-zsg5._.js} +1 -1
  68. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o07qi9._.js +1 -1
  69. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1_r2rbg._.js → [root-of-the-server]__1bf34x4._.js} +5 -7
  70. package/.next/standalone/.next/server/chunks/_09dz7xv._.js +21 -21
  71. package/.next/standalone/.next/server/chunks/_0tovk6q._.js +1 -1
  72. package/.next/standalone/.next/server/chunks/_0trp3yc._.js +1 -1
  73. package/.next/standalone/.next/server/chunks/_1ek68ln._.js +16 -16
  74. package/.next/standalone/.next/server/chunks/{_1c3k-8x._.js → _1q5i8mb._.js} +2 -2
  75. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oi._.js +2 -2
  76. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p7._.js +2 -2
  77. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
  78. package/.next/standalone/.next/server/chunks/src_hooks_01frwmb._.js +5 -0
  79. package/.next/standalone/.next/server/chunks/src_hooks_18qtd42._.js +3 -0
  80. package/.next/standalone/.next/server/chunks/src_hooks_custom-hooks-loader_ts_0lnb3n3._.js +4 -2
  81. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01bmjsj._.js +3 -0
  82. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04usis8._.js +4 -0
  83. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__02npjtd._.js → [root-of-the-server]__056wjo4._.js} +3 -3
  84. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0576iuy._.js +1 -1
  85. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__059yza8._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0eip4_k._.js +22 -0
  87. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0p-5p8u._.js → [root-of-the-server]__0n0xg95._.js} +3 -3
  88. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qcb0mg._.js +3 -0
  89. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qxnccm._.js +5 -0
  90. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__013jr2b._.js → [root-of-the-server]__0rwtwpm._.js} +3 -3
  91. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s_yomn._.js +4 -0
  92. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0soxz2z._.js +3 -0
  93. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0yrsbd_._.js +3 -0
  94. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0da85px._.js → [root-of-the-server]__11mayhe._.js} +3 -3
  95. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__13d-wb6._.js +3 -0
  96. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1dinjii._.js +3 -0
  97. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0cxe_2_._.js → [root-of-the-server]__1mf3zp6._.js} +3 -3
  98. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1x3j9mj._.js → [root-of-the-server]__1p28m0u._.js} +2 -2
  99. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ftmoxc._.js → [root-of-the-server]__1pprgri._.js} +3 -3
  100. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1p2otjt._.js → [root-of-the-server]__1q4p5b8._.js} +3 -3
  101. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1qiz0e4._.js +3 -0
  102. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1v185mo._.js +1 -1
  103. package/.next/standalone/.next/server/chunks/ssr/_042cgl1._.js +3 -0
  104. package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
  105. package/.next/standalone/.next/server/chunks/ssr/_0bqoto4._.js +3 -0
  106. package/.next/standalone/.next/server/chunks/ssr/{_0qlygw6._.js → _0cf1olg._.js} +2 -2
  107. package/.next/standalone/.next/server/chunks/ssr/_0uyu3jf._.js +3 -0
  108. package/.next/standalone/.next/server/chunks/ssr/{_1_ddpm3._.js → _135-c3y._.js} +1 -1
  109. package/.next/standalone/.next/server/chunks/ssr/_1feuvhb._.js +5 -0
  110. package/.next/standalone/.next/server/chunks/ssr/{_1es2j7i._.js → _1gb0ifp._.js} +5 -5
  111. package/.next/standalone/.next/server/chunks/ssr/{_1_qswah._.js → _1q46vxx._.js} +2 -2
  112. package/.next/standalone/.next/server/chunks/ssr/{_0h_douw._.js → _1w_5l7t._.js} +1 -1
  113. package/.next/standalone/.next/server/chunks/ssr/_1zopuov._.js +1 -1
  114. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo.js +4 -4
  115. package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9sni._.js +3 -0
  116. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
  117. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  118. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +2 -2
  119. package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h4._.js +3 -0
  120. package/.next/standalone/.next/server/chunks/ssr/lib_utils_ts_0az0sfq._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/ssr/{node_modules_next_dist_0drixxt._.js → node_modules_next_dist_0w6mzq5._.js} +4 -4
  122. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_18_d8l1._.js +151 -0
  123. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuzn._.js +2 -2
  124. package/.next/standalone/.next/server/chunks/ssr/src_hooks_095a_79._.js +5 -0
  125. package/.next/standalone/.next/server/chunks/ssr/src_hooks_15t8kqj._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/ssr/src_hooks_18k8rl0._.js +12 -0
  127. package/.next/standalone/.next/server/chunks/ssr/src_hooks_1fm2w5z._.js +3 -0
  128. package/.next/standalone/.next/server/chunks/ssr/src_hooks_1j0zy3v._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/src_hooks_builtin-policies_ts_09j2ndl._.js +1 -1
  130. package/.next/standalone/.next/server/chunks/ssr/src_hooks_fp-home_ts_0je3xkv._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me65._.js +1 -1
  132. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  133. package/.next/standalone/.next/server/pages/404.html +1 -1
  134. package/.next/standalone/.next/server/pages/500.html +1 -1
  135. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/server-reference-manifest.json +56 -23
  137. package/.next/standalone/.next/static/chunks/{06fjx8-0_qufs.js → 00i9thnpht4l1.js} +1 -1
  138. package/.next/standalone/.next/static/chunks/{3ht0xsco46pul.js → 0289oapk24zql.js} +1 -1
  139. package/.next/standalone/.next/static/chunks/{1qf2uiipatr80.js → 0pyy9m5cm8zku.js} +1 -1
  140. package/.next/standalone/.next/static/chunks/15heikmy3yjzc.js +1 -0
  141. package/.next/standalone/.next/static/chunks/285spx855h_3r.css +2 -0
  142. package/.next/standalone/.next/static/chunks/{02vwr5js1x28j.js → 2plg9qae1yejv.js} +1 -1
  143. package/.next/standalone/.next/static/chunks/2qv4hshejedtx.css +1 -0
  144. package/.next/standalone/.next/static/chunks/{2x776s0x3n_tu.js → 2tqszh84mp_2l.js} +1 -1
  145. package/.next/standalone/.next/static/chunks/34jpdb2xjm-x7.js +1 -0
  146. package/.next/standalone/.next/static/chunks/3cdkxrukvlvul.js +1 -0
  147. package/.next/standalone/.next/static/chunks/3dnd-_29uiaj3.js +6 -0
  148. package/.next/standalone/.next/static/chunks/{0y227_ohdqwvn.js → 3vp7c3knkh8mr.js} +1 -1
  149. package/.next/standalone/.next/static/chunks/{27_bwbg8sv6vj.js → 3vwnzfx9q80yl.js} +1 -1
  150. package/.next/standalone/app/actions/get-jev-config.ts +409 -0
  151. package/.next/standalone/app/actions/pack-actions.ts +12 -0
  152. package/.next/standalone/app/actions/update-jev-config.ts +420 -0
  153. package/.next/standalone/app/components/jev-notices.tsx +96 -0
  154. package/.next/standalone/app/policies/hooks-client.tsx +9 -0
  155. package/.next/standalone/app/settings/jev-panel.tsx +469 -0
  156. package/.next/standalone/app/settings/page.tsx +20 -1
  157. package/.next/standalone/app/settings/settings-client.tsx +27 -1
  158. package/.next/standalone/app/settings/settings.css +79 -0
  159. package/.next/standalone/fp-cloud-cli/CHANGELOG.md +51 -3
  160. package/.next/standalone/fp-cloud-cli/README.md +1 -1
  161. package/.next/standalone/fp-cloud-cli/fp_cli/_version.py +1 -1
  162. package/.next/standalone/fp-cloud-cli/fp_cli/client.py +44 -0
  163. package/.next/standalone/fp-cloud-cli/fp_cli/commands/incidents_cmds.py +226 -5
  164. package/.next/standalone/fp-cloud-cli/fp_cli/models.py +11 -0
  165. package/.next/standalone/fp-cloud-cli/fp_cli/output.py +68 -1
  166. package/.next/standalone/fp-cloud-cli/pyproject.toml +1 -1
  167. package/.next/standalone/fp-cloud-cli/skill/SKILL.md +17 -2
  168. package/.next/standalone/fp-cloud-cli/skill/references/commands.md +7 -4
  169. package/.next/standalone/fp-cloud-cli/tests/test_alerting.py +184 -0
  170. package/.next/standalone/fp-cloud-cli/uv.lock +3 -3
  171. package/.next/standalone/package.json +11 -11
  172. package/.next/standalone/sdk/python/CHANGELOG.md +7 -0
  173. package/.next/standalone/sdk/python/failproofai_sdk/_version.py +1 -1
  174. package/.next/standalone/sdk/python/failproofai_sdk/evaluator/__init__.py +2 -0
  175. package/.next/standalone/sdk/python/failproofai_sdk/evaluator/authoring.py +24 -1
  176. package/.next/standalone/sdk/python/failproofai_sdk/evaluator/runtime.py +41 -6
  177. package/.next/standalone/sdk/python/tests/test_evaluator_runtime.py +88 -0
  178. package/.next/standalone/sdk/python/uv.lock +15 -15
  179. package/.next/standalone/server.js +1 -1
  180. package/bin/failproofai.mjs +115 -2
  181. package/dist/cli.mjs +10982 -3787
  182. package/dist/index.js +19 -1
  183. package/dist/worker.mjs +13761 -7834
  184. package/package.json +11 -11
  185. package/pi-extension/index.ts +11 -0
  186. package/scripts/build-policy-pack.mjs +39 -2
  187. package/src/hooks/builtin-policies.ts +21 -3
  188. package/src/hooks/cloud-enrollment-cli.ts +1 -1
  189. package/src/hooks/cloud-managed-policies.ts +22 -0
  190. package/src/hooks/custom-hooks-loader.ts +45 -7
  191. package/src/hooks/custom-hooks-registry.ts +45 -1
  192. package/src/hooks/daemon-client.ts +128 -50
  193. package/src/hooks/daemon-service.ts +30 -0
  194. package/src/hooks/effective-reviewers.ts +79 -0
  195. package/src/hooks/first-run-gate.ts +5 -0
  196. package/src/hooks/fp-home.ts +23 -0
  197. package/src/hooks/handler.ts +265 -6
  198. package/src/hooks/hook-activity-store.ts +105 -1
  199. package/src/hooks/hook-telemetry.ts +41 -0
  200. package/src/hooks/integrations.ts +3 -2
  201. package/src/hooks/jev-activity.ts +385 -0
  202. package/src/hooks/jev-cli.ts +1193 -0
  203. package/src/hooks/loader-utils.ts +6 -0
  204. package/src/hooks/manager.ts +4 -4
  205. package/src/hooks/pack-cli.ts +237 -11
  206. package/src/hooks/pack-manifest.ts +479 -7
  207. package/src/hooks/pack-store.ts +156 -10
  208. package/src/hooks/policy-authority.ts +333 -0
  209. package/src/hooks/policy-catalog.ts +65 -0
  210. package/src/hooks/policy-evaluator.ts +940 -796
  211. package/src/hooks/policy-registry.ts +25 -0
  212. package/src/hooks/policy-reviewability.ts +229 -0
  213. package/src/hooks/policy-types.ts +126 -0
  214. package/src/hooks/semantic/combine.ts +541 -0
  215. package/src/hooks/semantic/compile.ts +176 -0
  216. package/src/hooks/semantic/decide.ts +392 -0
  217. package/src/hooks/semantic/envelope.ts +1296 -0
  218. package/src/hooks/semantic/evaluator.ts +547 -0
  219. package/src/hooks/semantic/facts.ts +292 -0
  220. package/src/hooks/semantic/intent.ts +1190 -0
  221. package/src/hooks/semantic/jev-client.ts +643 -0
  222. package/src/hooks/semantic/jev-config.ts +594 -0
  223. package/src/hooks/semantic/jev-review.ts +374 -0
  224. package/src/hooks/semantic/jev-stats.ts +289 -0
  225. package/src/hooks/semantic/jev-throttle.ts +421 -0
  226. package/src/hooks/semantic/pack-policies.ts +251 -0
  227. package/src/hooks/semantic/policies.ts +596 -0
  228. package/src/hooks/semantic/precondition-names.ts +60 -0
  229. package/src/hooks/semantic/preconditions.ts +58 -0
  230. package/src/hooks/semantic/redact.ts +2910 -0
  231. package/src/hooks/semantic/types.ts +145 -0
  232. package/src/hooks/semver-precedence.ts +128 -0
  233. package/src/hooks/worker-server.ts +119 -26
  234. package/src/index.ts +6 -0
  235. package/.next/standalone/.next/server/chunks/src_hooks_0iu54mz._.js +0 -3
  236. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-_ki57._.js +0 -4
  237. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__01wy8d-._.js +0 -4
  238. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0cg-bgc._.js +0 -5
  239. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0cpu_mj._.js +0 -3
  240. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0u3w0ll._.js +0 -22
  241. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__17d_ffl._.js +0 -3
  242. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__19d9tgz._.js +0 -5
  243. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1ctpynv._.js +0 -3
  244. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1jiwfsj._.js +0 -3
  245. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1phc187._.js +0 -3
  246. package/.next/standalone/.next/server/chunks/ssr/_06imw3p._.js +0 -5
  247. package/.next/standalone/.next/server/chunks/ssr/_1u8-lu2._.js +0 -3
  248. package/.next/standalone/.next/server/chunks/ssr/app_settings_settings-client_tsx_20lq-mq._.js +0 -3
  249. package/.next/standalone/.next/server/chunks/ssr/src_hooks_1cv9_c4._.js +0 -10
  250. package/.next/standalone/.next/static/chunks/0cbvytf8epn34.js +0 -1
  251. package/.next/standalone/.next/static/chunks/0qmsunv04x4na.css +0 -2
  252. package/.next/standalone/.next/static/chunks/1p4xauf-zu6zk.js +0 -1
  253. package/.next/standalone/.next/static/chunks/1uc_s_dftgxiq.js +0 -6
  254. package/.next/standalone/.next/static/chunks/2k9f4tyv04809.css +0 -1
  255. package/.next/standalone/.next/static/chunks/2lvr2pt70qn14.js +0 -1
  256. /package/.next/standalone/.next/static/{QCNYz2yCxxdeggg1k0iEq → qbVI48kgBOf9CTOKcFIk2}/_buildManifest.js +0 -0
  257. /package/.next/standalone/.next/static/{QCNYz2yCxxdeggg1k0iEq → qbVI48kgBOf9CTOKcFIk2}/_clientMiddlewareManifest.js +0 -0
  258. /package/.next/standalone/.next/static/{QCNYz2yCxxdeggg1k0iEq → qbVI48kgBOf9CTOKcFIk2}/_ssgManifest.js +0 -0
@@ -25,6 +25,12 @@
25
25
  * - **Absent optionals stay absent.** `beta`, `alwaysOn` and `params` are read
26
26
  * with `in` and `undefined` checks; default-filling them changes behaviour and
27
27
  * fails existing tests.
28
+ * - **Every entry states its `authority`,** even though absent already means
29
+ * `hard`: whether Jev may clear a builtin's verdict is a decision to make per
30
+ * policy, not a default to inherit. `reviewable` only where a semantic policy
31
+ * genuinely covers the same concern, named in `reviewedBy`. The table and the
32
+ * reasoning are in `docs/policies/authority.mdx`; `alwaysOn` is hard whatever
33
+ * it says here.
28
34
  *
29
35
  * `params.default` values are handed to policies BY REFERENCE, so this must stay
30
36
  * one module-level const — never a factory minting fresh defaults per call.
@@ -38,6 +44,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
38
44
  displayTitle: "Redacted JWT tokens from tool output",
39
45
  impact: "Stops the agent from echoing auth tokens it saw in command output.",
40
46
  match: { events: ["PostToolUse"] },
47
+ authority: "hard",
41
48
  defaultEnabled: true,
42
49
  category: "Sanitize",
43
50
  },
@@ -47,6 +54,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
47
54
  displayTitle: "Redacted API keys from tool output",
48
55
  impact: "Catches OpenAI / Anthropic / GitHub / AWS / Stripe / Google keys before the model sees them.",
49
56
  match: { events: ["PostToolUse"] },
57
+ authority: "hard",
50
58
  defaultEnabled: true,
51
59
  category: "Sanitize",
52
60
  params: {
@@ -63,6 +71,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
63
71
  displayTitle: "Redacted database connection strings from tool output",
64
72
  impact: "Strips embedded DB credentials before they reach the model context.",
65
73
  match: { events: ["PostToolUse"] },
74
+ authority: "hard",
66
75
  defaultEnabled: true,
67
76
  category: "Sanitize",
68
77
  },
@@ -72,6 +81,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
72
81
  displayTitle: "Redacted PEM private keys from tool output",
73
82
  impact: "Prevents private key bodies from being echoed into chat context.",
74
83
  match: { events: ["PostToolUse"] },
84
+ authority: "hard",
75
85
  defaultEnabled: true,
76
86
  category: "Sanitize",
77
87
  },
@@ -81,6 +91,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
81
91
  impact: "Strips Authorization: Bearer values before they hit the model.",
82
92
  description: "Stop Claude from reading Authorization Bearer tokens in tool responses",
83
93
  match: { events: ["PostToolUse"] },
94
+ authority: "hard",
84
95
  defaultEnabled: true,
85
96
  category: "Sanitize",
86
97
  },
@@ -90,6 +101,8 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
90
101
  impact: "Env vars often contain secrets; blocking `env` / `printenv` keeps them out of the model context.",
91
102
  description: "Prevent commands that read environment variables",
92
103
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
104
+ authority: "reviewable",
105
+ reviewedBy: ["env-secrets-dump", "secret-exposure"],
93
106
  defaultEnabled: true,
94
107
  category: "Environment",
95
108
  },
@@ -99,6 +112,8 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
99
112
  impact: "`.env` files routinely contain API keys and DB credentials.",
100
113
  description: "Block reading/writing .env files",
101
114
  match: { events: ["PreToolUse"] },
115
+ authority: "reviewable",
116
+ reviewedBy: ["secret-exposure"],
102
117
  defaultEnabled: true,
103
118
  category: "Environment",
104
119
  },
@@ -108,6 +123,8 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
108
123
  impact: "Stops the agent from peeking at neighboring repos or your home directory.",
109
124
  description: "Block file reads outside the session working directory",
110
125
  match: { events: ["PreToolUse"], toolNames: ["Read", "Glob", "Grep", "Bash"] },
126
+ authority: "reviewable",
127
+ reviewedBy: ["read-outside-workspace"],
111
128
  defaultEnabled: false,
112
129
  category: "Environment",
113
130
  params: {
@@ -126,6 +143,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
126
143
  // PermissionRequest is Codex's escalation-approval event; fire the same
127
144
  // sudo guard there so Codex sandbox bypasses are blocked too.
128
145
  match: { events: ["PreToolUse", "PermissionRequest"], toolNames: ["Bash"] },
146
+ authority: "hard",
129
147
  defaultEnabled: true,
130
148
  category: "Dangerous Commands",
131
149
  params: {
@@ -142,6 +160,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
142
160
  impact: "`curl ... | sh` runs unverified remote code on your machine.",
143
161
  description: "Block piping downloads to shell",
144
162
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
163
+ authority: "hard",
145
164
  defaultEnabled: true,
146
165
  category: "Dangerous Commands",
147
166
  },
@@ -151,6 +170,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
151
170
  impact: "Catches catastrophic `rm -rf /` and Windows equivalents.",
152
171
  description: "Prevent catastrophic deletions",
153
172
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
173
+ authority: "hard",
154
174
  defaultEnabled: false,
155
175
  category: "Dangerous Commands",
156
176
  params: {
@@ -180,6 +200,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
180
200
  },
181
201
  defaultEnabled: true,
182
202
  alwaysOn: true,
203
+ authority: "hard",
183
204
  category: "Dangerous Commands",
184
205
  },
185
206
  {
@@ -188,6 +209,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
188
209
  impact: "kubectl can change live cluster state — gated unless allow-listed.",
189
210
  description: "Block kubectl commands (Kubernetes cluster mutations)",
190
211
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
212
+ authority: "hard",
191
213
  defaultEnabled: false,
192
214
  category: "Infra Commands",
193
215
  params: {
@@ -204,6 +226,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
204
226
  impact: "Terraform mutates real infrastructure — gated unless allow-listed.",
205
227
  description: "Block terraform and tofu (OpenTofu) commands",
206
228
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
229
+ authority: "hard",
207
230
  defaultEnabled: false,
208
231
  category: "Infra Commands",
209
232
  params: {
@@ -220,6 +243,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
220
243
  impact: "AWS CLI can spend money or break prod — gated.",
221
244
  description: "Block aws CLI commands",
222
245
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
246
+ authority: "hard",
223
247
  defaultEnabled: false,
224
248
  category: "Infra Commands",
225
249
  params: {
@@ -236,6 +260,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
236
260
  impact: "gcloud can spend money or break prod — gated.",
237
261
  description: "Block gcloud (Google Cloud) CLI commands",
238
262
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
263
+ authority: "hard",
239
264
  defaultEnabled: false,
240
265
  category: "Infra Commands",
241
266
  params: {
@@ -252,6 +277,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
252
277
  impact: "az can spend money or break prod — gated.",
253
278
  description: "Block az (Azure) CLI commands",
254
279
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
280
+ authority: "hard",
255
281
  defaultEnabled: false,
256
282
  category: "Infra Commands",
257
283
  params: {
@@ -268,6 +294,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
268
294
  impact: "Helm releases mutate cluster state — gated.",
269
295
  description: "Block helm commands",
270
296
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
297
+ authority: "hard",
271
298
  defaultEnabled: false,
272
299
  category: "Infra Commands",
273
300
  params: {
@@ -284,6 +311,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
284
311
  impact: "Catches `gh workflow run`, `gh pr merge`, `gh secret set`, etc.",
285
312
  description: "Block gh CLI pipeline-trigger subcommands (workflow run, run rerun/cancel, pr merge, release create/delete, cache delete, secret set/delete)",
286
313
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
314
+ authority: "hard",
287
315
  defaultEnabled: false,
288
316
  category: "Infra Commands",
289
317
  params: {
@@ -300,6 +328,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
300
328
  impact: "Stops the agent from creating `.pem`, `id_rsa`, `credentials.json`, etc.",
301
329
  description: "Block writing secret key files",
302
330
  match: { events: ["PreToolUse"], toolNames: ["Write"] },
331
+ authority: "hard",
303
332
  defaultEnabled: false,
304
333
  category: "Dangerous Commands",
305
334
  params: {
@@ -316,6 +345,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
316
345
  impact: "Direct pushes to a protected branch bypass review.",
317
346
  description: "Block pushing to main/master",
318
347
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
348
+ authority: "hard",
319
349
  defaultEnabled: true,
320
350
  category: "Git",
321
351
  params: {
@@ -332,6 +362,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
332
362
  impact: "Force-pushes rewrite history and can clobber teammates' work.",
333
363
  description: "Prevent force-pushing to any branch",
334
364
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
365
+ authority: "hard",
335
366
  defaultEnabled: false,
336
367
  category: "Git",
337
368
  },
@@ -341,6 +372,21 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
341
372
  impact: "Work should land via PR — direct commits skip review.",
342
373
  description: "Block git commits and merges on main/master branch",
343
374
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
375
+ // Hard, although `commit-on-protected-branch` covers exactly this concern.
376
+ // That check is `mode: "instruct"`, and an instruct-mode reviewer can never
377
+ // answer deny — so the conjunction had one reachable outcome, cleared, and
378
+ // marking this reviewable did not hand the decision to Jev. It switched the
379
+ // policy off on every machine that configured Jev, while the mark said
380
+ // otherwise.
381
+ //
382
+ // The test that matters is not "can the reviewer keep this block" but "is
383
+ // there anything left that can deny". `block-read-outside-cwd` also has only
384
+ // an instruct reviewer and stays reviewable, because when it clears,
385
+ // `secret-exposure` and `credential-exfiltration` are still asked about the
386
+ // same read and still deny on their own through the most-severe merge. Here
387
+ // nothing else covers committing on a protected branch, so a clear leaves
388
+ // the concern unenforced by anything.
389
+ authority: "hard",
344
390
  defaultEnabled: false,
345
391
  category: "Git",
346
392
  params: {
@@ -357,6 +403,8 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
357
403
  impact: "Amending after a push rewrites history that others may have pulled.",
358
404
  description: "Warns before amending git commits, which rewrites history",
359
405
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
406
+ authority: "reviewable",
407
+ reviewedBy: ["git-history-rewrite"],
360
408
  defaultEnabled: false,
361
409
  category: "Git",
362
410
  },
@@ -366,6 +414,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
366
414
  impact: "Stash deletions are permanent and silent.",
367
415
  description: "Warns before permanently deleting stashed changes",
368
416
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
417
+ authority: "hard",
369
418
  defaultEnabled: false,
370
419
  category: "Git",
371
420
  },
@@ -375,6 +424,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
375
424
  impact: "Wide stages routinely catch generated files or secrets you didn't intend to commit.",
376
425
  description: "Warns before staging all working tree files with git add -A / . / --all",
377
426
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
427
+ authority: "hard",
378
428
  defaultEnabled: false,
379
429
  category: "Git",
380
430
  },
@@ -384,6 +434,8 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
384
434
  impact: "Easy way to wipe a table by accident.",
385
435
  description: "Warn before executing destructive SQL (DROP/TRUNCATE/DELETE without WHERE) via database clients",
386
436
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
437
+ authority: "reviewable",
438
+ reviewedBy: ["database-destruction"],
387
439
  defaultEnabled: false,
388
440
  category: "Database",
389
441
  },
@@ -393,6 +445,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
393
445
  impact: "ALTER TABLE operations can lock tables and break readers.",
394
446
  description: "Warns before SQL schema changes (ALTER TABLE with column or rename operations)",
395
447
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
448
+ authority: "hard",
396
449
  defaultEnabled: false,
397
450
  category: "Database",
398
451
  },
@@ -402,6 +455,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
402
455
  impact: "Publishes are irreversible — `npm publish` / `cargo publish` shouldn't happen without intent.",
403
456
  description: "Warn before publishing packages to public registries (npm, PyPI, crates.io, RubyGems, etc.)",
404
457
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
458
+ authority: "hard",
405
459
  defaultEnabled: false,
406
460
  category: "Packages & System",
407
461
  },
@@ -411,6 +465,8 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
411
465
  impact: "`npm i -g`, `cargo install`, `pip --user` pollute your machine outside the project.",
412
466
  description: "Warns before installing packages globally (npm -g, cargo install, etc.)",
413
467
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
468
+ authority: "reviewable",
469
+ reviewedBy: ["system-modification"],
414
470
  defaultEnabled: false,
415
471
  category: "Packages & System",
416
472
  },
@@ -420,6 +476,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
420
476
  impact: "Mixing package managers creates lockfile churn for your team.",
421
477
  description: "Blocks non-preferred package managers and tells Claude to use an allowed one (e.g., uv instead of pip)",
422
478
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
479
+ authority: "hard",
423
480
  defaultEnabled: false,
424
481
  category: "Packages & System",
425
482
  params: {
@@ -441,6 +498,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
441
498
  impact: "Catches accidentally large file writes (logs, binaries, model dumps).",
442
499
  description: "Warn before writing files larger than 1MB (configurable via thresholdKb param)",
443
500
  match: { events: ["PreToolUse"], toolNames: ["Write"] },
501
+ authority: "hard",
444
502
  defaultEnabled: false,
445
503
  category: "Packages & System",
446
504
  params: {
@@ -457,6 +515,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
457
515
  impact: "Catches `nohup` / `&` / `screen` / `tmux` / `disown` patterns that the agent often forgets to clean up.",
458
516
  description: "Warns before starting detached or background processes",
459
517
  match: { events: ["PreToolUse"], toolNames: ["Bash"] },
518
+ authority: "hard",
460
519
  defaultEnabled: false,
461
520
  category: "Packages & System",
462
521
  },
@@ -466,6 +525,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
466
525
  impact: "Usually a sign of a stuck loop burning tokens.",
467
526
  description: "Warn when the same tool is called 3+ times with identical parameters",
468
527
  match: { events: ["PreToolUse"] },
528
+ authority: "hard",
469
529
  defaultEnabled: false,
470
530
  category: "AI Behavior",
471
531
  },
@@ -475,6 +535,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
475
535
  impact: "Work not in a commit is invisible to teammates and easy to lose.",
476
536
  description: "Require all changes to be committed before Claude stops",
477
537
  match: { events: ["Stop"] },
538
+ authority: "hard",
478
539
  defaultEnabled: false,
479
540
  category: "Workflow",
480
541
  },
@@ -484,6 +545,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
484
545
  impact: "Local-only commits won't trigger CI or be reviewable.",
485
546
  description: "Require all commits to be pushed to remote before Claude stops",
486
547
  match: { events: ["Stop"] },
548
+ authority: "hard",
487
549
  defaultEnabled: false,
488
550
  category: "Workflow",
489
551
  params: {
@@ -505,6 +567,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
505
567
  impact: "Branches without PRs don't get reviewed.",
506
568
  description: "Require a pull request to exist for the current branch before Claude stops",
507
569
  match: { events: ["Stop"] },
570
+ authority: "hard",
508
571
  defaultEnabled: false,
509
572
  category: "Workflow",
510
573
  params: {
@@ -521,6 +584,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
521
584
  impact: "Conflicting branches can't merge — surface them early.",
522
585
  description: "Require the current branch to merge cleanly with the base branch before Claude stops",
523
586
  match: { events: ["Stop"] },
587
+ authority: "hard",
524
588
  defaultEnabled: false,
525
589
  category: "Workflow",
526
590
  params: {
@@ -537,6 +601,7 @@ export const POLICY_CATALOG: PolicyCatalogEntry[] = [
537
601
  impact: "Failing CI blocks deploy.",
538
602
  description: "Require CI checks to pass on the current HEAD commit before Claude stops (ignores stale runs on prior commits)",
539
603
  match: { events: ["Stop"] },
604
+ authority: "hard",
540
605
  defaultEnabled: false,
541
606
  category: "Workflow",
542
607
  },