failproofai 1.0.10-beta.1 → 1.0.10

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 (113) 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 +4 -4
  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.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.rsc +7 -7
  10. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +6 -6
  11. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
  12. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  14. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.rsc +14 -14
  18. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +13 -13
  20. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  24. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  26. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  28. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  29. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  30. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/index.html +1 -1
  32. package/.next/standalone/.next/server/app/index.rsc +14 -14
  33. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +13 -13
  34. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +14 -14
  35. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  36. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  37. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
  40. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  43. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  46. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  47. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  50. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  53. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o07qi9._.js +1 -1
  56. package/.next/standalone/.next/server/chunks/_0tovk6q._.js +1 -1
  57. package/.next/standalone/.next/server/chunks/_0trp3yc._.js +1 -1
  58. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4v._.js +1 -1
  59. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__04usis8._.js +2 -2
  60. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__056wjo4._.js +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0n0xg95._.js +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0a2-9ht._.js → [root-of-the-server]__0oqrl71._.js} +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0rwtwpm._.js +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11mayhe._.js +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15578wp._.js +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1m_svbe._.js +2 -2
  67. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1pprgri._.js +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1q4p5b8._.js +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/_042cgl1._.js +1 -1
  70. package/.next/standalone/.next/server/chunks/ssr/_08x1r5t._.js +1 -1
  71. package/.next/standalone/.next/server/chunks/ssr/_0bqoto4._.js +1 -1
  72. package/.next/standalone/.next/server/chunks/ssr/{_1n-mym7._.js → _0yq5_3a._.js} +1 -1
  73. package/.next/standalone/.next/server/chunks/ssr/{_0krq5f0._.js → _16pa9ht._.js} +3 -3
  74. package/.next/standalone/.next/server/chunks/ssr/_1zopuov._.js +1 -1
  75. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo.js +2 -2
  76. package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9sni._.js +1 -1
  77. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47._.js +1 -1
  78. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x._.js +1 -1
  79. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpc._.js +1 -1
  80. package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h4._.js +1 -1
  81. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  82. package/.next/standalone/.next/server/pages/404.html +1 -1
  83. package/.next/standalone/.next/server/pages/500.html +1 -1
  84. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
  86. package/.next/standalone/.next/static/chunks/{3q8vesnwk_r0i.js → 03h3b-uomi7_d.js} +1 -1
  87. package/.next/standalone/.next/static/chunks/078dofaxvjgpd.js +1 -0
  88. package/.next/standalone/.next/static/chunks/1fqukzzowjflt.js +1 -0
  89. package/.next/standalone/.next/static/chunks/1lyg_puttohbc.js +1 -0
  90. package/.next/standalone/.next/static/chunks/{3ztf2h_fv6_t9.js → 2hg_bp8z_vm2g.js} +1 -1
  91. package/.next/standalone/.next/static/chunks/{0s4cko_weh6pi.js → 2j92xul6y24_v.js} +1 -1
  92. package/.next/standalone/.next/static/chunks/{1-k37ijadiv9h.js → 2kj826h1w9r47.js} +1 -1
  93. package/.next/standalone/.next/static/chunks/{3vk6jdkxvb7yk.js → 3mjfvng11xnoo.js} +1 -1
  94. package/.next/standalone/.next/static/chunks/{2cvvec76j9bwq.js → 3nkc2jlgyygda.js} +1 -1
  95. package/.next/standalone/.next/static/chunks/{3z7mx6me_j7d3.js → 3ob2161ap37ul.js} +1 -1
  96. package/.next/standalone/.next/static/chunks/{18reoqya39rov.js → 3u1s8dsqiean5.js} +1 -1
  97. package/.next/standalone/hermes-plugin/README.md +10 -5
  98. package/.next/standalone/hermes-plugin/__init__.py +77 -26
  99. package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
  100. package/.next/standalone/package.json +5 -5
  101. package/.next/standalone/server.js +1 -1
  102. package/dist/cli.mjs +6 -6
  103. package/dist/worker.mjs +1 -1
  104. package/hermes-plugin/README.md +10 -5
  105. package/hermes-plugin/__init__.py +77 -26
  106. package/hermes-plugin/plugin.yaml +1 -1
  107. package/package.json +5 -5
  108. package/.next/standalone/.next/static/chunks/0yclxmfppc_8e.js +0 -1
  109. package/.next/standalone/.next/static/chunks/2o9-3ff26v4yd.js +0 -1
  110. package/.next/standalone/.next/static/chunks/3tj1zi4xv-bll.js +0 -1
  111. /package/.next/standalone/.next/static/{OJTzlkhxVSWnwhlF2Q7m3 → ECs8__hcNabYV58WfDh-3}/_buildManifest.js +0 -0
  112. /package/.next/standalone/.next/static/{OJTzlkhxVSWnwhlF2Q7m3 → ECs8__hcNabYV58WfDh-3}/_clientMiddlewareManifest.js +0 -0
  113. /package/.next/standalone/.next/static/{OJTzlkhxVSWnwhlF2Q7m3 → ECs8__hcNabYV58WfDh-3}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[4614,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("00854ec9e90b56699593285b0ed4967ff5a920a8f9",d.callServer,void 0,d.findSourceMapURL,"getJevSettingsAction"),f=(0,d.createServerReference)("00d2f7e8ab18b31805268064ea3bca623cbe30a982",d.callServer,void 0,d.findSourceMapURL,"removeJevConfigAction"),g=(0,d.createServerReference)("40ab4f061fadc1c208771f481c6aa066694ca5c508",d.callServer,void 0,d.findSourceMapURL,"saveJevConfigAction"),h=(0,d.createServerReference)("4055d4ce76d28e7e3c730848d81f3b85af9328bb26",d.callServer,void 0,d.findSourceMapURL,"setJevModeAction");var i=a.i(18952);let j=[{value:"typesafe",label:"typesafe"},{value:"openrouter",label:"openrouter"},{value:"vercel",label:"vercel ai gateway"},{value:"cloudflare",label:"cloudflare workers ai"},{value:"custom",label:"custom endpoint"}],k=[{value:"enforce",label:"enforce — jev's verdict counts"},{value:"observe",label:"observe — log only, regex decides"},{value:"off",label:"off — keep this config, don't ask jev"}],l="failproofai";function m(a){return{provider:a.provider&&a.provider!==l?a.provider:"typesafe",baseUrl:a.baseUrl,accountId:a.accountId,mode:a.mode}}function n({id:a,label:c,hint:d,children:e}){return(0,b.jsxs)("div",{className:"set-field",children:[(0,b.jsx)("label",{className:"set-field-label",htmlFor:a,children:c}),e,d?(0,b.jsx)("span",{className:"set-hint",children:d}):null]})}a.s(["default",0,function({initial:a}){var d,o,p;let q,[r,s]=(0,c.useState)(a),[t,u]=(0,c.useState)(a?m(a):{provider:"typesafe",baseUrl:"",accountId:"",mode:"enforce"}),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(!1),D=(0,c.useRef)(!0),E=(0,c.useRef)(!1),F=(0,c.useCallback)(async()=>{try{let a=await e();if(!D.current)return;s(a),E.current||u(m(a))}catch{}},[]);(0,c.useEffect)(()=>(D.current=!0,F(),()=>{D.current=!1}),[F]),(0,c.useEffect)(()=>{let a=()=>void F();return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[F]);let G=(0,c.useCallback)((a,b)=>{E.current=!0,u(c=>({...c,[a]:b}))},[]),H=(0,c.useCallback)(async()=>{y(!0),A(null);try{let a=await g({provider:t.provider,baseUrl:t.baseUrl,accountId:t.accountId,mode:t.mode,token:v});if(!a.ok){A(a.problem),C(!0===a.needsToken);return}E.current=!1,C(!1),w(""),s(a.view),u(m(a.view)),(0,i.toast)(a.view.on?"jev is on.":"saved.")}catch{A("could not save that.")}finally{y(!1)}},[t,v]),I=(0,c.useCallback)(async a=>{y(!0),A(null);try{let b=await h(a);if(!b.ok)return void A(b.problem);E.current=!1,s(b.view),u(m(b.view)),(0,i.toast)("off"===a?"jev is off. hooks run the regex policies.":`jev is on, in ${a} mode.`)}catch{A("could not switch that.")}finally{y(!1)}},[]),J=(0,c.useCallback)(async()=>{y(!0),A(null),C(!1);try{let a=await f();if(!a.ok)return void A(a.problem);E.current=!1,w(""),s(a.view),u(m(a.view)),(0,i.toast)("jev is off. hooks run the regex policies.")}catch{A("could not turn that off.")}finally{y(!1)}},[]),K=null!==r&&"absent"!==r.status,L=r?.provider===l,M=r?.token,N=B?"needed for this save — type the token for this endpoint":M?"cloud"===M.source?"from this machine's FailproofAI Cloud connection":"env"===M.source?"configured, read from the environment — leave blank to keep it":"configured — leave blank to keep it":r?.status==="key-missing"?"read from the environment, which is not set in this shell — leave blank to keep it that way":"sent as a bearer token; stored owner-only at 0600";return(0,b.jsxs)("div",{className:"set-cell set-jev",children:[(0,b.jsx)("h2",{className:"set-cell-title",children:"jev · semantic evaluation"}),(0,b.jsx)("div",{className:"set-row set-row-main",children:(0,b.jsxs)("div",{className:"set-row-copy",children:[(0,b.jsx)("span",{className:r?.on?"set-strong":"set-dim",children:null===r?"reading…":r.on?`on. every judged command is also asked of ${(d=r.provider)===l?"FailproofAI Cloud":d??""}.`:"off"===r.status?"off — switched off. hooks run the regex policies exactly as before.":"not-connected"===r.status?"off — this machine is not connected to FailproofAI Cloud. hooks run the regex policies.":"key-lacks-jev"===r.status?"off — no jev key is stored for this machine's FailproofAI Cloud connection. hooks run the regex policies.":"key-missing"===r.status?"off for this dashboard — FAILPROOFAI_JEV_API_KEY is not set in its environment. hooks run the regex policies wherever it is unset, including under the daemon; a session that sets it still consults jev.":"off. hooks run the regex policies exactly as before."}),(0,b.jsx)("span",{className:"set-dim",children:r?.on?"observe"===r.mode?"observe: jev's answers are logged, the regex result is what gets enforced.":"enforce: jev's answers can clear a reviewable deny.":L?"through FailproofAI Cloud, on your org's plan — no endpoint or token of your own.":"a second opinion on the commands the regex policies flag. needs your own endpoint and token."})]})}),r&&(0,b.jsx)("dl",{className:"set-how-list set-jev-cloud",children:(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"FailproofAI Cloud connection"}),(0,b.jsx)("dd",{className:"set-how-body",children:function(a){if(!a||!a.connected)return a?.jev==="yes"?"a jev key is stored, but no connection is":"not connected";let b=a.org??a.host??"connected",c="yes"===a.jev?"key carries jev":"refused"===a.jev?"jev key refused — credentials.json is not owner-only":"no jev key stored";return`connected to ${b} \xb7 ${c}`}(r.cloud)})]})}),r&&K&&(0,b.jsxs)("dl",{className:"set-how-list",children:[L&&(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"provider"}),(0,b.jsx)("dd",{className:"set-how-body",children:r.cloud?.host?`FailproofAI Cloud \xb7 ${r.cloud.host}`:"FailproofAI Cloud"})]}),(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"model"}),(0,b.jsx)("dd",{className:"set-how-body",children:function(a){switch(a.kind){case"id":return a.id;case"withheld":return"set to something that is not a model id — not shown here, in case it is a key";default:return"the provider's default"}}(r.model)})]}),(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"token"}),(0,b.jsx)("dd",{className:"set-how-body",children:M?"cloud"===M.source?"FailproofAI Cloud connection":"env"===M.source?"from FAILPROOFAI_JEV_API_KEY":"configured":L?r.cloud?.connected?"none stored for this connection":"none — this machine is not connected":"none stored"})]}),r.reviewable&&(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"reviewable"}),(0,b.jsx)("dd",{className:"set-how-body",children:r.reviewable.summary})]}),r.stats&&r.stats.total>0&&(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"fallbacks"}),(0,b.jsx)("dd",{className:"set-how-body",children:`${(o=r.stats.fallbackRate,`${Math.round(100*o)}%`)} of ${r.stats.total} calls in the last ${Number.isInteger(q=(p=r.stats.windowMs)/36e5)&&q>=1?q%24==0?`${q/24}d`:`${q}h`:`${Math.max(1,Math.round(p/6e4))}m`} fell back to the regex engine.`})]})]}),r?.problem&&(0,b.jsxs)("p",{className:"set-warn",children:[r.problem,r.fix?` — ${r.fix}`:""]}),r?.reviewable?.problem&&(0,b.jsx)("p",{className:"set-warn",children:r.reviewable.problem}),(0,b.jsx)("div",{className:"set-rule"}),L?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"set-jev-fields",children:(0,b.jsx)(n,{id:"jev-cloud-mode",label:"mode",hint:"the endpoint and key come from this machine's FailproofAI Cloud connection",children:(0,b.jsx)("select",{id:"jev-cloud-mode",className:"set-select",value:r?.mode==="enforce"?"enforce":"observe",disabled:x||r?.mode==="off",onChange:a=>void I("enforce"===a.target.value?"enforce":"observe"),children:k.filter(a=>"off"!==a.value).map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value))})})}),z&&(0,b.jsx)("p",{className:"set-warn",children:z}),(0,b.jsx)("div",{className:"set-actions set-jev-actions",children:(0,b.jsx)("button",{type:"button",className:"btn btn-press",disabled:x,onClick:()=>void I(r?.mode==="off"?"observe":"off"),children:x?"[ switching… ]":r?.mode==="off"?"[ turn jev on ]":"[ turn jev off ]"})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"set-jev-fields",children:[(0,b.jsx)(n,{id:"jev-provider",label:"provider",children:(0,b.jsx)("select",{id:"jev-provider",className:"set-select",value:t.provider,disabled:x,onChange:a=>G("provider",a.target.value),children:j.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value))})}),(0,b.jsx)(n,{id:"jev-url",label:"endpoint url",hint:["custom"===t.provider?"required — https, or http to localhost in observe mode":"leave blank for the provider's own api",r?.baseUrlQueryWithheld?"the stored url's query string is not shown here — leave the url as it is to keep it":null].filter(Boolean).join(" · "),children:(0,b.jsx)("input",{id:"jev-url",type:"text",className:"set-text",inputMode:"url",autoComplete:"off",spellCheck:!1,placeholder:"custom"===t.provider?"https://…":"the provider's own api",value:t.baseUrl,disabled:x,onChange:a=>G("baseUrl",a.target.value)})}),"cloudflare"===t.provider&&(0,b.jsx)(n,{id:"jev-account",label:"account id",hint:"32 lowercase hex characters",children:(0,b.jsx)("input",{id:"jev-account",type:"text",className:"set-text",autoComplete:"off",spellCheck:!1,value:t.accountId,disabled:x,onChange:a=>G("accountId",a.target.value)})}),(0,b.jsx)(n,{id:"jev-token",label:"token",hint:N,children:(0,b.jsx)("input",{id:"jev-token",type:"password",className:"set-text",autoComplete:"off",spellCheck:!1,placeholder:M?"•••• kept":"",value:v,disabled:x,"aria-invalid":B||void 0,onChange:a=>{E.current=!0,w(a.target.value)}})}),(0,b.jsx)(n,{id:"jev-mode",label:"mode",children:(0,b.jsx)("select",{id:"jev-mode",className:"set-select",value:t.mode,disabled:x,onChange:a=>G("mode",a.target.value),children:k.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value))})})]}),z&&(0,b.jsx)("p",{className:"set-warn",children:z}),(0,b.jsxs)("div",{className:"set-actions set-jev-actions",children:[(0,b.jsx)("button",{type:"button",className:"btn btn-press",disabled:x,onClick:()=>void H(),children:x?"[ saving… ]":K?"[ save changes ]":"[ turn jev on ]"}),K&&(0,b.jsx)("button",{type:"button",className:"set-link",disabled:x,onClick:()=>void J(),children:"turn jev off"})]})]})]})}],4614)},41857,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("007cb04a000f802db12d1e2a647f435278fccef0ea",d.callServer,void 0,d.findSourceMapURL,"getScheduledAuditAction"),f=(0,d.createServerReference)("40a4ae25d47a986e9c1468503e4a906972a1b971bd",d.callServer,void 0,d.findSourceMapURL,"setAutoAuditAction"),g=(0,d.createServerReference)("40c5990e94d058100d3aaba5f3a52aaca6e1ead947",d.callServer,void 0,d.findSourceMapURL,"setAuditIntervalAction");var h=a.i(89564),i=a.i(4543),j=a.i(18952),k=a.i(80977);function l(a){return new Date(a).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function m(a,b){let c=a-b;if(c<=0)return"now";let d=Math.floor(c/864e5),e=Math.floor(c%864e5/36e5);return d>0?e>0?`${d}d ${e}h`:`${d}d`:e>0?`${e}h`:`${Math.max(1,Math.floor(c/6e4))}m`}function n(a){return a.toLocaleString("en-US")}function o({label:a,value:c,sub:d,tone:e}){return(0,b.jsxs)("div",{className:"set-stat",children:[(0,b.jsx)("div",{className:"set-stat-label",children:a}),(0,b.jsx)("div",{className:`set-stat-value${e?` ${e}`:""}`,children:c}),(0,b.jsx)("div",{className:"set-stat-sub",children:d??" "})]})}function p({lastRunAtMs:a,nextDueAtMs:c,now:d}){if(null==a||null==c||c<=a)return null;let e=Math.min(100,Math.max(0,(d-a)/(c-a)*100));return(0,b.jsxs)("div",{className:"tape","aria-hidden":"true",children:[(0,b.jsxs)("div",{className:"tape-rail",children:[(0,b.jsx)("div",{className:"tape-fill",style:{width:`${e}%`}}),(0,b.jsx)("div",{className:"tape-now",style:{left:`${e}%`}})]}),(0,b.jsxs)("div",{className:"tape-ends",children:[(0,b.jsxs)("span",{children:["last scan · ",l(a)]}),(0,b.jsxs)("span",{className:"tape-next",children:["next · ",m(c,d)]})]})]})}function q({enabled:a,onChange:c,disabled:d,label:e}){return(0,b.jsx)("button",{type:"button",role:"switch","aria-checked":a,"aria-label":e,disabled:d,onClick:c,className:"sw","data-on":a?"true":"false",children:(0,b.jsx)("span",{className:"sw-knob"})})}let r=[{label:"reads",body:"every session transcript on disk — your prompts, the files your agents read and wrote, and command output."},{label:"runs",body:"entirely on this machine. the transcripts never leave it."},{label:"sends",body:"counts, redacted examples, and this machine's name — and only when a scan finds something harmful."}];a.s(["default",0,function({initial:a,jevPanel:d}){let[s,t]=(0,c.useState)(a),[u,v]=(0,c.useState)(a?.auto??!1),[w,x]=(0,c.useState)(a?.intervalDays??7),[y,z]=(0,c.useState)(!1),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(null===a),[G,H]=(0,c.useState)(0),I=(0,c.useRef)(!0),J=(0,c.useRef)(null!==a),K=(0,c.useCallback)(async()=>{try{let a=await e();if(!I.current)return;t(a),J.current=!0,v(a.auto),x(a.intervalDays),H(Date.now()),F(!1)}catch{I.current&&!J.current&&F(!0)}},[]);(0,c.useEffect)(()=>(I.current=!0,K(),()=>{I.current=!1}),[K]),(0,c.useEffect)(()=>{let a=()=>void K();return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[K]);let L=s?.signedInAs??null,M=s?.daemon==="running",N=s?.daemon==="unsupported-platform",O=s?.schedule??null,P=s?.lastScan??null,Q=O?.lastExitCode!=null&&0!==O.lastExitCode&&75!==O.lastExitCode,R=(0,c.useCallback)(async()=>{z(!0);try{let a=await f(!0);if(!a.ok){if(v(!1),"unreachable"===a.reason)return void(0,j.toast)("could not reach the server. check your connection and try again.");await K(),D(!0),(0,j.toast)("that sign-in expired. one more code and it's on.");return}v(a.auto),(0,j.toast)("scheduled audits on."),await K()}catch{v(!1),(0,j.toast)("could not turn that on.")}finally{z(!1)}},[K]),S=(0,c.useCallback)(async()=>{if(u){z(!0);try{let a=await f(!1);a.ok&&v(a.auto),(0,j.toast)("scheduled audits off."),await K()}catch{(0,j.toast)("could not turn that off.")}finally{z(!1)}return}L?await R():D(!0)},[u,R,K,L]),T=(0,c.useCallback)(async a=>{z(!0);try{let b=await g(a);x(b.intervalDays),t(a=>a?{...a,intervalDays:b.intervalDays}:a),(0,j.toast)(`scanning every ${b.intervalDays} day${1===b.intervalDays?"":"s"}.`)}catch{x(s?.intervalDays??7),(0,j.toast)("could not save that.")}finally{z(!1)}},[s?.intervalDays]),U=(0,c.useCallback)(async()=>{z(!0);try{await fetch("/api/auth/logout",{method:"POST"}),(0,j.toast)("signed out. scans continue; digests pause."),await K()}catch{(0,j.toast)("could not sign out.")}finally{z(!1)}},[K]),V=(0,c.useCallback)(async()=>{if(!A){B(!0);try{await (0,h.triggerRun)({cli:[],since:"all",noCache:!1}),(0,j.toast)("scan complete."),await K()}catch(a){(0,j.toast)(a instanceof h.RerunError&&"timeout"===a.kind?"the scan is taking a while — it will finish in the background.":"the scan could not be completed.")}finally{B(!1)}}},[K,A]),W=(0,c.useCallback)(async a=>{D(!1),await K(),await R()},[R,K]),X=s?M?{value:"running",sub:null!=s.daemonStartedAtMs&&G>0?`up ${function(a){let b=Math.floor(a/864e5);if(b>0)return`${b}d`;let c=Math.floor(a/36e5);return c>0?`${c}h`:`${Math.max(1,Math.floor(a/6e4))}m`}(Math.max(0,G-s.daemonStartedAtMs))}`:"",tone:"ok"}:N?{value:"unavailable",sub:"not on this platform"}:"not-installed"===s.daemon?{value:"not installed",sub:"run failproofai config",tone:"warn"}:"unknown"===s.daemon?{value:"unknown",sub:"could not read it"}:{value:"stopped",sub:"run failproofai config",tone:"warn"}:{value:"…",sub:"reading"},Y=u?O?.nextDueAtMs==null?{value:"pending",sub:"after the next scan"}:{value:G>0?m(O.nextDueAtMs,G):"—",sub:l(O.nextDueAtMs)}:{value:"off",sub:"nothing scheduled"},Z=P?{value:(0,k.formatRelativeTime)(Date.parse(P.finishedAt)),sub:null!=P.sessionsScanned?`${n(P.sessionsScanned)} sessions`:"scanned"}:{value:"none yet",sub:"run one below"},$=P?null==P.findings?{value:"—",sub:"unreadable"}:{value:n(P.findings),sub:"this scan",...P.findings>0?{tone:"warn"}:{}}:{value:"—",sub:"no scan yet"};return(0,b.jsxs)("main",{className:"report",children:[(0,b.jsxs)("section",{className:"section set-sec",children:[(0,b.jsxs)("div",{className:"set-mast",children:[(0,b.jsx)("h1",{className:"set-title",children:"settings"}),(0,b.jsx)("p",{className:"set-lede",children:"keeping watch, so you don't have to."})]}),E?(0,b.jsxs)("div",{className:"set-console",children:[(0,b.jsx)("div",{className:"set-cell",children:(0,b.jsxs)("p",{className:"set-warn",children:["could not read this machine's settings. check that the dashboard can reach ",(0,b.jsx)("code",{children:"~/.failproofai/config.json"}),"."]})}),d]}):(0,b.jsxs)("div",{className:"set-console",children:[(0,b.jsxs)("div",{className:"set-stats",children:[(0,b.jsx)(o,{label:"daemon",...X}),(0,b.jsx)(o,{label:"next scan",...Y}),(0,b.jsx)(o,{label:"last scan",...Z}),(0,b.jsx)(o,{label:"findings",...$})]}),(0,b.jsxs)("div",{className:"set-cols",children:[(0,b.jsxs)("div",{className:"set-cell set-config",children:[(0,b.jsx)("h2",{className:"set-cell-title",children:"scheduled audit"}),(0,b.jsxs)("div",{className:"set-row set-row-main",children:[(0,b.jsx)(q,{enabled:u,disabled:y||null===s,onChange:()=>void S(),label:u?"turn off scheduled audits":"turn on scheduled audits"}),(0,b.jsxs)("div",{className:"set-row-copy",children:[(0,b.jsx)("span",{className:"set-strong",children:u?"scanning on a schedule.":"scan on a schedule."}),(0,b.jsx)("span",{className:"set-dim",children:u?"you'll get an email only when a scan finds something.":"off. nothing runs and nothing is sent."})]})]}),(0,b.jsxs)("div",{className:"set-row set-row-interval",children:[(0,b.jsx)("span",{className:"set-dim",children:"scan every"}),(0,b.jsx)("input",{type:"number",className:"set-num",min:1,max:90,value:w,disabled:y||null===s,"aria-label":"days between scheduled scans",onChange:a=>x(Number(a.target.value)),onBlur:a=>{let b=Number(a.target.value);Number.isFinite(b)?b!==s?.intervalDays&&T(b):x(s?.intervalDays??7)}}),(0,b.jsx)("span",{className:"set-dim",children:"days"}),(0,b.jsxs)("span",{className:"set-hint",children:[1,"–",90]})]}),(0,b.jsx)("div",{className:"set-rule"}),(0,b.jsx)("div",{className:"set-row set-row-identity",children:L?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"set-dim",children:"reports go to"}),(0,b.jsx)("span",{className:"set-email",children:L.email}),(0,b.jsx)("button",{type:"button",className:"set-link",disabled:y,onClick:()=>void U(),children:"sign out"})]}):u?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"set-warn",children:"signed out — scans continue, digests are paused."}),(0,b.jsx)("button",{type:"button",className:"set-link",disabled:y,onClick:()=>D(!0),children:"sign in to resume"})]}):(0,b.jsx)("span",{className:"set-dim",children:"turning this on asks for an email, so there is somewhere to send the report."})}),u&&s&&!M&&(0,b.jsx)("p",{className:"set-warn",children:N?"the background service isn't available on this platform, so scheduled scans can't run here. you can still run one now.":"not-installed"===s.daemon?"the background service isn't installed, so nothing will run on the timer. install it with `failproofai config`.":"the background service is stopped, so nothing will run until it starts. repair it with `failproofai config`."}),Q&&(0,b.jsxs)("p",{className:"set-warn",children:["the last scheduled scan exited ",O?.lastExitCode,". the next one will still run."]}),(0,b.jsx)("div",{className:"set-actions",children:(0,b.jsx)("button",{type:"button",className:"btn btn-press",disabled:A,onClick:()=>void V(),children:A?"[ scanning… ]":"[ run a scan now ]"})})]}),(0,b.jsxs)("div",{className:"set-cell set-how",children:[(0,b.jsx)("h2",{className:"set-cell-title",children:"how it works"}),(0,b.jsx)("dl",{className:"set-how-list",children:r.map(a=>(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:a.label}),(0,b.jsx)("dd",{className:"set-how-body",children:a.body})]},a.label))})]})]}),d]}),u&&G>0&&(0,b.jsx)(p,{lastRunAtMs:O?.lastRunAtMs??null,nextDueAtMs:O?.nextDueAtMs??null,now:G})]}),(0,b.jsx)(i.AuthDialog,{open:C,source:"settings_scheduled_audit",headline:"where should the report go?",subhead:"we'll send a one-time code to confirm.",onClose:()=>D(!1),onAuthed:a=>void W(a)})]})}],41857)}];
1
+ module.exports=[4614,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("00d5f65b37d57994d102a4795b97639ca80427d9b6",d.callServer,void 0,d.findSourceMapURL,"getJevSettingsAction"),f=(0,d.createServerReference)("00ad1de5b7a8b620e935e581a6d40c492ac90de5e0",d.callServer,void 0,d.findSourceMapURL,"removeJevConfigAction"),g=(0,d.createServerReference)("40c3674bfdb44a95095fda0a0268a03bf6f7b246fb",d.callServer,void 0,d.findSourceMapURL,"saveJevConfigAction"),h=(0,d.createServerReference)("40bd7ee875eebd400ed297b4dbb64db1feed4356aa",d.callServer,void 0,d.findSourceMapURL,"setJevModeAction");var i=a.i(18952);let j=[{value:"typesafe",label:"typesafe"},{value:"openrouter",label:"openrouter"},{value:"vercel",label:"vercel ai gateway"},{value:"cloudflare",label:"cloudflare workers ai"},{value:"custom",label:"custom endpoint"}],k=[{value:"enforce",label:"enforce — jev's verdict counts"},{value:"observe",label:"observe — log only, regex decides"},{value:"off",label:"off — keep this config, don't ask jev"}],l="failproofai";function m(a){return{provider:a.provider&&a.provider!==l?a.provider:"typesafe",baseUrl:a.baseUrl,accountId:a.accountId,mode:a.mode}}function n({id:a,label:c,hint:d,children:e}){return(0,b.jsxs)("div",{className:"set-field",children:[(0,b.jsx)("label",{className:"set-field-label",htmlFor:a,children:c}),e,d?(0,b.jsx)("span",{className:"set-hint",children:d}):null]})}a.s(["default",0,function({initial:a}){var d,o,p;let q,[r,s]=(0,c.useState)(a),[t,u]=(0,c.useState)(a?m(a):{provider:"typesafe",baseUrl:"",accountId:"",mode:"enforce"}),[v,w]=(0,c.useState)(""),[x,y]=(0,c.useState)(!1),[z,A]=(0,c.useState)(null),[B,C]=(0,c.useState)(!1),D=(0,c.useRef)(!0),E=(0,c.useRef)(!1),F=(0,c.useCallback)(async()=>{try{let a=await e();if(!D.current)return;s(a),E.current||u(m(a))}catch{}},[]);(0,c.useEffect)(()=>(D.current=!0,F(),()=>{D.current=!1}),[F]),(0,c.useEffect)(()=>{let a=()=>void F();return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[F]);let G=(0,c.useCallback)((a,b)=>{E.current=!0,u(c=>({...c,[a]:b}))},[]),H=(0,c.useCallback)(async()=>{y(!0),A(null);try{let a=await g({provider:t.provider,baseUrl:t.baseUrl,accountId:t.accountId,mode:t.mode,token:v});if(!a.ok){A(a.problem),C(!0===a.needsToken);return}E.current=!1,C(!1),w(""),s(a.view),u(m(a.view)),(0,i.toast)(a.view.on?"jev is on.":"saved.")}catch{A("could not save that.")}finally{y(!1)}},[t,v]),I=(0,c.useCallback)(async a=>{y(!0),A(null);try{let b=await h(a);if(!b.ok)return void A(b.problem);E.current=!1,s(b.view),u(m(b.view)),(0,i.toast)("off"===a?"jev is off. hooks run the regex policies.":`jev is on, in ${a} mode.`)}catch{A("could not switch that.")}finally{y(!1)}},[]),J=(0,c.useCallback)(async()=>{y(!0),A(null),C(!1);try{let a=await f();if(!a.ok)return void A(a.problem);E.current=!1,w(""),s(a.view),u(m(a.view)),(0,i.toast)("jev is off. hooks run the regex policies.")}catch{A("could not turn that off.")}finally{y(!1)}},[]),K=null!==r&&"absent"!==r.status,L=r?.provider===l,M=r?.token,N=B?"needed for this save — type the token for this endpoint":M?"cloud"===M.source?"from this machine's FailproofAI Cloud connection":"env"===M.source?"configured, read from the environment — leave blank to keep it":"configured — leave blank to keep it":r?.status==="key-missing"?"read from the environment, which is not set in this shell — leave blank to keep it that way":"sent as a bearer token; stored owner-only at 0600";return(0,b.jsxs)("div",{className:"set-cell set-jev",children:[(0,b.jsx)("h2",{className:"set-cell-title",children:"jev · semantic evaluation"}),(0,b.jsx)("div",{className:"set-row set-row-main",children:(0,b.jsxs)("div",{className:"set-row-copy",children:[(0,b.jsx)("span",{className:r?.on?"set-strong":"set-dim",children:null===r?"reading…":r.on?`on. every judged command is also asked of ${(d=r.provider)===l?"FailproofAI Cloud":d??""}.`:"off"===r.status?"off — switched off. hooks run the regex policies exactly as before.":"not-connected"===r.status?"off — this machine is not connected to FailproofAI Cloud. hooks run the regex policies.":"key-lacks-jev"===r.status?"off — no jev key is stored for this machine's FailproofAI Cloud connection. hooks run the regex policies.":"key-missing"===r.status?"off for this dashboard — FAILPROOFAI_JEV_API_KEY is not set in its environment. hooks run the regex policies wherever it is unset, including under the daemon; a session that sets it still consults jev.":"off. hooks run the regex policies exactly as before."}),(0,b.jsx)("span",{className:"set-dim",children:r?.on?"observe"===r.mode?"observe: jev's answers are logged, the regex result is what gets enforced.":"enforce: jev's answers can clear a reviewable deny.":L?"through FailproofAI Cloud, on your org's plan — no endpoint or token of your own.":"a second opinion on the commands the regex policies flag. needs your own endpoint and token."})]})}),r&&(0,b.jsx)("dl",{className:"set-how-list set-jev-cloud",children:(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"FailproofAI Cloud connection"}),(0,b.jsx)("dd",{className:"set-how-body",children:function(a){if(!a||!a.connected)return a?.jev==="yes"?"a jev key is stored, but no connection is":"not connected";let b=a.org??a.host??"connected",c="yes"===a.jev?"key carries jev":"refused"===a.jev?"jev key refused — credentials.json is not owner-only":"no jev key stored";return`connected to ${b} \xb7 ${c}`}(r.cloud)})]})}),r&&K&&(0,b.jsxs)("dl",{className:"set-how-list",children:[L&&(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"provider"}),(0,b.jsx)("dd",{className:"set-how-body",children:r.cloud?.host?`FailproofAI Cloud \xb7 ${r.cloud.host}`:"FailproofAI Cloud"})]}),(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"model"}),(0,b.jsx)("dd",{className:"set-how-body",children:function(a){switch(a.kind){case"id":return a.id;case"withheld":return"set to something that is not a model id — not shown here, in case it is a key";default:return"the provider's default"}}(r.model)})]}),(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"token"}),(0,b.jsx)("dd",{className:"set-how-body",children:M?"cloud"===M.source?"FailproofAI Cloud connection":"env"===M.source?"from FAILPROOFAI_JEV_API_KEY":"configured":L?r.cloud?.connected?"none stored for this connection":"none — this machine is not connected":"none stored"})]}),r.reviewable&&(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"reviewable"}),(0,b.jsx)("dd",{className:"set-how-body",children:r.reviewable.summary})]}),r.stats&&r.stats.total>0&&(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:"fallbacks"}),(0,b.jsx)("dd",{className:"set-how-body",children:`${(o=r.stats.fallbackRate,`${Math.round(100*o)}%`)} of ${r.stats.total} calls in the last ${Number.isInteger(q=(p=r.stats.windowMs)/36e5)&&q>=1?q%24==0?`${q/24}d`:`${q}h`:`${Math.max(1,Math.round(p/6e4))}m`} fell back to the regex engine.`})]})]}),r?.problem&&(0,b.jsxs)("p",{className:"set-warn",children:[r.problem,r.fix?` — ${r.fix}`:""]}),r?.reviewable?.problem&&(0,b.jsx)("p",{className:"set-warn",children:r.reviewable.problem}),(0,b.jsx)("div",{className:"set-rule"}),L?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"set-jev-fields",children:(0,b.jsx)(n,{id:"jev-cloud-mode",label:"mode",hint:"the endpoint and key come from this machine's FailproofAI Cloud connection",children:(0,b.jsx)("select",{id:"jev-cloud-mode",className:"set-select",value:r?.mode==="enforce"?"enforce":"observe",disabled:x||r?.mode==="off",onChange:a=>void I("enforce"===a.target.value?"enforce":"observe"),children:k.filter(a=>"off"!==a.value).map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value))})})}),z&&(0,b.jsx)("p",{className:"set-warn",children:z}),(0,b.jsx)("div",{className:"set-actions set-jev-actions",children:(0,b.jsx)("button",{type:"button",className:"btn btn-press",disabled:x,onClick:()=>void I(r?.mode==="off"?"observe":"off"),children:x?"[ switching… ]":r?.mode==="off"?"[ turn jev on ]":"[ turn jev off ]"})})]}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"set-jev-fields",children:[(0,b.jsx)(n,{id:"jev-provider",label:"provider",children:(0,b.jsx)("select",{id:"jev-provider",className:"set-select",value:t.provider,disabled:x,onChange:a=>G("provider",a.target.value),children:j.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value))})}),(0,b.jsx)(n,{id:"jev-url",label:"endpoint url",hint:["custom"===t.provider?"required — https, or http to localhost in observe mode":"leave blank for the provider's own api",r?.baseUrlQueryWithheld?"the stored url's query string is not shown here — leave the url as it is to keep it":null].filter(Boolean).join(" · "),children:(0,b.jsx)("input",{id:"jev-url",type:"text",className:"set-text",inputMode:"url",autoComplete:"off",spellCheck:!1,placeholder:"custom"===t.provider?"https://…":"the provider's own api",value:t.baseUrl,disabled:x,onChange:a=>G("baseUrl",a.target.value)})}),"cloudflare"===t.provider&&(0,b.jsx)(n,{id:"jev-account",label:"account id",hint:"32 lowercase hex characters",children:(0,b.jsx)("input",{id:"jev-account",type:"text",className:"set-text",autoComplete:"off",spellCheck:!1,value:t.accountId,disabled:x,onChange:a=>G("accountId",a.target.value)})}),(0,b.jsx)(n,{id:"jev-token",label:"token",hint:N,children:(0,b.jsx)("input",{id:"jev-token",type:"password",className:"set-text",autoComplete:"off",spellCheck:!1,placeholder:M?"•••• kept":"",value:v,disabled:x,"aria-invalid":B||void 0,onChange:a=>{E.current=!0,w(a.target.value)}})}),(0,b.jsx)(n,{id:"jev-mode",label:"mode",children:(0,b.jsx)("select",{id:"jev-mode",className:"set-select",value:t.mode,disabled:x,onChange:a=>G("mode",a.target.value),children:k.map(a=>(0,b.jsx)("option",{value:a.value,children:a.label},a.value))})})]}),z&&(0,b.jsx)("p",{className:"set-warn",children:z}),(0,b.jsxs)("div",{className:"set-actions set-jev-actions",children:[(0,b.jsx)("button",{type:"button",className:"btn btn-press",disabled:x,onClick:()=>void H(),children:x?"[ saving… ]":K?"[ save changes ]":"[ turn jev on ]"}),K&&(0,b.jsx)("button",{type:"button",className:"set-link",disabled:x,onClick:()=>void J(),children:"turn jev off"})]})]})]})}],4614)},41857,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(5050);let e=(0,d.createServerReference)("00265c36203c0a8354c803cb6be85bd71db9f72fff",d.callServer,void 0,d.findSourceMapURL,"getScheduledAuditAction"),f=(0,d.createServerReference)("40040d53c0382847a4c73f07e40136516306c6ef76",d.callServer,void 0,d.findSourceMapURL,"setAutoAuditAction"),g=(0,d.createServerReference)("40cdeb93745892bcc2de3532a7390760e09ac401a9",d.callServer,void 0,d.findSourceMapURL,"setAuditIntervalAction");var h=a.i(89564),i=a.i(4543),j=a.i(18952),k=a.i(80977);function l(a){return new Date(a).toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function m(a,b){let c=a-b;if(c<=0)return"now";let d=Math.floor(c/864e5),e=Math.floor(c%864e5/36e5);return d>0?e>0?`${d}d ${e}h`:`${d}d`:e>0?`${e}h`:`${Math.max(1,Math.floor(c/6e4))}m`}function n(a){return a.toLocaleString("en-US")}function o({label:a,value:c,sub:d,tone:e}){return(0,b.jsxs)("div",{className:"set-stat",children:[(0,b.jsx)("div",{className:"set-stat-label",children:a}),(0,b.jsx)("div",{className:`set-stat-value${e?` ${e}`:""}`,children:c}),(0,b.jsx)("div",{className:"set-stat-sub",children:d??" "})]})}function p({lastRunAtMs:a,nextDueAtMs:c,now:d}){if(null==a||null==c||c<=a)return null;let e=Math.min(100,Math.max(0,(d-a)/(c-a)*100));return(0,b.jsxs)("div",{className:"tape","aria-hidden":"true",children:[(0,b.jsxs)("div",{className:"tape-rail",children:[(0,b.jsx)("div",{className:"tape-fill",style:{width:`${e}%`}}),(0,b.jsx)("div",{className:"tape-now",style:{left:`${e}%`}})]}),(0,b.jsxs)("div",{className:"tape-ends",children:[(0,b.jsxs)("span",{children:["last scan · ",l(a)]}),(0,b.jsxs)("span",{className:"tape-next",children:["next · ",m(c,d)]})]})]})}function q({enabled:a,onChange:c,disabled:d,label:e}){return(0,b.jsx)("button",{type:"button",role:"switch","aria-checked":a,"aria-label":e,disabled:d,onClick:c,className:"sw","data-on":a?"true":"false",children:(0,b.jsx)("span",{className:"sw-knob"})})}let r=[{label:"reads",body:"every session transcript on disk — your prompts, the files your agents read and wrote, and command output."},{label:"runs",body:"entirely on this machine. the transcripts never leave it."},{label:"sends",body:"counts, redacted examples, and this machine's name — and only when a scan finds something harmful."}];a.s(["default",0,function({initial:a,jevPanel:d}){let[s,t]=(0,c.useState)(a),[u,v]=(0,c.useState)(a?.auto??!1),[w,x]=(0,c.useState)(a?.intervalDays??7),[y,z]=(0,c.useState)(!1),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(null===a),[G,H]=(0,c.useState)(0),I=(0,c.useRef)(!0),J=(0,c.useRef)(null!==a),K=(0,c.useCallback)(async()=>{try{let a=await e();if(!I.current)return;t(a),J.current=!0,v(a.auto),x(a.intervalDays),H(Date.now()),F(!1)}catch{I.current&&!J.current&&F(!0)}},[]);(0,c.useEffect)(()=>(I.current=!0,K(),()=>{I.current=!1}),[K]),(0,c.useEffect)(()=>{let a=()=>void K();return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[K]);let L=s?.signedInAs??null,M=s?.daemon==="running",N=s?.daemon==="unsupported-platform",O=s?.schedule??null,P=s?.lastScan??null,Q=O?.lastExitCode!=null&&0!==O.lastExitCode&&75!==O.lastExitCode,R=(0,c.useCallback)(async()=>{z(!0);try{let a=await f(!0);if(!a.ok){if(v(!1),"unreachable"===a.reason)return void(0,j.toast)("could not reach the server. check your connection and try again.");await K(),D(!0),(0,j.toast)("that sign-in expired. one more code and it's on.");return}v(a.auto),(0,j.toast)("scheduled audits on."),await K()}catch{v(!1),(0,j.toast)("could not turn that on.")}finally{z(!1)}},[K]),S=(0,c.useCallback)(async()=>{if(u){z(!0);try{let a=await f(!1);a.ok&&v(a.auto),(0,j.toast)("scheduled audits off."),await K()}catch{(0,j.toast)("could not turn that off.")}finally{z(!1)}return}L?await R():D(!0)},[u,R,K,L]),T=(0,c.useCallback)(async a=>{z(!0);try{let b=await g(a);x(b.intervalDays),t(a=>a?{...a,intervalDays:b.intervalDays}:a),(0,j.toast)(`scanning every ${b.intervalDays} day${1===b.intervalDays?"":"s"}.`)}catch{x(s?.intervalDays??7),(0,j.toast)("could not save that.")}finally{z(!1)}},[s?.intervalDays]),U=(0,c.useCallback)(async()=>{z(!0);try{await fetch("/api/auth/logout",{method:"POST"}),(0,j.toast)("signed out. scans continue; digests pause."),await K()}catch{(0,j.toast)("could not sign out.")}finally{z(!1)}},[K]),V=(0,c.useCallback)(async()=>{if(!A){B(!0);try{await (0,h.triggerRun)({cli:[],since:"all",noCache:!1}),(0,j.toast)("scan complete."),await K()}catch(a){(0,j.toast)(a instanceof h.RerunError&&"timeout"===a.kind?"the scan is taking a while — it will finish in the background.":"the scan could not be completed.")}finally{B(!1)}}},[K,A]),W=(0,c.useCallback)(async a=>{D(!1),await K(),await R()},[R,K]),X=s?M?{value:"running",sub:null!=s.daemonStartedAtMs&&G>0?`up ${function(a){let b=Math.floor(a/864e5);if(b>0)return`${b}d`;let c=Math.floor(a/36e5);return c>0?`${c}h`:`${Math.max(1,Math.floor(a/6e4))}m`}(Math.max(0,G-s.daemonStartedAtMs))}`:"",tone:"ok"}:N?{value:"unavailable",sub:"not on this platform"}:"not-installed"===s.daemon?{value:"not installed",sub:"run failproofai config",tone:"warn"}:"unknown"===s.daemon?{value:"unknown",sub:"could not read it"}:{value:"stopped",sub:"run failproofai config",tone:"warn"}:{value:"…",sub:"reading"},Y=u?O?.nextDueAtMs==null?{value:"pending",sub:"after the next scan"}:{value:G>0?m(O.nextDueAtMs,G):"—",sub:l(O.nextDueAtMs)}:{value:"off",sub:"nothing scheduled"},Z=P?{value:(0,k.formatRelativeTime)(Date.parse(P.finishedAt)),sub:null!=P.sessionsScanned?`${n(P.sessionsScanned)} sessions`:"scanned"}:{value:"none yet",sub:"run one below"},$=P?null==P.findings?{value:"—",sub:"unreadable"}:{value:n(P.findings),sub:"this scan",...P.findings>0?{tone:"warn"}:{}}:{value:"—",sub:"no scan yet"};return(0,b.jsxs)("main",{className:"report",children:[(0,b.jsxs)("section",{className:"section set-sec",children:[(0,b.jsxs)("div",{className:"set-mast",children:[(0,b.jsx)("h1",{className:"set-title",children:"settings"}),(0,b.jsx)("p",{className:"set-lede",children:"keeping watch, so you don't have to."})]}),E?(0,b.jsxs)("div",{className:"set-console",children:[(0,b.jsx)("div",{className:"set-cell",children:(0,b.jsxs)("p",{className:"set-warn",children:["could not read this machine's settings. check that the dashboard can reach ",(0,b.jsx)("code",{children:"~/.failproofai/config.json"}),"."]})}),d]}):(0,b.jsxs)("div",{className:"set-console",children:[(0,b.jsxs)("div",{className:"set-stats",children:[(0,b.jsx)(o,{label:"daemon",...X}),(0,b.jsx)(o,{label:"next scan",...Y}),(0,b.jsx)(o,{label:"last scan",...Z}),(0,b.jsx)(o,{label:"findings",...$})]}),(0,b.jsxs)("div",{className:"set-cols",children:[(0,b.jsxs)("div",{className:"set-cell set-config",children:[(0,b.jsx)("h2",{className:"set-cell-title",children:"scheduled audit"}),(0,b.jsxs)("div",{className:"set-row set-row-main",children:[(0,b.jsx)(q,{enabled:u,disabled:y||null===s,onChange:()=>void S(),label:u?"turn off scheduled audits":"turn on scheduled audits"}),(0,b.jsxs)("div",{className:"set-row-copy",children:[(0,b.jsx)("span",{className:"set-strong",children:u?"scanning on a schedule.":"scan on a schedule."}),(0,b.jsx)("span",{className:"set-dim",children:u?"you'll get an email only when a scan finds something.":"off. nothing runs and nothing is sent."})]})]}),(0,b.jsxs)("div",{className:"set-row set-row-interval",children:[(0,b.jsx)("span",{className:"set-dim",children:"scan every"}),(0,b.jsx)("input",{type:"number",className:"set-num",min:1,max:90,value:w,disabled:y||null===s,"aria-label":"days between scheduled scans",onChange:a=>x(Number(a.target.value)),onBlur:a=>{let b=Number(a.target.value);Number.isFinite(b)?b!==s?.intervalDays&&T(b):x(s?.intervalDays??7)}}),(0,b.jsx)("span",{className:"set-dim",children:"days"}),(0,b.jsxs)("span",{className:"set-hint",children:[1,"–",90]})]}),(0,b.jsx)("div",{className:"set-rule"}),(0,b.jsx)("div",{className:"set-row set-row-identity",children:L?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"set-dim",children:"reports go to"}),(0,b.jsx)("span",{className:"set-email",children:L.email}),(0,b.jsx)("button",{type:"button",className:"set-link",disabled:y,onClick:()=>void U(),children:"sign out"})]}):u?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"set-warn",children:"signed out — scans continue, digests are paused."}),(0,b.jsx)("button",{type:"button",className:"set-link",disabled:y,onClick:()=>D(!0),children:"sign in to resume"})]}):(0,b.jsx)("span",{className:"set-dim",children:"turning this on asks for an email, so there is somewhere to send the report."})}),u&&s&&!M&&(0,b.jsx)("p",{className:"set-warn",children:N?"the background service isn't available on this platform, so scheduled scans can't run here. you can still run one now.":"not-installed"===s.daemon?"the background service isn't installed, so nothing will run on the timer. install it with `failproofai config`.":"the background service is stopped, so nothing will run until it starts. repair it with `failproofai config`."}),Q&&(0,b.jsxs)("p",{className:"set-warn",children:["the last scheduled scan exited ",O?.lastExitCode,". the next one will still run."]}),(0,b.jsx)("div",{className:"set-actions",children:(0,b.jsx)("button",{type:"button",className:"btn btn-press",disabled:A,onClick:()=>void V(),children:A?"[ scanning… ]":"[ run a scan now ]"})})]}),(0,b.jsxs)("div",{className:"set-cell set-how",children:[(0,b.jsx)("h2",{className:"set-cell-title",children:"how it works"}),(0,b.jsx)("dl",{className:"set-how-list",children:r.map(a=>(0,b.jsxs)("div",{className:"set-how-row",children:[(0,b.jsx)("dt",{className:"set-how-label",children:a.label}),(0,b.jsx)("dd",{className:"set-how-body",children:a.body})]},a.label))})]})]}),d]}),u&&G>0&&(0,b.jsx)(p,{lastRunAtMs:O?.lastRunAtMs??null,nextDueAtMs:O?.nextDueAtMs??null,now:G})]}),(0,b.jsx)(i.AuthDialog,{open:C,source:"settings_scheduled_audit",headline:"where should the report go?",subhead:"we'll send a one-time code to confirm.",onClose:()=>D(!1),onAuthed:a=>void W(a)})]})}],41857)}];
2
2
 
3
3
  //# sourceMappingURL=app_settings_02tf1h4._.js.map
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/0cz1d0mv5g_q7.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/OJTzlkhxVSWnwhlF2Q7m3/_buildManifest.js",
11
- "static/OJTzlkhxVSWnwhlF2Q7m3/_ssgManifest.js",
12
- "static/OJTzlkhxVSWnwhlF2Q7m3/_clientMiddlewareManifest.js"
10
+ "static/ECs8__hcNabYV58WfDh-3/_buildManifest.js",
11
+ "static/ECs8__hcNabYV58WfDh-3/_ssgManifest.js",
12
+ "static/ECs8__hcNabYV58WfDh-3/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/1c6aptmytnu6q.js",
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/3_e_wg5_oay87.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1c6aptmytnu6q.js"/><script src="/_next/static/chunks/2yuzx8716maf0.js" async=""></script><script src="/_next/static/chunks/3i8rg2fv9nd6e.js" async=""></script><script src="/_next/static/chunks/0542cuk_va8g1.js" async=""></script><script src="/_next/static/chunks/turbopack-11dn2pegmg9_9.js" async=""></script><script src="/_next/static/chunks/1eyl7fzkmnkf_.js" async=""></script><script src="/_next/static/chunks/34jpdb2xjm-x7.js" async=""></script><script src="/_next/static/chunks/2o9-3ff26v4yd.js" async=""></script><script src="/_next/static/chunks/3xpjn3cdgm-7m.js" async=""></script><script src="/_next/static/chunks/3tj1zi4xv-bll.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Failproof AI - Hooks &amp; Project Monitor</title><meta name="description" content="Open-source hooks, policies, and project visualization for Claude Code &amp; Agents SDK"/><link rel="icon" href="/icon.svg"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><header class="app-header"><a href="https://github.com/failproofai/failproofai" target="_blank" rel="noopener noreferrer" class="h-brand" style="flex:none" aria-label="failproof ai · GitHub"><img src="/logo.svg" alt="failproof_ai" style="height:18px;display:block;flex-shrink:0"/></a><nav class="tabs" style="border:none;padding:0;gap:0"><a class="tab" href="/projects">projects</a><a class="tab" href="/policies">policies</a><a class="tab" href="/audit">audit</a></nav><div style="flex:1"></div><div class="h-meta"><span class="h-version">v<!-- -->1.0.10-beta.1</span></div><div class="h-actions"><div class="inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5"><button title="Refresh" class="inline-flex items-center justify-center rounded-md p-1.5 transition-colors text-muted-foreground hover:text-foreground hover:bg-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw w-3.5 h-3.5" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></button><div class="w-px h-4 bg-border"></div><div class="inline-flex items-center gap-0.5" role="group" aria-label="Auto-refresh interval"><button aria-pressed="true" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors bg-background text-foreground shadow-sm">Off</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">5s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">10s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">30s</button></div></div><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><a class="h-icon-btn" aria-label="settings" title="settings" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-3.5 h-3.5" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></a><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><div class="relative"><button class="justify-center rounded-md text-sm font-medium transition-[background-color,color,box-shadow,border-color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:opacity-50 disabled:pointer-events-none hover:bg-muted h-9 px-3 relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground" type="button" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-branch h-4 w-4" aria-hidden="true"><path d="M15 6a9 9 0 0 0-9 9V3"></path><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle></svg><span class="hidden sm:inline text-xs whitespace-nowrap">Reach Us</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3 w-3 transition-transform" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div></div></header><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed bottom-4 right-4 z-50 flex flex-col gap-2"></div><script src="/_next/static/chunks/1c6aptmytnu6q.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[12344,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"PostHogProvider\"]\n3:I[97917,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"GlobalErrorListeners\"]\n4:I[85881,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"AutoRefreshProvider\"]\n5:I[63780,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"Navbar\"]\n6:I[39756,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"default\"]\n7:I[8821,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\",\"/_next/static/chunks/3xpjn3cdgm-7m.js\"],\"default\"]\n8:I[37457,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"default\"]\n9:I[55574,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"Toaster\"]\na:I[97367,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"OutletBoundary\"]\nb:\"$Sreact.suspense\"\ne:I[97367,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"ViewportBoundary\"]\n10:I[97367,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"MetadataBoundary\"]\n12:I[53348,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\",\"/_next/static/chunks/3tj1zi4xv-bll.js\"],\"default\"]\n:HL[\"/_next/static/chunks/3_e_wg5_oay87.css\",\"style\"]\nd:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3_e_wg5_oay87.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/2o9-3ff26v4yd.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"disabledPages\":[]}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$7\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3xpjn3cdgm-7m.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],[\"$\",\"$L9\",null,{}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$La\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@c\"}]}]]}],{},null,false,null]},null,false,\"$d\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L11\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3_e_wg5_oay87.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"OJTzlkhxVSWnwhlF2Q7m3\"}\n"])</script><script>self.__next_f.push([1,"d:C\nf:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[27201,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/2o9-3ff26v4yd.js\"],\"IconMark\"]\nc:null\n11:[[\"$\",\"title\",\"0\",{\"children\":\"Failproof AI - Hooks \u0026 Project Monitor\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source hooks, policies, and project visualization for Claude Code \u0026 Agents SDK\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg\"}],[\"$\",\"$L13\",\"3\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/logo.svg"/><link rel="stylesheet" href="/_next/static/chunks/3_e_wg5_oay87.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1c6aptmytnu6q.js"/><script src="/_next/static/chunks/2yuzx8716maf0.js" async=""></script><script src="/_next/static/chunks/3i8rg2fv9nd6e.js" async=""></script><script src="/_next/static/chunks/0542cuk_va8g1.js" async=""></script><script src="/_next/static/chunks/turbopack-11dn2pegmg9_9.js" async=""></script><script src="/_next/static/chunks/1eyl7fzkmnkf_.js" async=""></script><script src="/_next/static/chunks/34jpdb2xjm-x7.js" async=""></script><script src="/_next/static/chunks/1lyg_puttohbc.js" async=""></script><script src="/_next/static/chunks/3xpjn3cdgm-7m.js" async=""></script><script src="/_next/static/chunks/078dofaxvjgpd.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>Failproof AI - Hooks &amp; Project Monitor</title><meta name="description" content="Open-source hooks, policies, and project visualization for Claude Code &amp; Agents SDK"/><link rel="icon" href="/icon.svg"/><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body class="antialiased"><div hidden=""><!--$--><!--/$--></div><header class="app-header"><a href="https://github.com/failproofai/failproofai" target="_blank" rel="noopener noreferrer" class="h-brand" style="flex:none" aria-label="failproof ai · GitHub"><img src="/logo.svg" alt="failproof_ai" style="height:18px;display:block;flex-shrink:0"/></a><nav class="tabs" style="border:none;padding:0;gap:0"><a class="tab" href="/projects">projects</a><a class="tab" href="/policies">policies</a><a class="tab" href="/audit">audit</a></nav><div style="flex:1"></div><div class="h-meta"><span class="h-version">v<!-- -->1.0.10</span></div><div class="h-actions"><div class="inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5"><button title="Refresh" class="inline-flex items-center justify-center rounded-md p-1.5 transition-colors text-muted-foreground hover:text-foreground hover:bg-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw w-3.5 h-3.5" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></button><div class="w-px h-4 bg-border"></div><div class="inline-flex items-center gap-0.5" role="group" aria-label="Auto-refresh interval"><button aria-pressed="true" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors bg-background text-foreground shadow-sm">Off</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">5s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">10s</button><button aria-pressed="false" class="px-2 py-1 text-[11px] font-medium rounded-md transition-colors text-muted-foreground hover:text-foreground hover:bg-muted">30s</button></div></div><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><a class="h-icon-btn" aria-label="settings" title="settings" href="/settings"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-3.5 h-3.5" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></a><span style="width:1px;height:18px;background:var(--line);margin:0 6px"></span><div class="relative"><button class="justify-center rounded-md text-sm font-medium transition-[background-color,color,box-shadow,border-color] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:opacity-50 disabled:pointer-events-none hover:bg-muted h-9 px-3 relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground" type="button" aria-expanded="false" aria-haspopup="true"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-git-branch h-4 w-4" aria-hidden="true"><path d="M15 6a9 9 0 0 0-9 9V3"></path><circle cx="18" cy="6" r="3"></circle><circle cx="6" cy="18" r="3"></circle></svg><span class="hidden sm:inline text-xs whitespace-nowrap">Reach Us</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down h-3 w-3 transition-transform" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div></div></header><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed bottom-4 right-4 z-50 flex flex-col gap-2"></div><script src="/_next/static/chunks/1c6aptmytnu6q.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[12344,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"PostHogProvider\"]\n3:I[97917,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"GlobalErrorListeners\"]\n4:I[85881,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"AutoRefreshProvider\"]\n5:I[63780,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"Navbar\"]\n6:I[39756,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"default\"]\n7:I[8821,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\",\"/_next/static/chunks/3xpjn3cdgm-7m.js\"],\"default\"]\n8:I[37457,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"default\"]\n9:I[55574,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"Toaster\"]\na:I[97367,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"OutletBoundary\"]\nb:\"$Sreact.suspense\"\ne:I[97367,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"ViewportBoundary\"]\n10:I[97367,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"MetadataBoundary\"]\n12:I[53348,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\",\"/_next/static/chunks/078dofaxvjgpd.js\"],\"default\"]\n:HL[\"/_next/static/chunks/3_e_wg5_oay87.css\",\"style\"]\nd:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3_e_wg5_oay87.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/1lyg_puttohbc.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"className\":\"antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"children\":[[\"$\",\"$L5\",null,{\"disabledPages\":[]}],[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$7\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3xpjn3cdgm-7m.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],[\"$\",\"$L9\",null,{}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:1:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$La\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@c\"}]}]]}],{},null,false,null]},null,false,\"$d\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Le\",null,{\"children\":\"$Lf\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L11\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3_e_wg5_oay87.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"ECs8__hcNabYV58WfDh-3\"}\n"])</script><script>self.__next_f.push([1,"d:C\nf:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"13:I[27201,[\"/_next/static/chunks/1eyl7fzkmnkf_.js\",\"/_next/static/chunks/34jpdb2xjm-x7.js\",\"/_next/static/chunks/1lyg_puttohbc.js\"],\"IconMark\"]\nc:null\n11:[[\"$\",\"title\",\"0\",{\"children\":\"Failproof AI - Hooks \u0026 Project Monitor\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Open-source hooks, policies, and project visualization for Claude Code \u0026 Agents SDK\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg\"}],[\"$\",\"$L13\",\"3\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1c6aptmytnu6q.js"/><script src="/_next/static/chunks/2yuzx8716maf0.js" async=""></script><script src="/_next/static/chunks/3i8rg2fv9nd6e.js" async=""></script><script src="/_next/static/chunks/0542cuk_va8g1.js" async=""></script><script src="/_next/static/chunks/turbopack-11dn2pegmg9_9.js" async=""></script><script src="/_next/static/chunks/0yclxmfppc_8e.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/1c6aptmytnu6q.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/0yclxmfppc_8e.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/0yclxmfppc_8e.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/0yclxmfppc_8e.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/0yclxmfppc_8e.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/0yclxmfppc_8e.js\"],\"MetadataBoundary\"]\nc:I[53348,[\"/_next/static/chunks/0yclxmfppc_8e.js\"],\"default\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"OJTzlkhxVSWnwhlF2Q7m3\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/1c6aptmytnu6q.js"/><script src="/_next/static/chunks/2yuzx8716maf0.js" async=""></script><script src="/_next/static/chunks/3i8rg2fv9nd6e.js" async=""></script><script src="/_next/static/chunks/0542cuk_va8g1.js" async=""></script><script src="/_next/static/chunks/turbopack-11dn2pegmg9_9.js" async=""></script><script src="/_next/static/chunks/1fqukzzowjflt.js" async=""></script><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/1c6aptmytnu6q.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/1fqukzzowjflt.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/1fqukzzowjflt.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/1fqukzzowjflt.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/1fqukzzowjflt.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/1fqukzzowjflt.js\"],\"MetadataBoundary\"]\nc:I[53348,[\"/_next/static/chunks/1fqukzzowjflt.js\"],\"default\"]\n7:X\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4624]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"ECs8__hcNabYV58WfDh-3\"}\n"])</script><script>self.__next_f.push([1,"7:C\n9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"00c7cb2b7a83c0805daa426cd9ea5ca09d11849939\": {\n \"workers\": {\n \"app/_global-error/page\": {\n \"moduleId\": 39027,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/_not-found/page\": {\n \"moduleId\": 37985,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/audit/page\": {\n \"moduleId\": 99558,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/page\": {\n \"moduleId\": 24190,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/project/[name]/page\": {\n \"moduleId\": 165,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/project/[name]/session/[sessionId]/page\": {\n \"moduleId\": 21776,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/projects/page\": {\n \"moduleId\": 26035,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-telemetry-config.ts\",\n \"exportedName\": \"getTelemetryConfig\"\n },\n \"0037336e00b401287fa1d63b3c26c6b35ec1101200\": {\n \"workers\": {\n \"app/audit/page\": {\n \"moduleId\": 99558,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-audit-result.ts\",\n \"exportedName\": \"getAuditResultAction\"\n },\n \"406617c7a3c0d21fd723390b2d50480cfc5b57ee57\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-hook-activity.ts\",\n \"exportedName\": \"getHookActivityAction\"\n },\n \"602b0b0b4f2efa4ff1a1a7045ee50854d8521f10b2\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/project/[name]/session/[sessionId]/page\": {\n \"moduleId\": 21776,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-hook-activity.ts\",\n \"exportedName\": \"searchHookActivityAction\"\n },\n \"003b5f3acdf86fb4cbfcd7481e9f1f90e50548ef3f\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-active-pauses.ts\",\n \"exportedName\": \"getActivePausesAction\"\n },\n \"00b6660a2d5a7f3a794f8e6b9cda110dcc52265c04\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-hooks-config.ts\",\n \"exportedName\": \"getHooksConfigAction\"\n },\n \"60d91884595e41a8966ea238bc1a2b8e6c0d7cdb6c\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-hooks-config.ts\",\n \"exportedName\": \"toggleCustomPolicyAction\"\n },\n \"003cf6a2dc33f7bef322871de8a61e1daea1aadeee\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"addBundledPackWebAction\"\n },\n \"603c3f7dc1eb943162936a92f6c876abcad098d8ee\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"addPackWebAction\"\n },\n \"40d9774ab41ed0bcd96f2862d5c80d34c10387556c\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"previewPackWebAction\"\n },\n \"40d2a61deeea743561cb54a05d42bbdcb53e238625\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"removePackWebAction\"\n },\n \"70f7431f8131b498c8efeaba333009f346d2ccb07a\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"togglePackPolicyAction\"\n },\n \"6023a1d93e537af483920f1a8649208aa6c50e50dc\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/install-hooks-web.ts\",\n \"exportedName\": \"installHooksWebAction\"\n },\n \"605a17823f43d496bc36092405f15177e68b3e2919\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/install-hooks-web.ts\",\n \"exportedName\": \"removeHooksWebAction\"\n },\n \"60609c640fdbc65da142d91ffdbf1ebfd9e8713cfd\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-policy-params.ts\",\n \"exportedName\": \"updatePolicyParamsAction\"\n },\n \"007cb04a000f802db12d1e2a647f435278fccef0ea\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-scheduled-audit.ts\",\n \"exportedName\": \"getScheduledAuditAction\"\n },\n \"00854ec9e90b56699593285b0ed4967ff5a920a8f9\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-jev-config.ts\",\n \"exportedName\": \"getJevSettingsAction\"\n },\n \"00d2f7e8ab18b31805268064ea3bca623cbe30a982\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"removeJevConfigAction\"\n },\n \"40ab4f061fadc1c208771f481c6aa066694ca5c508\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"saveJevConfigAction\"\n },\n \"4055d4ce76d28e7e3c730848d81f3b85af9328bb26\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"setJevModeAction\"\n },\n \"40a4ae25d47a986e9c1468503e4a906972a1b971bd\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-scheduled-audit.ts\",\n \"exportedName\": \"setAutoAuditAction\"\n },\n \"40c5990e94d058100d3aaba5f3a52aaca6e1ead947\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-scheduled-audit.ts\",\n \"exportedName\": \"setAuditIntervalAction\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"UR2V0v7RuJVcu/3K7WvAN966ZJuTRSkWbENfiahXfQo=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"002b3cc50212764fbf57f8ead598d92ef778ab1cb4\": {\n \"workers\": {\n \"app/_global-error/page\": {\n \"moduleId\": 39027,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/_not-found/page\": {\n \"moduleId\": 37985,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/audit/page\": {\n \"moduleId\": 99558,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/page\": {\n \"moduleId\": 24190,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/project/[name]/page\": {\n \"moduleId\": 165,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/project/[name]/session/[sessionId]/page\": {\n \"moduleId\": 21776,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/projects/page\": {\n \"moduleId\": 26035,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-telemetry-config.ts\",\n \"exportedName\": \"getTelemetryConfig\"\n },\n \"00c7a33e8c5007aa102ab7f62fc8fe7477069b5f25\": {\n \"workers\": {\n \"app/audit/page\": {\n \"moduleId\": 99558,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-audit-result.ts\",\n \"exportedName\": \"getAuditResultAction\"\n },\n \"401699c12f95349d737e04f8915b93ebf2ee5fe3d3\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-hook-activity.ts\",\n \"exportedName\": \"getHookActivityAction\"\n },\n \"60109a5b051daeeed9cd6c3657f8eccf314888ae28\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n },\n \"app/project/[name]/session/[sessionId]/page\": {\n \"moduleId\": 21776,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-hook-activity.ts\",\n \"exportedName\": \"searchHookActivityAction\"\n },\n \"0089ea2980918808d33a15d8c1aa19f95f74499a34\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-active-pauses.ts\",\n \"exportedName\": \"getActivePausesAction\"\n },\n \"005d50a3542dd156e877450e17a1d14a3e13658453\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-hooks-config.ts\",\n \"exportedName\": \"getHooksConfigAction\"\n },\n \"60f610546dfc62d41cc851de7ec63c4c417a75f886\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-hooks-config.ts\",\n \"exportedName\": \"toggleCustomPolicyAction\"\n },\n \"005c0ce54eeb9aab017ab14bd53f4a1b57ee2d37f9\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"addBundledPackWebAction\"\n },\n \"60418124647175cf2e77fbbbdcc290a56a9d436862\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"addPackWebAction\"\n },\n \"40bf8376d6df82e21ed057e7ef48b9e9be9798e3f4\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"previewPackWebAction\"\n },\n \"40a79c2d14b59bc91ca140a1bb81e485e11b0f8da5\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"removePackWebAction\"\n },\n \"703d52bdd80f5fcca2dce83a610727293df45cc65a\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/pack-actions.ts\",\n \"exportedName\": \"togglePackPolicyAction\"\n },\n \"60e454ae7780c51cd605770dc46b2eba7eb04c95d0\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/install-hooks-web.ts\",\n \"exportedName\": \"installHooksWebAction\"\n },\n \"60466260d9530d9065addd78a16cdc91e789ebb53c\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/install-hooks-web.ts\",\n \"exportedName\": \"removeHooksWebAction\"\n },\n \"60bf363329f35015959cd0689ed4047590c33d139b\": {\n \"workers\": {\n \"app/policies/page\": {\n \"moduleId\": 73338,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-policy-params.ts\",\n \"exportedName\": \"updatePolicyParamsAction\"\n },\n \"00265c36203c0a8354c803cb6be85bd71db9f72fff\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-scheduled-audit.ts\",\n \"exportedName\": \"getScheduledAuditAction\"\n },\n \"00d5f65b37d57994d102a4795b97639ca80427d9b6\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/get-jev-config.ts\",\n \"exportedName\": \"getJevSettingsAction\"\n },\n \"00ad1de5b7a8b620e935e581a6d40c492ac90de5e0\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"removeJevConfigAction\"\n },\n \"40c3674bfdb44a95095fda0a0268a03bf6f7b246fb\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"saveJevConfigAction\"\n },\n \"40bd7ee875eebd400ed297b4dbb64db1feed4356aa\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-jev-config.ts\",\n \"exportedName\": \"setJevModeAction\"\n },\n \"40040d53c0382847a4c73f07e40136516306c6ef76\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-scheduled-audit.ts\",\n \"exportedName\": \"setAutoAuditAction\"\n },\n \"40cdeb93745892bcc2de3532a7390760e09ac401a9\": {\n \"workers\": {\n \"app/settings/page\": {\n \"moduleId\": 35874,\n \"async\": false,\n \"codeHash\": null\n }\n },\n \"filename\": \"app/actions/update-scheduled-audit.ts\",\n \"exportedName\": \"setAuditIntervalAction\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"4T6YI5lPvE34gGpNvh9k7J/Z5BG6c75DUWWUif9+dk0=\"\n}"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "node": {
3
- "00c7cb2b7a83c0805daa426cd9ea5ca09d11849939": {
3
+ "002b3cc50212764fbf57f8ead598d92ef778ab1cb4": {
4
4
  "workers": {
5
5
  "app/_global-error/page": {
6
6
  "moduleId": 39027,
@@ -51,7 +51,7 @@
51
51
  "filename": "app/actions/get-telemetry-config.ts",
52
52
  "exportedName": "getTelemetryConfig"
53
53
  },
54
- "0037336e00b401287fa1d63b3c26c6b35ec1101200": {
54
+ "00c7a33e8c5007aa102ab7f62fc8fe7477069b5f25": {
55
55
  "workers": {
56
56
  "app/audit/page": {
57
57
  "moduleId": 99558,
@@ -62,7 +62,7 @@
62
62
  "filename": "app/actions/get-audit-result.ts",
63
63
  "exportedName": "getAuditResultAction"
64
64
  },
65
- "406617c7a3c0d21fd723390b2d50480cfc5b57ee57": {
65
+ "401699c12f95349d737e04f8915b93ebf2ee5fe3d3": {
66
66
  "workers": {
67
67
  "app/policies/page": {
68
68
  "moduleId": 73338,
@@ -73,7 +73,7 @@
73
73
  "filename": "app/actions/get-hook-activity.ts",
74
74
  "exportedName": "getHookActivityAction"
75
75
  },
76
- "602b0b0b4f2efa4ff1a1a7045ee50854d8521f10b2": {
76
+ "60109a5b051daeeed9cd6c3657f8eccf314888ae28": {
77
77
  "workers": {
78
78
  "app/policies/page": {
79
79
  "moduleId": 73338,
@@ -89,7 +89,7 @@
89
89
  "filename": "app/actions/get-hook-activity.ts",
90
90
  "exportedName": "searchHookActivityAction"
91
91
  },
92
- "003b5f3acdf86fb4cbfcd7481e9f1f90e50548ef3f": {
92
+ "0089ea2980918808d33a15d8c1aa19f95f74499a34": {
93
93
  "workers": {
94
94
  "app/policies/page": {
95
95
  "moduleId": 73338,
@@ -100,7 +100,7 @@
100
100
  "filename": "app/actions/get-active-pauses.ts",
101
101
  "exportedName": "getActivePausesAction"
102
102
  },
103
- "00b6660a2d5a7f3a794f8e6b9cda110dcc52265c04": {
103
+ "005d50a3542dd156e877450e17a1d14a3e13658453": {
104
104
  "workers": {
105
105
  "app/policies/page": {
106
106
  "moduleId": 73338,
@@ -111,7 +111,7 @@
111
111
  "filename": "app/actions/get-hooks-config.ts",
112
112
  "exportedName": "getHooksConfigAction"
113
113
  },
114
- "60d91884595e41a8966ea238bc1a2b8e6c0d7cdb6c": {
114
+ "60f610546dfc62d41cc851de7ec63c4c417a75f886": {
115
115
  "workers": {
116
116
  "app/policies/page": {
117
117
  "moduleId": 73338,
@@ -122,7 +122,7 @@
122
122
  "filename": "app/actions/update-hooks-config.ts",
123
123
  "exportedName": "toggleCustomPolicyAction"
124
124
  },
125
- "003cf6a2dc33f7bef322871de8a61e1daea1aadeee": {
125
+ "005c0ce54eeb9aab017ab14bd53f4a1b57ee2d37f9": {
126
126
  "workers": {
127
127
  "app/policies/page": {
128
128
  "moduleId": 73338,
@@ -133,7 +133,7 @@
133
133
  "filename": "app/actions/pack-actions.ts",
134
134
  "exportedName": "addBundledPackWebAction"
135
135
  },
136
- "603c3f7dc1eb943162936a92f6c876abcad098d8ee": {
136
+ "60418124647175cf2e77fbbbdcc290a56a9d436862": {
137
137
  "workers": {
138
138
  "app/policies/page": {
139
139
  "moduleId": 73338,
@@ -144,7 +144,7 @@
144
144
  "filename": "app/actions/pack-actions.ts",
145
145
  "exportedName": "addPackWebAction"
146
146
  },
147
- "40d9774ab41ed0bcd96f2862d5c80d34c10387556c": {
147
+ "40bf8376d6df82e21ed057e7ef48b9e9be9798e3f4": {
148
148
  "workers": {
149
149
  "app/policies/page": {
150
150
  "moduleId": 73338,
@@ -155,7 +155,7 @@
155
155
  "filename": "app/actions/pack-actions.ts",
156
156
  "exportedName": "previewPackWebAction"
157
157
  },
158
- "40d2a61deeea743561cb54a05d42bbdcb53e238625": {
158
+ "40a79c2d14b59bc91ca140a1bb81e485e11b0f8da5": {
159
159
  "workers": {
160
160
  "app/policies/page": {
161
161
  "moduleId": 73338,
@@ -166,7 +166,7 @@
166
166
  "filename": "app/actions/pack-actions.ts",
167
167
  "exportedName": "removePackWebAction"
168
168
  },
169
- "70f7431f8131b498c8efeaba333009f346d2ccb07a": {
169
+ "703d52bdd80f5fcca2dce83a610727293df45cc65a": {
170
170
  "workers": {
171
171
  "app/policies/page": {
172
172
  "moduleId": 73338,
@@ -177,7 +177,7 @@
177
177
  "filename": "app/actions/pack-actions.ts",
178
178
  "exportedName": "togglePackPolicyAction"
179
179
  },
180
- "6023a1d93e537af483920f1a8649208aa6c50e50dc": {
180
+ "60e454ae7780c51cd605770dc46b2eba7eb04c95d0": {
181
181
  "workers": {
182
182
  "app/policies/page": {
183
183
  "moduleId": 73338,
@@ -188,7 +188,7 @@
188
188
  "filename": "app/actions/install-hooks-web.ts",
189
189
  "exportedName": "installHooksWebAction"
190
190
  },
191
- "605a17823f43d496bc36092405f15177e68b3e2919": {
191
+ "60466260d9530d9065addd78a16cdc91e789ebb53c": {
192
192
  "workers": {
193
193
  "app/policies/page": {
194
194
  "moduleId": 73338,
@@ -199,7 +199,7 @@
199
199
  "filename": "app/actions/install-hooks-web.ts",
200
200
  "exportedName": "removeHooksWebAction"
201
201
  },
202
- "60609c640fdbc65da142d91ffdbf1ebfd9e8713cfd": {
202
+ "60bf363329f35015959cd0689ed4047590c33d139b": {
203
203
  "workers": {
204
204
  "app/policies/page": {
205
205
  "moduleId": 73338,
@@ -210,7 +210,7 @@
210
210
  "filename": "app/actions/update-policy-params.ts",
211
211
  "exportedName": "updatePolicyParamsAction"
212
212
  },
213
- "007cb04a000f802db12d1e2a647f435278fccef0ea": {
213
+ "00265c36203c0a8354c803cb6be85bd71db9f72fff": {
214
214
  "workers": {
215
215
  "app/settings/page": {
216
216
  "moduleId": 35874,
@@ -221,7 +221,7 @@
221
221
  "filename": "app/actions/get-scheduled-audit.ts",
222
222
  "exportedName": "getScheduledAuditAction"
223
223
  },
224
- "00854ec9e90b56699593285b0ed4967ff5a920a8f9": {
224
+ "00d5f65b37d57994d102a4795b97639ca80427d9b6": {
225
225
  "workers": {
226
226
  "app/settings/page": {
227
227
  "moduleId": 35874,
@@ -232,7 +232,7 @@
232
232
  "filename": "app/actions/get-jev-config.ts",
233
233
  "exportedName": "getJevSettingsAction"
234
234
  },
235
- "00d2f7e8ab18b31805268064ea3bca623cbe30a982": {
235
+ "00ad1de5b7a8b620e935e581a6d40c492ac90de5e0": {
236
236
  "workers": {
237
237
  "app/settings/page": {
238
238
  "moduleId": 35874,
@@ -243,7 +243,7 @@
243
243
  "filename": "app/actions/update-jev-config.ts",
244
244
  "exportedName": "removeJevConfigAction"
245
245
  },
246
- "40ab4f061fadc1c208771f481c6aa066694ca5c508": {
246
+ "40c3674bfdb44a95095fda0a0268a03bf6f7b246fb": {
247
247
  "workers": {
248
248
  "app/settings/page": {
249
249
  "moduleId": 35874,
@@ -254,7 +254,7 @@
254
254
  "filename": "app/actions/update-jev-config.ts",
255
255
  "exportedName": "saveJevConfigAction"
256
256
  },
257
- "4055d4ce76d28e7e3c730848d81f3b85af9328bb26": {
257
+ "40bd7ee875eebd400ed297b4dbb64db1feed4356aa": {
258
258
  "workers": {
259
259
  "app/settings/page": {
260
260
  "moduleId": 35874,
@@ -265,7 +265,7 @@
265
265
  "filename": "app/actions/update-jev-config.ts",
266
266
  "exportedName": "setJevModeAction"
267
267
  },
268
- "40a4ae25d47a986e9c1468503e4a906972a1b971bd": {
268
+ "40040d53c0382847a4c73f07e40136516306c6ef76": {
269
269
  "workers": {
270
270
  "app/settings/page": {
271
271
  "moduleId": 35874,
@@ -276,7 +276,7 @@
276
276
  "filename": "app/actions/update-scheduled-audit.ts",
277
277
  "exportedName": "setAutoAuditAction"
278
278
  },
279
- "40c5990e94d058100d3aaba5f3a52aaca6e1ead947": {
279
+ "40cdeb93745892bcc2de3532a7390760e09ac401a9": {
280
280
  "workers": {
281
281
  "app/settings/page": {
282
282
  "moduleId": 35874,
@@ -289,5 +289,5 @@
289
289
  }
290
290
  },
291
291
  "edge": {},
292
- "encryptionKey": "UR2V0v7RuJVcu/3K7WvAN966ZJuTRSkWbENfiahXfQo="
292
+ "encryptionKey": "4T6YI5lPvE34gGpNvh9k7J/Z5BG6c75DUWWUif9+dk0="
293
293
  }
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94026,e=>{"use strict";var t=e.i(95187);let a=(0,t.createServerReference)("602b0b0b4f2efa4ff1a1a7045ee50854d8521f10b2",t.callServer,void 0,t.findSourceMapURL,"searchHookActivityAction");e.s(["searchHookActivityAction",0,a])},73520,e=>{"use strict";var t=e.i(43476),a=e.i(24071),r=e.i(67927);e.s(["default",0,function({currentPage:e,totalPages:s,onPageChange:i}){if(s<=1)return null;let l=e=>`px-3 py-2 text-sm rounded-md transition-colors flex items-center gap-1 bg-muted text-muted-foreground ${e?"opacity-50 cursor-not-allowed":"hover:bg-muted/80"}`;return(0,t.jsxs)("div",{className:"flex items-center justify-center gap-2 py-4",children:[(0,t.jsxs)("button",{onClick:()=>i(e-1),disabled:1===e,className:l(1===e),"aria-label":"Previous page",children:[(0,t.jsx)(a.ChevronLeft,{className:"w-4 h-4"}),(0,t.jsx)("span",{className:"hidden sm:inline",children:"Previous"})]}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:(()=>{if(s<=7)return Array.from({length:s},(e,t)=>t+1);let t=[1],a=Math.max(2,e-1),r=Math.min(s-1,e+1);e<=3&&(r=Math.min(5,s-1)),e>=s-2&&(a=Math.max(2,s-4)),a>2&&t.push("ellipsis-start");for(let e=a;e<=r;e++)t.push(e);return r<s-1&&t.push("ellipsis-end"),t.push(s),t})().map(a=>"string"==typeof a?(0,t.jsx)("span",{className:"px-2 text-muted-foreground",children:"..."},a):(0,t.jsx)("button",{onClick:()=>i(a),className:`min-w-[2.5rem] px-3 py-2 text-sm rounded-md transition-colors ${e===a?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"}`,"aria-label":`Page ${a}`,"aria-current":e===a?"page":void 0,children:a},a))}),(0,t.jsxs)("button",{onClick:()=>i(e+1),disabled:e===s,className:l(e===s),"aria-label":"Next page",children:[(0,t.jsx)("span",{className:"hidden sm:inline",children:"Next"}),(0,t.jsx)(r.ChevronRight,{className:"w-4 h-4"})]})]})}])},34713,e=>{"use strict";e.s(["formatDuration",0,function(e){if(e<1e3)return`${e}ms`;let t=Math.round(e/100);if(t<600)return`${(t/10).toFixed(1)}s`;let a=Math.round(e/1e3);if(a<3600){let e=Math.floor(a/60);return`${e}m ${a%60}s`}let r=Math.round(e/6e4),s=Math.floor(r/60);return`${s}h ${r%60}m`},"formatRelativeTime",0,function(e){let t=Date.now()-e;return t<6e4?`${Math.max(1,Math.floor(t/1e3))}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}])},24071,e=>{"use strict";var t=e.i(56420);let a={name:"chevron-left",size:24,node:[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]};a.node;let r=(0,t.default)(a);e.s(["ChevronLeft",0,r],24071)},67927,e=>{"use strict";var t=e.i(56420);let a={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};a.node;let r=(0,t.default)(a);e.s(["ChevronRight",0,r],67927)},16306,e=>{"use strict";var t=e.i(56420);let a={name:"shield-alert",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]};a.node;let r=(0,t.default)(a);e.s(["ShieldAlert",0,r],16306)},84026,29407,e=>{"use strict";var t=e.i(56420);let a={name:"shield-check",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]};a.node;let r=(0,t.default)(a);e.s(["ShieldCheck",0,r],84026);let s={name:"shield-x",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]],aliases:["shield-close"]};s.node;let i=(0,t.default)(s);e.s(["ShieldX",0,i],29407)},82954,e=>{"use strict";var t=e.i(56420);let a={name:"shield",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]};a.node;let r=(0,t.default)(a);e.s(["Shield",0,r],82954)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,23527,e=>{"use strict";var t=e.i(95187);let a=(0,t.createServerReference)("60109a5b051daeeed9cd6c3657f8eccf314888ae28",t.callServer,void 0,t.findSourceMapURL,"searchHookActivityAction");e.s(["searchHookActivityAction",0,a])},73520,e=>{"use strict";var t=e.i(43476),a=e.i(24071),r=e.i(67927);e.s(["default",0,function({currentPage:e,totalPages:s,onPageChange:i}){if(s<=1)return null;let l=e=>`px-3 py-2 text-sm rounded-md transition-colors flex items-center gap-1 bg-muted text-muted-foreground ${e?"opacity-50 cursor-not-allowed":"hover:bg-muted/80"}`;return(0,t.jsxs)("div",{className:"flex items-center justify-center gap-2 py-4",children:[(0,t.jsxs)("button",{onClick:()=>i(e-1),disabled:1===e,className:l(1===e),"aria-label":"Previous page",children:[(0,t.jsx)(a.ChevronLeft,{className:"w-4 h-4"}),(0,t.jsx)("span",{className:"hidden sm:inline",children:"Previous"})]}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:(()=>{if(s<=7)return Array.from({length:s},(e,t)=>t+1);let t=[1],a=Math.max(2,e-1),r=Math.min(s-1,e+1);e<=3&&(r=Math.min(5,s-1)),e>=s-2&&(a=Math.max(2,s-4)),a>2&&t.push("ellipsis-start");for(let e=a;e<=r;e++)t.push(e);return r<s-1&&t.push("ellipsis-end"),t.push(s),t})().map(a=>"string"==typeof a?(0,t.jsx)("span",{className:"px-2 text-muted-foreground",children:"..."},a):(0,t.jsx)("button",{onClick:()=>i(a),className:`min-w-[2.5rem] px-3 py-2 text-sm rounded-md transition-colors ${e===a?"bg-primary text-primary-foreground":"bg-muted text-muted-foreground hover:bg-muted/80"}`,"aria-label":`Page ${a}`,"aria-current":e===a?"page":void 0,children:a},a))}),(0,t.jsxs)("button",{onClick:()=>i(e+1),disabled:e===s,className:l(e===s),"aria-label":"Next page",children:[(0,t.jsx)("span",{className:"hidden sm:inline",children:"Next"}),(0,t.jsx)(r.ChevronRight,{className:"w-4 h-4"})]})]})}])},34713,e=>{"use strict";e.s(["formatDuration",0,function(e){if(e<1e3)return`${e}ms`;let t=Math.round(e/100);if(t<600)return`${(t/10).toFixed(1)}s`;let a=Math.round(e/1e3);if(a<3600){let e=Math.floor(a/60);return`${e}m ${a%60}s`}let r=Math.round(e/6e4),s=Math.floor(r/60);return`${s}h ${r%60}m`},"formatRelativeTime",0,function(e){let t=Date.now()-e;return t<6e4?`${Math.max(1,Math.floor(t/1e3))}s ago`:t<36e5?`${Math.floor(t/6e4)}m ago`:t<864e5?`${Math.floor(t/36e5)}h ago`:`${Math.floor(t/864e5)}d ago`}])},24071,e=>{"use strict";var t=e.i(56420);let a={name:"chevron-left",size:24,node:[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]};a.node;let r=(0,t.default)(a);e.s(["ChevronLeft",0,r],24071)},67927,e=>{"use strict";var t=e.i(56420);let a={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};a.node;let r=(0,t.default)(a);e.s(["ChevronRight",0,r],67927)},16306,e=>{"use strict";var t=e.i(56420);let a={name:"shield-alert",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M12 16h.01",key:"1drbdi"}]]};a.node;let r=(0,t.default)(a);e.s(["ShieldAlert",0,r],16306)},84026,29407,e=>{"use strict";var t=e.i(56420);let a={name:"shield-check",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]};a.node;let r=(0,t.default)(a);e.s(["ShieldCheck",0,r],84026);let s={name:"shield-x",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m14.5 9.5-5 5",key:"17q4r4"}],["path",{d:"m9.5 9.5 5 5",key:"18nt4w"}]],aliases:["shield-close"]};s.node;let i=(0,t.default)(s);e.s(["ShieldX",0,i],29407)},82954,e=>{"use strict";var t=e.i(56420);let a={name:"shield",size:24,node:[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]};a.node;let r=(0,t.default)(a);e.s(["Shield",0,r],82954)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,53348,e=>{"use strict";var r=e.i(43476),t=e.i(71645),n=e.i(42175),i=e.i(9969);e.s(["default",0,function({error:e,reset:o}){return(0,t.useEffect)(()=>{(0,n.getTelemetryConfig)().then(r=>{(0,i.setClientTelemetryConfig)(r),(0,i.captureClientEvent)("client_error",{error_message:e.message,error_name:e.name,error_digest:e.digest,boundary:"global"})}).catch(()=>{})},[e]),(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)("main",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#031035",color:"#f8fafc",fontFamily:"system-ui, sans-serif"},children:(0,r.jsxs)("div",{style:{textAlign:"center",padding:"2rem",border:"1px solid rgba(239,68,68,0.4)",borderRadius:"0.5rem",maxWidth:"500px"},children:[(0,r.jsx)("h2",{style:{color:"#ef4444",marginBottom:"0.5rem",fontSize:"1.25rem"},children:"Something went wrong"}),(0,r.jsx)("p",{style:{color:"#94a3b8",marginBottom:"1.5rem"},children:e.message||"An unexpected error occurred."}),(0,r.jsx)("button",{onClick:o,style:{padding:"0.5rem 1.25rem",background:"#3b82f6",color:"white",border:"none",borderRadius:"0.375rem",cursor:"pointer",fontSize:"0.875rem"},children:"Try again"})]})})})})}])}]);