failproofai 1.0.11-beta.4 → 1.0.11
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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +4 -4
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0car70pylmvor._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0jz5xqu-p_lfc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ey11fel2q2qw._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qt5u58xrcuk6._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ztigqa01tigq._.js +1 -1
- package/.next/standalone/.next/server/chunks/_09dz7xva4ce_2._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_11qmqmccehybz._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_1sezqnatvr8j-._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_antigravity-projects_ts_0hdx6fkrln72c._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_codex-projects_ts_0di6zenec7h7n._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_copilot-projects_ts_00-tojoja20ke._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_cursor-projects_ts_1carno5mv3ix_._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_factory-projects_ts_1eo_bk-vm4wdz._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_hermes-projects_ts_0h9ny-woruqft._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_log-entries_ts_0e1mnh5npsol1._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_openclaw-projects_ts_0gc-p24z7gzy8._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_opencode-projects_ts_1r-bu98cz4660._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_pi-projects_ts_1_cy5lfxd21kv._.js +1 -1
- package/.next/standalone/.next/server/chunks/lib_projects_ts_01v279z8xccq4._.js +1 -1
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0b28bm2e-y0rp._.js → [root-of-the-server]__0_lbstb5x2t15._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_16u8ppjzw0upc._.js → _0dc-of_bn0cim._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1gb0ifpkowwub._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_0_zbgw5i5c7_a.js → node_modules_html-to-image_es_index_1f_ymmaonkksc.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_pack-cli_ts_0t7me658zqmh_._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
- package/.next/standalone/.next/static/chunks/{08-yz-9n_9j-u.js → 0ol2gj4ntfn56.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2q25h0pqaw62i.js → 15rm15u5a6dua.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3c5k3z60x6vuh.js → 16z6_d7sp61jm.js} +1 -1
- package/.next/standalone/.next/static/chunks/{3yxhw5uqrh1rq.js → 1_c0dc7zqj1n7.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2sbmeexp-ixmd.js → 1kwj8uqxuv85t.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2ly73y3n0ddxn.js → 302llgh97ce6w.js} +1 -1
- package/.next/standalone/.next/static/chunks/{2_2xem_wwddgy.js → 37stoe-_yd852.js} +1 -1
- package/.next/standalone/.next/static/chunks/3hj5_7i3nw4zj.js +1 -0
- package/.next/standalone/.next/static/chunks/3iyoapeoq_hup.js +1 -0
- package/.next/standalone/.next/static/chunks/{0ii1av6gw3_74.js → 44a7k2_62qc-9.js} +2 -2
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/package.json +9 -9
- package/.next/standalone/sdk/python/CHANGELOG.md +17 -5
- package/.next/standalone/sdk/python/failproofai_sdk/_redact.py +3 -5
- package/.next/standalone/sdk/python/failproofai_sdk/_resolver.py +13 -2
- package/.next/standalone/sdk/python/failproofai_sdk/integrations/otel.py +3 -1
- package/.next/standalone/sdk/python/tests/test_otel.py +25 -0
- package/.next/standalone/sdk/typescript/CHANGELOG.md +26 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-0/package-lock.json +3 -3
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package-lock.json +162 -162
- package/.next/standalone/sdk/typescript/integration/fixtures/nextjs/package.json +1 -1
- package/.next/standalone/sdk/typescript/src/integrations/otel.ts +2 -1
- package/.next/standalone/sdk/typescript/src/resolver.ts +2 -1
- package/.next/standalone/sdk/typescript/test/otel.test.ts +25 -0
- package/.next/standalone/server.js +1 -1
- package/dist/cli.mjs +30 -16
- package/dist/worker.mjs +1 -1
- package/hermes-plugin/plugin.yaml +1 -1
- package/package.json +9 -9
- package/src/hooks/cloud-connection.ts +4 -1
- package/src/hooks/otel-cli.ts +16 -6
- package/src/hooks/otel-writers.ts +13 -0
- package/.next/standalone/.next/static/chunks/01c3z7b9td1j-.js +0 -1
- package/.next/standalone/.next/static/chunks/14prk7fu_3vzm.js +0 -1
- /package/.next/standalone/.next/static/{ZxaJShYHqvP19gYm49Rao → kEFP3ybXwZdriNEQmWwlH}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{ZxaJShYHqvP19gYm49Rao → kEFP3ybXwZdriNEQmWwlH}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{ZxaJShYHqvP19gYm49Rao → kEFP3ybXwZdriNEQmWwlH}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[[35874,a=>{var b=a.i(36359),c=a.i(36119),d=a.i(41289),e=a.i(37936),f=a.i(2157),g=a.i(50227),h=a.i(5246),i=a.i(8674);let j=new Set(["localhost","127.0.0.1","::1","[::1]","0:0:0:0:0:0:0:1"]);function k(a){let b=a.trim().toLowerCase();return!!b&&(!!j.has(b)||/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(b))}var l=a.i(87481),m=a.i(55113),n=a.i(13095);let o="this request did not come from the dashboard in your browser, so nothing was written.",p="env-key-stand-in";async function q(){var a,b;let c;try{c=await (0,h.headers)()}catch{return o}let d=k((a=void 0,b=process.env.FAILPROOFAI_DASHBOARD_HOST,(a??b??"").trim()||"127.0.0.1")),e=c.get("host");if(d&&(!e||!k(function(a){let b=a.trim();if(b.startsWith("[")){let a=b.indexOf("]");return -1===a?b:b.slice(0,a+1)}let c=b.indexOf(":");return -1===c?b:b.slice(0,c)}(e))))return o;let f=c.get("origin");if(!f)return d?null:o;let g=null;try{g=new URL(f).host.toLowerCase()}catch{g=null}return g&&g===(e??"").toLowerCase()?null:o}function r(a){if(!a)return null;let b=(0,l.A)(a);if(!b.ok)return null;try{let a=new URL(b.value).origin;return"null"===a?null:a}catch{return null}}function s(a){let b=(0,g.dirname)(a);try{let a=511&(0,f.statSync)(b).mode;(18&a)!=0&&(0,f.chmodSync)(b,-19&a)}catch{}}async function t(a){let b=await q();if(b)return{ok:!1,problem:b};let c=a.provider.trim();if(!l.n.includes(c))return{ok:!1,problem:`provider must be one of ${l.n.join(", ")}`};if(c===l.e)return{ok:!1,problem:"FailproofAI Cloud's Jev is turned on by connecting this machine (failproofai config --token <key>), and switched with the mode control — not saved from this form."};let e=(0,l._)(a.mode);if(null===e)return{ok:!1,problem:'mode must be "off", "observe" or "enforce".'};let f=a.baseUrl.trim(),g=f?(0,l.A)(f):null;if(g&&!g.ok)return{ok:!1,problem:g.problem};let h=(0,l.Z)(),j=h?.raw??null,k=null!==j&&j.provider===c;if(g?.ok){let a=(0,l.A)(j?.baseUrl),b=k&&a.ok&&(0,l.T)(a.value).url===(0,l.T)(g.value).url,d=b?null:(0,l.O)(c,g.value);if(d)return{ok:!1,problem:`${d}.`};let e=b?null:(0,l.f)(g.value);if(e)return{ok:!1,problem:`that url is an endpoint, not an api base — its path ends in ${e.suffix}. ${(0,m.G)(g.value)} Use ${(0,l.T)(e.base).url} instead.`}}let n=k?{...j}:{};!k&&j&&(void 0!==j.mode&&(n.mode=j.mode),void 0!==j.timeoutMs&&(n.timeoutMs=j.timeoutMs)),n.provider=c,f?n.baseUrl=function(a,b){if("string"!=typeof b||""===b)return a;let c=(0,l.A)(b);if(!c.ok)return a;let d=(0,l.T)(c.value);if(!d.hadQuery)return a;let e=(0,l.A)(a);return e.ok&&e.value===d.url?c.value:a}(f,j?.baseUrl):delete n.baseUrl;let o=a.accountId.trim();"cloudflare"===c&&o?n.accountId=o:delete n.accountId,n.mode=e;let t=k&&h?.tooOpen!==!0&&r(f)===r("string"==typeof j?.baseUrl?j.baseUrl:""),u="string"==typeof j?.apiKey&&""!==j.apiKey,v=null!==j&&!u&&(0,l.P)(j,p).ok,w=a.token.trim();if(w){let a=(0,l.$)(w);if(a)return{ok:!1,problem:a,needsToken:!0};n.apiKey=w}else if(!t&&!v)return{ok:!1,needsToken:!0,problem:u?k&&h?.tooOpen===!0?`${(0,l.W)()} was open to other users, so the endpoint it names may not be one you chose and its stored token is not reused. check the endpoint above, then enter the token for it.`:k?"that endpoint is not the one the stored token was given for, so it is not sent there. enter the token for it.":"enter the token for this provider.":"enter the token for this provider."};let x=void 0===n.apiKey,y=(0,l.P)(n,x?p:null);if(!y.ok)return{ok:!1,problem:y.problem,...!0===y.missingKey?{needsToken:!0}:{}};let z=(0,l.W)();try{(0,i.f)(z,n,{mode:384,dirMode:448})}catch(a){return{ok:!1,problem:`could not write ${z} (${a.code??"error"}).`}}return s(z),{ok:!0,view:await (0,d.f)()}}async function u(a){let b=await q();if(b)return{ok:!1,problem:b};let c=(0,l._)(a);if(null===c)return{ok:!1,problem:'mode must be "off", "observe" or "enforce".'};let e=(0,l.Z)();if(null===e)return{ok:!1,problem:`there is no readable ${(0,l.W)()} to switch. connect this machine (failproofai config --token <key>) or set up your own endpoint below.`};if(e.tooOpen)return{ok:!1,problem:`${(0,l.W)()} is open to other users, so Jev is already off and the endpoint it names is not trusted. fix its permissions first (chmod 600, and chmod 700 on its directory).`};let f={...e.raw,mode:c},g=f.provider===l.e,h=(0,l.P)(f,g||"string"==typeof f.apiKey?null:p,g?{url:function(a){if("string"!=typeof a)return"";try{return new URL(a).origin}catch{return""}}(f.baseUrl),key:p}:null);if(!h.ok)return{ok:!1,problem:h.problem};let j=(0,l.W)();try{(0,i.f)(j,f,{mode:384,dirMode:448})}catch(a){return{ok:!1,problem:`could not write ${j} (${a.code??"error"}).`}}return s(j),{ok:!0,view:await (0,d.f)()}}async function v(){let a=await q();if(a)return{ok:!1,problem:a};let b=(0,l.W)();if((0,f.existsSync)(b))try{(0,f.unlinkSync)(b)}catch(a){return{ok:!1,problem:`could not remove ${b} (${a.code??"error"}).`}}return{ok:!0,view:await (0,d.f)()}}(0,n.ensureServerEntryExports)([t,u,v]),(0,e.registerServerReference)(t,"40269b17347c021a76c1940c228d01bc5a01545fe0",null),(0,e.registerServerReference)(u,"408edf2c46c8b34182ac89f0bf85cff04838ced676",null),(0,e.registerServerReference)(v,"00c2839310d989d77e9849010bcc012d4a7747bc0e",null);var w=a.i(21572),x=a.i(81243);async function y(a){if(a&&!await (0,x.s)()){let a=(0,x.M)();return{ok:!1,reason:a&&1e3*a.refresh_expires_at>Date.now()?"unreachable":"signed-out"}}return{ok:!0,auto:(0,w.t)({audit:a?{auto:!0,reportsConsentedAt:Date.now()}:{auto:!1}}).audit.auto}}async function z(a){return(0,w.t)({audit:{intervalDays:a}}),{intervalDays:(0,w.s)().audit.intervalDays}}(0,n.ensureServerEntryExports)([y,z]),(0,e.registerServerReference)(y,"40f7c7c0cbcd72c3d68d5f6449f0a027c7489c06d7",null),(0,e.registerServerReference)(z,"40be028351d3344643cdf5c16d1d5bf9d08bcf61e2",null),a.s(["0000248e151c632afe8dd7863239ba9485e5af5d41",()=>d.f,"00054a6f1d1f20361dca7d07e2fe55c190e3d91e4e",()=>b.f,"00a805a7b449f10fb44c8fb3043e16aa05668b622e",()=>c.f,"00c2839310d989d77e9849010bcc012d4a7747bc0e",0,v,"40269b17347c021a76c1940c228d01bc5a01545fe0",0,t,"408edf2c46c8b34182ac89f0bf85cff04838ced676",0,u,"40be028351d3344643cdf5c16d1d5bf9d08bcf61e2",0,z,"40f7c7c0cbcd72c3d68d5f6449f0a027c7489c06d7",0,y],35874)},8018,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(a.r(717));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},81740,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"cookies",{enumerable:!0,get:function(){return o}});let d=a.r(14896),e=a.r(63681),f=a.r(56704),g=a.r(32319),h=a.r(60384),i=a.r(60312),j=a.r(13091),k=a.r(8018),l=a.r(28091),m=a.r(50640),n=a.r(55907);function o(){let a="cookies",b=f.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b){if(c&&!(0,l.isRequestApiAllowedInCurrentPhase)(c))throw Error(`Route ${b.route} used \`cookies()\` inside \`after()\` while rendering. This is not supported. If you need this data inside an \`after()\` callback, use \`cookies()\` outside of the callback. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`);if(b.forceStatic)return q(d.RequestCookiesAdapter.seal(new e.RequestCookies(new Headers({}))));if(b.dynamicShouldError)throw new i.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`cookies()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(c)switch(c.type){case"cache":let f=(0,n.createCookiesInUseCacheError)(b.route);throw Error.captureStackTrace(f,o),(0,j.applyOwnerStack)(f),b.invalidDynamicUsageError??=f,f;case"unstable-cache":throw(0,n.createCookiesInUnstableCacheError)(b.route);case"build-time-generator":throw Error(`Route ${b.route} used \`cookies()\` inside \`${c.functionName}\`. This is not supported because \`${c.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`);case"prerender":var k=b,r=c;let g=p.get(r);if(g)return g;let s=(0,j.makeSessionDataHangingPromise)(r.renderSignal,k.route,"`cookies()`",r);return p.set(r,s),s;case"prerender-client":case"validation-client":let t="`cookies`";throw new m.InvariantError(`${t} must not be used within a Client Component. Next.js should be preventing ${t} from being included in Client Components statically, but did not in this case.`);case"prerender-legacy":return(0,h.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(j.RENDER_STAGES_BY_DATA_KIND.sessionData,"cookies",c.cookies);return q(c.cookies)}case"private-cache":return q(c.cookies);case"request":let u;if((0,h.trackDynamicDataInDynamicRender)(c),u=(0,d.areCookiesMutableInCurrentPhase)(c)?c.userspaceMutableCookies:c.cookies,!c.asyncApiPromises)return q(u);if(u===c.mutableCookies)return c.asyncApiPromises.mutableCookies;return c.asyncApiPromises.cookies}}(0,g.throwForMissingRequestStore)(a)}let p=new WeakMap;function q(a){let b=p.get(a);if(b)return b;let c=Promise.resolve(a);return p.set(a,c),c}(0,k.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Error(`${c}used ${b}. \`cookies()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)})},51125,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"draftMode",{enumerable:!0,get:function(){return m}});let d=a.r(32319),e=a.r(56704),f=a.r(60384),g=a.r(8018),h=a.r(60312),i=a.r(96556),j=a.r(50640),k=a.r(55907);a.r(51409);let l=a.r(13091);function m(){let a="draftMode",b=e.workAsyncStorage.getStore(),c=d.workUnitAsyncStorage.getStore();switch((!b||!c)&&(0,d.throwForMissingRequestStore)(a),c.type){case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(l.RENDER_STAGES_BY_DATA_KIND.sessionData,"draftMode",new q(c.draftMode));return n(c.draftMode,b)}case"request":return n(c.draftMode,b);case"cache":case"private-cache":case"unstable-cache":let f=(0,d.getDraftModeProviderForCacheScope)(b,c);if(f)return n(f,b);case"prerender":case"prerender-legacy":return n(null,b);case"prerender-client":case"validation-client":{let a="`draftMode`";throw new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`)}case"build-time-generator":throw Error(`Route ${b.route} used \`${a}()\` inside \`${c.functionName}\`. This is not supported because \`${c.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`);default:return c}}function n(a,b){let c=p.get(a??o);return c||Promise.resolve(new q(a))}let o={},p=new WeakMap;class q{constructor(a){this._provider=a}get isEnabled(){return null!==this._provider&&this._provider.isEnabled}enable(){r("draftMode().enable()",this.enable),null!==this._provider&&this._provider.enable()}disable(){r("draftMode().disable()",this.disable),null!==this._provider&&this._provider.disable()}}function r(a,b){let c=e.workAsyncStorage.getStore(),g=d.workUnitAsyncStorage.getStore();if(c){if((null==g?void 0:g.phase)==="after")throw Error(`Route ${c.route} used "${a}" inside \`after()\`. The enabled status of \`draftMode()\` can be read inside \`after()\` but you cannot enable or disable \`draftMode()\`. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`);if(c.dynamicShouldError)throw new h.StaticGenBailoutError(`Route ${c.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(g)switch(g.type){case"cache":case"private-cache":{let d=(0,k.createDraftModeMutationInUseCacheError)(c.route,a);throw Error.captureStackTrace(d,b),(0,l.applyOwnerStack)(d),c.invalidDynamicUsageError??=d,d}case"unstable-cache":throw(0,k.createDraftModeMutationInUnstableCacheError)(c.route,a);case"prerender":case"prerender-runtime":{let b=Error(`Route ${c.route} used ${a} without first calling \`await connection()\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`);return(0,f.abortAndThrowOnSynchronousRequestDataAccess)(c.route,a,b,g)}case"prerender-client":case"validation-client":let d="`draftMode`";throw new j.InvariantError(`${d} must not be used within a Client Component. Next.js should be preventing ${d} from being included in Client Components statically, but did not in this case.`);case"prerender-legacy":g.revalidate=0;let e=new i.DynamicServerError(`Route ${c.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw c.dynamicUsageDescription=a,c.dynamicUsageStack=e.stack,e;case"request":(0,f.trackDynamicDataInDynamicRender)(g);break;case"build-time-generator":throw Error(`Route ${c.route} used \`${a}\` inside \`${g.functionName}\`. This is not supported because \`${g.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`)}}}(0,g.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Error(`${c}used ${b}. \`draftMode()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)})},35754,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"headers",{enumerable:!0,get:function(){return n}});let d=a.r(29927),e=a.r(56704),f=a.r(32319),g=a.r(60384),h=a.r(60312),i=a.r(13091),j=a.r(8018),k=a.r(28091),l=a.r(50640),m=a.r(55907);function n(){let a="headers",b=e.workAsyncStorage.getStore(),c=f.workUnitAsyncStorage.getStore();if(b){if(c&&!(0,k.isRequestApiAllowedInCurrentPhase)(c))throw Error(`Route ${b.route} used \`headers()\` inside \`after()\` while rendering. This is not supported. If you need this data inside an \`after()\` callback, use \`headers()\` outside of the callback. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`);if(b.forceStatic)return p(d.HeadersAdapter.seal(new Headers({})));if(c)switch(c.type){case"cache":{let a=(0,m.createHeadersInUseCacheError)(b.route);throw Error.captureStackTrace(a,n),(0,i.applyOwnerStack)(a),b.invalidDynamicUsageError??=a,a}case"unstable-cache":throw(0,m.createHeadersInUnstableCacheError)(b.route);case"build-time-generator":throw Error(`Route ${b.route} used \`headers()\` inside \`${c.functionName}\`. This is not supported because \`${c.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`)}if(b.dynamicShouldError)throw new h.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`headers()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(c)switch(c.type){case"prerender":var j=b,q=c;let e=o.get(q);if(e)return e;let f=(0,i.makeSessionDataHangingPromise)(q.renderSignal,j.route,"`headers()`",q);return o.set(q,f),f;case"prerender-client":case"validation-client":let r="`headers`";throw new l.InvariantError(`${r} must not be used within a client component. Next.js should be preventing ${r} from being included in client components statically, but did not in this case.`);case"prerender-legacy":return(0,g.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(i.RENDER_STAGES_BY_DATA_KIND.sessionData,"headers",c.headers);return p(c.headers)}case"private-cache":return p(c.headers);case"request":if((0,g.trackDynamicDataInDynamicRender)(c),c.asyncApiPromises)return c.asyncApiPromises.headers;return p(c.headers)}}(0,f.throwForMissingRequestStore)(a)}let o=new WeakMap;function p(a){let b=o.get(a);if(b)return b;let c=Promise.resolve(a);return o.set(a,c),c}(0,j.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Error(`${c}used ${b}. \`headers()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)})},28091,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return l},throwForSearchParamsAccessInUseCache:function(){return k},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(60312),g=a.r(20635),h=a.r(24725),i=a.r(55907);function j(a,b){throw new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`)}function k(a,b){let c=(0,i.createSearchParamsInUseCacheError)(a.route);throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function l(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},55907,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={createCacheLifeOutsideUseCacheError:function(){return B},createCacheTagOutsideUseCacheError:function(){return A},createConnectionInPrivateUseCacheError:function(){return q},createConnectionInPublicUseCacheError:function(){return p},createConnectionInUnstableCacheError:function(){return r},createCookiesInUnstableCacheError:function(){return l},createCookiesInUseCacheError:function(){return k},createDraftModeMutationInUnstableCacheError:function(){return v},createDraftModeMutationInUseCacheError:function(){return u},createHeadersInUnstableCacheError:function(){return n},createHeadersInUseCacheError:function(){return m},createNestedCacheShortExpireError:function(){return D},createNestedCacheZeroRevalidateError:function(){return C},createRevalidateDuringRenderError:function(){return w},createRevalidateInBuildTimeGeneratorError:function(){return y},createRevalidateInCachedFunctionError:function(){return x},createRouteHandlerRequestInUnstableCacheError:function(){return t},createRouteHandlerRequestInUseCacheError:function(){return s},createSearchParamsInUseCacheError:function(){return o},createUseCachePrivateInsidePublicUseCacheError:function(){return E},createUseCachePrivateInsideUnstableCacheError:function(){return F},createUseCachePrivateOutsideRequestContextError:function(){return G}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="https://nextjs.org/docs/messages/next-request-in-use-cache",g="https://nextjs.org/docs/app/api-reference/functions/unstable_cache",h="https://nextjs.org/docs/messages/use-cache-private-composition",i="https://nextjs.org/docs/messages/revalidate-in-use-cache",j="https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife";function k(a){return Error(`Route "${a}": \`cookies()\` can't be read inside \`"use cache"\`. Read it outside the cached function and pass what you need as an argument.
|
|
1
|
+
module.exports=[[35874,a=>{var b=a.i(36359),c=a.i(36119),d=a.i(41289),e=a.i(37936),f=a.i(2157),g=a.i(50227),h=a.i(5246),i=a.i(8674);let j=new Set(["localhost","127.0.0.1","::1","[::1]","0:0:0:0:0:0:0:1"]);function k(a){let b=a.trim().toLowerCase();return!!b&&(!!j.has(b)||/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(b))}var l=a.i(87481),m=a.i(55113),n=a.i(13095);let o="this request did not come from the dashboard in your browser, so nothing was written.",p="env-key-stand-in";async function q(){var a,b;let c;try{c=await (0,h.headers)()}catch{return o}let d=k((a=void 0,b=process.env.FAILPROOFAI_DASHBOARD_HOST,(a??b??"").trim()||"127.0.0.1")),e=c.get("host");if(d&&(!e||!k(function(a){let b=a.trim();if(b.startsWith("[")){let a=b.indexOf("]");return -1===a?b:b.slice(0,a+1)}let c=b.indexOf(":");return -1===c?b:b.slice(0,c)}(e))))return o;let f=c.get("origin");if(!f)return d?null:o;let g=null;try{g=new URL(f).host.toLowerCase()}catch{g=null}return g&&g===(e??"").toLowerCase()?null:o}function r(a){if(!a)return null;let b=(0,l.A)(a);if(!b.ok)return null;try{let a=new URL(b.value).origin;return"null"===a?null:a}catch{return null}}function s(a){let b=(0,g.dirname)(a);try{let a=511&(0,f.statSync)(b).mode;(18&a)!=0&&(0,f.chmodSync)(b,-19&a)}catch{}}async function t(a){let b=await q();if(b)return{ok:!1,problem:b};let c=a.provider.trim();if(!l.n.includes(c))return{ok:!1,problem:`provider must be one of ${l.n.join(", ")}`};if(c===l.e)return{ok:!1,problem:"FailproofAI Cloud's Jev is turned on by connecting this machine (failproofai config --token <key>), and switched with the mode control — not saved from this form."};let e=(0,l._)(a.mode);if(null===e)return{ok:!1,problem:'mode must be "off", "observe" or "enforce".'};let f=a.baseUrl.trim(),g=f?(0,l.A)(f):null;if(g&&!g.ok)return{ok:!1,problem:g.problem};let h=(0,l.Z)(),j=h?.raw??null,k=null!==j&&j.provider===c;if(g?.ok){let a=(0,l.A)(j?.baseUrl),b=k&&a.ok&&(0,l.T)(a.value).url===(0,l.T)(g.value).url,d=b?null:(0,l.O)(c,g.value);if(d)return{ok:!1,problem:`${d}.`};let e=b?null:(0,l.f)(g.value);if(e)return{ok:!1,problem:`that url is an endpoint, not an api base — its path ends in ${e.suffix}. ${(0,m.G)(g.value)} Use ${(0,l.T)(e.base).url} instead.`}}let n=k?{...j}:{};!k&&j&&(void 0!==j.mode&&(n.mode=j.mode),void 0!==j.timeoutMs&&(n.timeoutMs=j.timeoutMs)),n.provider=c,f?n.baseUrl=function(a,b){if("string"!=typeof b||""===b)return a;let c=(0,l.A)(b);if(!c.ok)return a;let d=(0,l.T)(c.value);if(!d.hadQuery)return a;let e=(0,l.A)(a);return e.ok&&e.value===d.url?c.value:a}(f,j?.baseUrl):delete n.baseUrl;let o=a.accountId.trim();"cloudflare"===c&&o?n.accountId=o:delete n.accountId,n.mode=e;let t=k&&h?.tooOpen!==!0&&r(f)===r("string"==typeof j?.baseUrl?j.baseUrl:""),u="string"==typeof j?.apiKey&&""!==j.apiKey,v=null!==j&&!u&&(0,l.P)(j,p).ok,w=a.token.trim();if(w){let a=(0,l.$)(w);if(a)return{ok:!1,problem:a,needsToken:!0};n.apiKey=w}else if(!t&&!v)return{ok:!1,needsToken:!0,problem:u?k&&h?.tooOpen===!0?`${(0,l.W)()} was open to other users, so the endpoint it names may not be one you chose and its stored token is not reused. check the endpoint above, then enter the token for it.`:k?"that endpoint is not the one the stored token was given for, so it is not sent there. enter the token for it.":"enter the token for this provider.":"enter the token for this provider."};let x=void 0===n.apiKey,y=(0,l.P)(n,x?p:null);if(!y.ok)return{ok:!1,problem:y.problem,...!0===y.missingKey?{needsToken:!0}:{}};let z=(0,l.W)();try{(0,i.f)(z,n,{mode:384,dirMode:448})}catch(a){return{ok:!1,problem:`could not write ${z} (${a.code??"error"}).`}}return s(z),{ok:!0,view:await (0,d.f)()}}async function u(a){let b=await q();if(b)return{ok:!1,problem:b};let c=(0,l._)(a);if(null===c)return{ok:!1,problem:'mode must be "off", "observe" or "enforce".'};let e=(0,l.Z)();if(null===e)return{ok:!1,problem:`there is no readable ${(0,l.W)()} to switch. connect this machine (failproofai config --token <key>) or set up your own endpoint below.`};if(e.tooOpen)return{ok:!1,problem:`${(0,l.W)()} is open to other users, so Jev is already off and the endpoint it names is not trusted. fix its permissions first (chmod 600, and chmod 700 on its directory).`};let f={...e.raw,mode:c},g=f.provider===l.e,h=(0,l.P)(f,g||"string"==typeof f.apiKey?null:p,g?{url:function(a){if("string"!=typeof a)return"";try{return new URL(a).origin}catch{return""}}(f.baseUrl),key:p}:null);if(!h.ok)return{ok:!1,problem:h.problem};let j=(0,l.W)();try{(0,i.f)(j,f,{mode:384,dirMode:448})}catch(a){return{ok:!1,problem:`could not write ${j} (${a.code??"error"}).`}}return s(j),{ok:!0,view:await (0,d.f)()}}async function v(){let a=await q();if(a)return{ok:!1,problem:a};let b=(0,l.W)();if((0,f.existsSync)(b))try{(0,f.unlinkSync)(b)}catch(a){return{ok:!1,problem:`could not remove ${b} (${a.code??"error"}).`}}return{ok:!0,view:await (0,d.f)()}}(0,n.ensureServerEntryExports)([t,u,v]),(0,e.registerServerReference)(t,"407a110bf2029405988e09fd19589fdb782599ea08",null),(0,e.registerServerReference)(u,"404dab712bd4a1ea8b755b7634d5888418cef1042e",null),(0,e.registerServerReference)(v,"00ac752eef29e96c96dcb2fb62c94be42957b119cf",null);var w=a.i(21572),x=a.i(81243);async function y(a){if(a&&!await (0,x.s)()){let a=(0,x.M)();return{ok:!1,reason:a&&1e3*a.refresh_expires_at>Date.now()?"unreachable":"signed-out"}}return{ok:!0,auto:(0,w.t)({audit:a?{auto:!0,reportsConsentedAt:Date.now()}:{auto:!1}}).audit.auto}}async function z(a){return(0,w.t)({audit:{intervalDays:a}}),{intervalDays:(0,w.s)().audit.intervalDays}}(0,n.ensureServerEntryExports)([y,z]),(0,e.registerServerReference)(y,"4054b9e2c677132d821925a612b4b0e1f9bce73de1",null),(0,e.registerServerReference)(z,"40a5d5f802f763490e33f34a482a23b82d5d83fa8a",null),a.s(["007d5891732fd31878aa7e73fa480008065c461d8b",()=>c.f,"00817d93b66813c1f16544147af118f6c81d0f496f",()=>b.f,"0091e4a6c5cd5050407bf314b44112842d26cce0f0",()=>d.f,"00ac752eef29e96c96dcb2fb62c94be42957b119cf",0,v,"404dab712bd4a1ea8b755b7634d5888418cef1042e",0,u,"4054b9e2c677132d821925a612b4b0e1f9bce73de1",0,y,"407a110bf2029405988e09fd19589fdb782599ea08",0,t,"40a5d5f802f763490e33f34a482a23b82d5d83fa8a",0,z],35874)},8018,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createDedupedByCallsiteServerErrorLoggerDev",{enumerable:!0,get:function(){return i}});let d=function(a){if(a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var b=e(void 0);if(b&&b.has(a))return b.get(a);var c={__proto__:null},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!==f&&Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(c,f,g):c[f]=a[f]}return c.default=a,b&&b.set(a,c),c}(a.r(717));function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}let f={current:null},g="function"==typeof d.cache?d.cache:a=>a,h=console.warn;function i(a){return function(...b){h(a(...b))}}g(a=>{try{h(f.current)}finally{f.current=null}})},81740,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"cookies",{enumerable:!0,get:function(){return o}});let d=a.r(14896),e=a.r(63681),f=a.r(56704),g=a.r(32319),h=a.r(60384),i=a.r(60312),j=a.r(13091),k=a.r(8018),l=a.r(28091),m=a.r(50640),n=a.r(55907);function o(){let a="cookies",b=f.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b){if(c&&!(0,l.isRequestApiAllowedInCurrentPhase)(c))throw Error(`Route ${b.route} used \`cookies()\` inside \`after()\` while rendering. This is not supported. If you need this data inside an \`after()\` callback, use \`cookies()\` outside of the callback. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`);if(b.forceStatic)return q(d.RequestCookiesAdapter.seal(new e.RequestCookies(new Headers({}))));if(b.dynamicShouldError)throw new i.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`cookies()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(c)switch(c.type){case"cache":let f=(0,n.createCookiesInUseCacheError)(b.route);throw Error.captureStackTrace(f,o),(0,j.applyOwnerStack)(f),b.invalidDynamicUsageError??=f,f;case"unstable-cache":throw(0,n.createCookiesInUnstableCacheError)(b.route);case"build-time-generator":throw Error(`Route ${b.route} used \`cookies()\` inside \`${c.functionName}\`. This is not supported because \`${c.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`);case"prerender":var k=b,r=c;let g=p.get(r);if(g)return g;let s=(0,j.makeSessionDataHangingPromise)(r.renderSignal,k.route,"`cookies()`",r);return p.set(r,s),s;case"prerender-client":case"validation-client":let t="`cookies`";throw new m.InvariantError(`${t} must not be used within a Client Component. Next.js should be preventing ${t} from being included in Client Components statically, but did not in this case.`);case"prerender-legacy":return(0,h.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(j.RENDER_STAGES_BY_DATA_KIND.sessionData,"cookies",c.cookies);return q(c.cookies)}case"private-cache":return q(c.cookies);case"request":let u;if((0,h.trackDynamicDataInDynamicRender)(c),u=(0,d.areCookiesMutableInCurrentPhase)(c)?c.userspaceMutableCookies:c.cookies,!c.asyncApiPromises)return q(u);if(u===c.mutableCookies)return c.asyncApiPromises.mutableCookies;return c.asyncApiPromises.cookies}}(0,g.throwForMissingRequestStore)(a)}let p=new WeakMap;function q(a){let b=p.get(a);if(b)return b;let c=Promise.resolve(a);return p.set(a,c),c}(0,k.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Error(`${c}used ${b}. \`cookies()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)})},51125,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"draftMode",{enumerable:!0,get:function(){return m}});let d=a.r(32319),e=a.r(56704),f=a.r(60384),g=a.r(8018),h=a.r(60312),i=a.r(96556),j=a.r(50640),k=a.r(55907);a.r(51409);let l=a.r(13091);function m(){let a="draftMode",b=e.workAsyncStorage.getStore(),c=d.workUnitAsyncStorage.getStore();switch((!b||!c)&&(0,d.throwForMissingRequestStore)(a),c.type){case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(l.RENDER_STAGES_BY_DATA_KIND.sessionData,"draftMode",new q(c.draftMode));return n(c.draftMode,b)}case"request":return n(c.draftMode,b);case"cache":case"private-cache":case"unstable-cache":let f=(0,d.getDraftModeProviderForCacheScope)(b,c);if(f)return n(f,b);case"prerender":case"prerender-legacy":return n(null,b);case"prerender-client":case"validation-client":{let a="`draftMode`";throw new j.InvariantError(`${a} must not be used within a Client Component. Next.js should be preventing ${a} from being included in Client Components statically, but did not in this case.`)}case"build-time-generator":throw Error(`Route ${b.route} used \`${a}()\` inside \`${c.functionName}\`. This is not supported because \`${c.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`);default:return c}}function n(a,b){let c=p.get(a??o);return c||Promise.resolve(new q(a))}let o={},p=new WeakMap;class q{constructor(a){this._provider=a}get isEnabled(){return null!==this._provider&&this._provider.isEnabled}enable(){r("draftMode().enable()",this.enable),null!==this._provider&&this._provider.enable()}disable(){r("draftMode().disable()",this.disable),null!==this._provider&&this._provider.disable()}}function r(a,b){let c=e.workAsyncStorage.getStore(),g=d.workUnitAsyncStorage.getStore();if(c){if((null==g?void 0:g.phase)==="after")throw Error(`Route ${c.route} used "${a}" inside \`after()\`. The enabled status of \`draftMode()\` can be read inside \`after()\` but you cannot enable or disable \`draftMode()\`. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`);if(c.dynamicShouldError)throw new h.StaticGenBailoutError(`Route ${c.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(g)switch(g.type){case"cache":case"private-cache":{let d=(0,k.createDraftModeMutationInUseCacheError)(c.route,a);throw Error.captureStackTrace(d,b),(0,l.applyOwnerStack)(d),c.invalidDynamicUsageError??=d,d}case"unstable-cache":throw(0,k.createDraftModeMutationInUnstableCacheError)(c.route,a);case"prerender":case"prerender-runtime":{let b=Error(`Route ${c.route} used ${a} without first calling \`await connection()\`. See more info here: https://nextjs.org/docs/messages/next-prerender-sync-headers`);return(0,f.abortAndThrowOnSynchronousRequestDataAccess)(c.route,a,b,g)}case"prerender-client":case"validation-client":let d="`draftMode`";throw new j.InvariantError(`${d} must not be used within a Client Component. Next.js should be preventing ${d} from being included in Client Components statically, but did not in this case.`);case"prerender-legacy":g.revalidate=0;let e=new i.DynamicServerError(`Route ${c.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw c.dynamicUsageDescription=a,c.dynamicUsageStack=e.stack,e;case"request":(0,f.trackDynamicDataInDynamicRender)(g);break;case"build-time-generator":throw Error(`Route ${c.route} used \`${a}\` inside \`${g.functionName}\`. This is not supported because \`${g.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`)}}}(0,g.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Error(`${c}used ${b}. \`draftMode()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)})},35754,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"headers",{enumerable:!0,get:function(){return n}});let d=a.r(29927),e=a.r(56704),f=a.r(32319),g=a.r(60384),h=a.r(60312),i=a.r(13091),j=a.r(8018),k=a.r(28091),l=a.r(50640),m=a.r(55907);function n(){let a="headers",b=e.workAsyncStorage.getStore(),c=f.workUnitAsyncStorage.getStore();if(b){if(c&&!(0,k.isRequestApiAllowedInCurrentPhase)(c))throw Error(`Route ${b.route} used \`headers()\` inside \`after()\` while rendering. This is not supported. If you need this data inside an \`after()\` callback, use \`headers()\` outside of the callback. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`);if(b.forceStatic)return p(d.HeadersAdapter.seal(new Headers({})));if(c)switch(c.type){case"cache":{let a=(0,m.createHeadersInUseCacheError)(b.route);throw Error.captureStackTrace(a,n),(0,i.applyOwnerStack)(a),b.invalidDynamicUsageError??=a,a}case"unstable-cache":throw(0,m.createHeadersInUnstableCacheError)(b.route);case"build-time-generator":throw Error(`Route ${b.route} used \`headers()\` inside \`${c.functionName}\`. This is not supported because \`${c.functionName}\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`)}if(b.dynamicShouldError)throw new h.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`headers()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(c)switch(c.type){case"prerender":var j=b,q=c;let e=o.get(q);if(e)return e;let f=(0,i.makeSessionDataHangingPromise)(q.renderSignal,j.route,"`headers()`",q);return o.set(q,f),f;case"prerender-client":case"validation-client":let r="`headers`";throw new l.InvariantError(`${r} must not be used within a client component. Next.js should be preventing ${r} from being included in client components statically, but did not in this case.`);case"prerender-legacy":return(0,g.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(i.RENDER_STAGES_BY_DATA_KIND.sessionData,"headers",c.headers);return p(c.headers)}case"private-cache":return p(c.headers);case"request":if((0,g.trackDynamicDataInDynamicRender)(c),c.asyncApiPromises)return c.asyncApiPromises.headers;return p(c.headers)}}(0,f.throwForMissingRequestStore)(a)}let o=new WeakMap;function p(a){let b=o.get(a);if(b)return b;let c=Promise.resolve(a);return o.set(a,c),c}(0,j.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Error(`${c}used ${b}. \`headers()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`)})},28091,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={isRequestApiAllowedInCurrentPhase:function(){return l},throwForSearchParamsAccessInUseCache:function(){return k},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(60312),g=a.r(20635),h=a.r(24725),i=a.r(55907);function j(a,b){throw new f.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`)}function k(a,b){let c=(0,i.createSearchParamsInUseCacheError)(a.route);throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function l(a){switch(a.phase){case"action":case"render":return!0;case"after":{let a=g.actionAsyncStorage.getStore();if(a&&(a.isAppRoute||a.isAction))return!0;let b=h.afterTaskAsyncStorage.getStore();if(b)return"action"===b.rootTaskSpawnPhase;return!1}}}},55907,(a,b,c)=>{Object.defineProperty(c,"__esModule",{value:!0});var d={createCacheLifeOutsideUseCacheError:function(){return B},createCacheTagOutsideUseCacheError:function(){return A},createConnectionInPrivateUseCacheError:function(){return q},createConnectionInPublicUseCacheError:function(){return p},createConnectionInUnstableCacheError:function(){return r},createCookiesInUnstableCacheError:function(){return l},createCookiesInUseCacheError:function(){return k},createDraftModeMutationInUnstableCacheError:function(){return v},createDraftModeMutationInUseCacheError:function(){return u},createHeadersInUnstableCacheError:function(){return n},createHeadersInUseCacheError:function(){return m},createNestedCacheShortExpireError:function(){return D},createNestedCacheZeroRevalidateError:function(){return C},createRevalidateDuringRenderError:function(){return w},createRevalidateInBuildTimeGeneratorError:function(){return y},createRevalidateInCachedFunctionError:function(){return x},createRouteHandlerRequestInUnstableCacheError:function(){return t},createRouteHandlerRequestInUseCacheError:function(){return s},createSearchParamsInUseCacheError:function(){return o},createUseCachePrivateInsidePublicUseCacheError:function(){return E},createUseCachePrivateInsideUnstableCacheError:function(){return F},createUseCachePrivateOutsideRequestContextError:function(){return G}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="https://nextjs.org/docs/messages/next-request-in-use-cache",g="https://nextjs.org/docs/app/api-reference/functions/unstable_cache",h="https://nextjs.org/docs/messages/use-cache-private-composition",i="https://nextjs.org/docs/messages/revalidate-in-use-cache",j="https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife";function k(a){return Error(`Route "${a}": \`cookies()\` can't be read inside \`"use cache"\`. Read it outside the cached function and pass what you need as an argument.
|
|
2
2
|
Learn more: ${f}`)}function l(a){return Error(`Route "${a}": \`cookies()\` can't be read inside \`unstable_cache()\`. Read it outside the cached function and pass what you need as an argument.
|
|
3
3
|
Learn more: ${g}`)}function m(a){return Error(`Route "${a}": \`headers()\` can't be read inside \`"use cache"\`. Read it outside the cached function and pass what you need as an argument.
|
|
4
4
|
Learn more: ${f}`)}function n(a){return Error(`Route "${a}": \`headers()\` can't be read inside \`unstable_cache()\`. Read it outside the cached function and pass what you need as an argument.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[21776,a=>{"use strict";var b=a.i(36359),c=a.i(7292);a.S([b,"
|
|
1
|
+
module.exports=[21776,a=>{"use strict";var b=a.i(36359),c=a.i(7292);a.S([b,"00817d93b66813c1f16544147af118f6c81d0f496f,f",0,c,"60130bb15961cded68b8676eee6422be45b28ff640,m"],21776)},2726,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]__12qr51qgrrt6o._.js","server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuznb72p7z._.js"].map(b=>a.l(b))).then(()=>b(74493)))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_0pedwblqdoh58._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(()=>{"use strict";module.exports=[45550,a=>{var b=a.i(72131),c=a.i(66036);let d=/\b[\w-]+-extension:\/\//i;function e(a){return"app"===function({stack:a,filename:b,appOrigin:c}){let e=[b,a].filter(Boolean).join("\n");return e.trim()?d.test(e)?"extension":c&&e.includes(c)?"app":"unknown":"unknown"}(a)}a.s(["GlobalErrorListeners",0,function(){return(0,b.useEffect)(()=>{let a=a=>{e({stack:a.error?.stack,filename:a.filename,appOrigin:window.location.origin})&&(0,c.L)("unhandled_exception",{error_message:a.message,error_name:a.error?.name,error_filename:a.filename,error_lineno:a.lineno,error_colno:a.colno})},b=a=>{let b=a.reason;e({stack:b instanceof Error?b.stack:void 0,appOrigin:window.location.origin})&&(0,c.L)("unhandled_rejection",{error_message:b instanceof Error?b.message:String(b),error_name:b instanceof Error?b.name:void 0})};return window.addEventListener("error",a),window.addEventListener("unhandledrejection",b),()=>{window.removeEventListener("error",a),window.removeEventListener("unhandledrejection",b)}},[]),null}],45550)},10815,a=>{var b=a.i(87924),c=a.i(38246),d=a.i(50944),e=a.i(41476),f=a.i(72131),g=a.i(64831);let h={name:"git-branch",size:24,node:[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]};h.node;let i=(0,g.f)(h);var j=a.i(89027);let k={name:"star",size:24,node:[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]};k.node;let l=(0,g.f)(k),m={name:"book-open",size:24,node:[["path",{d:"M12 5v16",key:"1f6ucr"}],["path",{d:"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z",key:"1fyvmf"}]]};m.node;let n=(0,g.f)(m),o={name:"message-circle",size:24,node:[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]};o.node;let p=(0,g.f)(o),q={name:"messages-square",size:24,node:[["path",{d:"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",key:"1n2ejm"}],["path",{d:"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",key:"1qfcsi"}]]};q.node;let r=(0,g.f)(q),s={name:"message-square-warning",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M12 15h.01",key:"q59x07"}],["path",{d:"M12 7v4",key:"xawao1"}]]};s.node;let t=(0,g.f)(s);var u=a.i(40695);let v="failproofai@exosphere.host",w=[{label:"Star us on GitHub",icon:l,href:"https://github.com/failproofai/failproofai",color:"#f5c842",bg:"rgba(245,200,66,0.08)"},{label:"Documentation",icon:n,href:"https://docs.befailproof.ai/introduction",color:"#60a5fa",bg:"rgba(96,165,250,0.08)"},{label:"Join our Discord",icon:p,href:"https://discord.befailproof.ai/",color:"#5865f2",bg:"rgba(88,101,242,0.08)"},{label:"Join r/failproofai",icon:r,href:"https://www.reddit.com/r/failproofai/",color:"#ff4500",bg:"rgba(255,69,0,0.08)"},{label:"Feedback & Issues",icon:t,href:"https://github.com/FailproofAI/failproofai/issues/new/choose",color:"#34d399",bg:"rgba(52,211,153,0.08)"}],x=()=>{let[a,c]=(0,f.useState)(!1),d=(0,f.useCallback)(()=>c(!1),[]),e=(0,f.useCallback)(a=>{"Escape"===a.key&&c(!1)},[]);return(0,b.jsxs)("div",{className:"relative",onKeyDown:e,children:[a&&(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:d,"aria-hidden":"true"}),(0,b.jsxs)(u.f,{type:"button",variant:"ghost",size:"sm",onClick:()=>c(a=>!a),"aria-expanded":a,"aria-haspopup":"true",className:"relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(i,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"hidden sm:inline text-xs whitespace-nowrap",children:"Reach Us"}),(0,b.jsx)(j.f,{className:`h-3 w-3 transition-transform ${a?"rotate-180":""}`})]}),a&&(0,b.jsxs)("div",{className:"absolute right-0 mt-2 w-60 rounded-lg border border-border bg-card shadow-xl z-50",role:"menu",style:{boxShadow:"0 8px 32px rgba(0,0,0,0.45), 0 0 0 1px rgba(255,255,255,0.04)"},children:[(0,b.jsxs)("div",{className:"px-3 py-2.5 border-b border-border",style:{background:"linear-gradient(135deg, rgba(236,72,153,0.12) 0%, rgba(139,92,246,0.08) 100%)"},children:[(0,b.jsx)("p",{className:"text-xs font-semibold",style:{color:"#e879f9",letterSpacing:"0.06em"},children:"Reach Developers"}),(0,b.jsx)("p",{className:"text-[0.65rem] text-muted-foreground mt-0.5",children:"We'd love to hear from you"})]}),(0,b.jsx)("div",{className:"py-1",children:w.map(({label:a,icon:c,href:e,color:f,bg:g})=>(0,b.jsxs)("a",{href:e,target:"_blank",rel:"noopener noreferrer",role:"menuitem",className:"flex items-center gap-2.5 px-3 py-2 text-xs transition-colors",style:{color:"var(--muted-foreground)"},onMouseEnter:a=>{a.currentTarget.style.background=g,a.currentTarget.style.color=f},onMouseLeave:a=>{a.currentTarget.style.background="",a.currentTarget.style.color=""},onClick:d,children:[(0,b.jsx)(c,{className:"h-3.5 w-3.5 flex-shrink-0",style:{color:f}}),a]},a))}),(0,b.jsx)("div",{className:"px-3 py-2 border-t border-border",style:{background:"rgba(0,0,0,0.2)"},children:(0,b.jsxs)("p",{className:"text-[0.65rem] text-muted-foreground",children:["or email"," ",(0,b.jsx)("a",{href:`mailto:${v}`,className:"transition-colors",style:{color:"#e879f9"},onMouseEnter:a=>a.currentTarget.style.opacity="0.75",onMouseLeave:a=>a.currentTarget.style.opacity="1",children:v})]})})]})]})},y={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]};y.node;let z=(0,g.f)(y);var A=a.i(97895),B=a.i(6236);let C=[{label:"Off",value:0},{label:"5s",value:5},{label:"10s",value:10},{label:"30s",value:30}];function D({className:a}){let c=(0,d.useRouter)(),[e,g]=(0,f.useTransition)(),{intervalSec:h,setIntervalSec:i}=(0,B.useAutoRefresh)(),j=(0,f.useCallback)(()=>{g(()=>c.refresh())},[c]);(0,f.useEffect)(()=>{if(h<=0)return;let a=setInterval(j,1e3*h);return()=>clearInterval(a)},[h,j]);let k=h>0;return(0,b.jsxs)("div",{className:(0,A.f)("inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5",a),children:[(0,b.jsx)("button",{onClick:j,title:"Refresh",className:(0,A.f)("inline-flex items-center justify-center rounded-md p-1.5 transition-colors",k?"text-primary hover:bg-primary/10":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:(0,b.jsx)(z,{className:(0,A.f)("w-3.5 h-3.5",e&&"animate-spin")})}),(0,b.jsx)("div",{className:"w-px h-4 bg-border"}),(0,b.jsx)("div",{className:"inline-flex items-center gap-0.5",role:"group","aria-label":"Auto-refresh interval",children:C.map(a=>(0,b.jsx)("button",{onClick:()=>i(a.value),"aria-pressed":h===a.value,className:(0,A.f)("px-2 py-1 text-[11px] font-medium rounded-md transition-colors",h===a.value?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:a.label},a.value))})]})}var E=a.i(10765);let F=[{href:"/projects",label:"projects"},{href:"/policies",label:"policies"},{href:"/audit",label:"audit"}];a.s(["Navbar",0,({disabledPages:a=[]})=>{let f=(0,d.usePathname)(),{capture:g}=(0,E.usePostHog)(),h=f.startsWith("/policies")?"policies":f.startsWith("/audit")?"audit":f.startsWith("/settings")?"settings":f.startsWith("/projects")||f.startsWith("/project/")?"projects":"";return(0,b.jsxs)("header",{className:"app-header",children:[(0,b.jsx)("a",{href:"https://github.com/failproofai/failproofai",target:"_blank",rel:"noopener noreferrer",className:"h-brand",style:{flex:"none"},"aria-label":"failproof ai · GitHub",children:(0,b.jsx)("img",{src:"/logo.svg",alt:"failproof_ai",style:{height:18,display:"block",flexShrink:0}})}),(0,b.jsx)("nav",{className:"tabs",style:{border:"none",padding:0,gap:0},children:F.filter(({href:b})=>{let c=b.slice(1);return!a.includes(c)}).map(({href:a,label:d})=>{let e="/projects"===a?"/projects"===f||f.startsWith("/project/"):f.startsWith(a);return(0,b.jsx)(c.default,{href:a,className:`tab${e?" is-active":""}`,"aria-current":e?"page":void 0,onClick:()=>{"/audit"===a&&g("audit_nav_clicked",{from_path:f,is_active_tab:e})},children:d},a)})}),(0,b.jsx)("div",{style:{flex:1}}),(0,b.jsxs)("div",{className:"h-meta",children:[(0,b.jsxs)("span",{className:"h-version",children:["v","1.0.11
|
|
1
|
+
(()=>{"use strict";module.exports=[45550,a=>{var b=a.i(72131),c=a.i(66036);let d=/\b[\w-]+-extension:\/\//i;function e(a){return"app"===function({stack:a,filename:b,appOrigin:c}){let e=[b,a].filter(Boolean).join("\n");return e.trim()?d.test(e)?"extension":c&&e.includes(c)?"app":"unknown":"unknown"}(a)}a.s(["GlobalErrorListeners",0,function(){return(0,b.useEffect)(()=>{let a=a=>{e({stack:a.error?.stack,filename:a.filename,appOrigin:window.location.origin})&&(0,c.L)("unhandled_exception",{error_message:a.message,error_name:a.error?.name,error_filename:a.filename,error_lineno:a.lineno,error_colno:a.colno})},b=a=>{let b=a.reason;e({stack:b instanceof Error?b.stack:void 0,appOrigin:window.location.origin})&&(0,c.L)("unhandled_rejection",{error_message:b instanceof Error?b.message:String(b),error_name:b instanceof Error?b.name:void 0})};return window.addEventListener("error",a),window.addEventListener("unhandledrejection",b),()=>{window.removeEventListener("error",a),window.removeEventListener("unhandledrejection",b)}},[]),null}],45550)},10815,a=>{var b=a.i(87924),c=a.i(38246),d=a.i(50944),e=a.i(41476),f=a.i(72131),g=a.i(64831);let h={name:"git-branch",size:24,node:[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]]};h.node;let i=(0,g.f)(h);var j=a.i(89027);let k={name:"star",size:24,node:[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]};k.node;let l=(0,g.f)(k),m={name:"book-open",size:24,node:[["path",{d:"M12 5v16",key:"1f6ucr"}],["path",{d:"M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z",key:"1fyvmf"}]]};m.node;let n=(0,g.f)(m),o={name:"message-circle",size:24,node:[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]]};o.node;let p=(0,g.f)(o),q={name:"messages-square",size:24,node:[["path",{d:"M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z",key:"1n2ejm"}],["path",{d:"M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1",key:"1qfcsi"}]]};q.node;let r=(0,g.f)(q),s={name:"message-square-warning",size:24,node:[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}],["path",{d:"M12 15h.01",key:"q59x07"}],["path",{d:"M12 7v4",key:"xawao1"}]]};s.node;let t=(0,g.f)(s);var u=a.i(40695);let v="failproofai@exosphere.host",w=[{label:"Star us on GitHub",icon:l,href:"https://github.com/failproofai/failproofai",color:"#f5c842",bg:"rgba(245,200,66,0.08)"},{label:"Documentation",icon:n,href:"https://docs.befailproof.ai/introduction",color:"#60a5fa",bg:"rgba(96,165,250,0.08)"},{label:"Join our Discord",icon:p,href:"https://discord.befailproof.ai/",color:"#5865f2",bg:"rgba(88,101,242,0.08)"},{label:"Join r/failproofai",icon:r,href:"https://www.reddit.com/r/failproofai/",color:"#ff4500",bg:"rgba(255,69,0,0.08)"},{label:"Feedback & Issues",icon:t,href:"https://github.com/FailproofAI/failproofai/issues/new/choose",color:"#34d399",bg:"rgba(52,211,153,0.08)"}],x=()=>{let[a,c]=(0,f.useState)(!1),d=(0,f.useCallback)(()=>c(!1),[]),e=(0,f.useCallback)(a=>{"Escape"===a.key&&c(!1)},[]);return(0,b.jsxs)("div",{className:"relative",onKeyDown:e,children:[a&&(0,b.jsx)("div",{className:"fixed inset-0 z-40",onClick:d,"aria-hidden":"true"}),(0,b.jsxs)(u.f,{type:"button",variant:"ghost",size:"sm",onClick:()=>c(a=>!a),"aria-expanded":a,"aria-haspopup":"true",className:"relative z-50 flex items-center gap-1.5 text-muted-foreground hover:text-foreground",children:[(0,b.jsx)(i,{className:"h-4 w-4"}),(0,b.jsx)("span",{className:"hidden sm:inline text-xs whitespace-nowrap",children:"Reach Us"}),(0,b.jsx)(j.f,{className:`h-3 w-3 transition-transform ${a?"rotate-180":""}`})]}),a&&(0,b.jsxs)("div",{className:"absolute right-0 mt-2 w-60 rounded-lg border border-border bg-card shadow-xl z-50",role:"menu",style:{boxShadow:"0 8px 32px rgba(0,0,0,0.45), 0 0 0 1px rgba(255,255,255,0.04)"},children:[(0,b.jsxs)("div",{className:"px-3 py-2.5 border-b border-border",style:{background:"linear-gradient(135deg, rgba(236,72,153,0.12) 0%, rgba(139,92,246,0.08) 100%)"},children:[(0,b.jsx)("p",{className:"text-xs font-semibold",style:{color:"#e879f9",letterSpacing:"0.06em"},children:"Reach Developers"}),(0,b.jsx)("p",{className:"text-[0.65rem] text-muted-foreground mt-0.5",children:"We'd love to hear from you"})]}),(0,b.jsx)("div",{className:"py-1",children:w.map(({label:a,icon:c,href:e,color:f,bg:g})=>(0,b.jsxs)("a",{href:e,target:"_blank",rel:"noopener noreferrer",role:"menuitem",className:"flex items-center gap-2.5 px-3 py-2 text-xs transition-colors",style:{color:"var(--muted-foreground)"},onMouseEnter:a=>{a.currentTarget.style.background=g,a.currentTarget.style.color=f},onMouseLeave:a=>{a.currentTarget.style.background="",a.currentTarget.style.color=""},onClick:d,children:[(0,b.jsx)(c,{className:"h-3.5 w-3.5 flex-shrink-0",style:{color:f}}),a]},a))}),(0,b.jsx)("div",{className:"px-3 py-2 border-t border-border",style:{background:"rgba(0,0,0,0.2)"},children:(0,b.jsxs)("p",{className:"text-[0.65rem] text-muted-foreground",children:["or email"," ",(0,b.jsx)("a",{href:`mailto:${v}`,className:"transition-colors",style:{color:"#e879f9"},onMouseEnter:a=>a.currentTarget.style.opacity="0.75",onMouseLeave:a=>a.currentTarget.style.opacity="1",children:v})]})})]})]})},y={name:"refresh-cw",size:24,node:[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]};y.node;let z=(0,g.f)(y);var A=a.i(97895),B=a.i(6236);let C=[{label:"Off",value:0},{label:"5s",value:5},{label:"10s",value:10},{label:"30s",value:30}];function D({className:a}){let c=(0,d.useRouter)(),[e,g]=(0,f.useTransition)(),{intervalSec:h,setIntervalSec:i}=(0,B.useAutoRefresh)(),j=(0,f.useCallback)(()=>{g(()=>c.refresh())},[c]);(0,f.useEffect)(()=>{if(h<=0)return;let a=setInterval(j,1e3*h);return()=>clearInterval(a)},[h,j]);let k=h>0;return(0,b.jsxs)("div",{className:(0,A.f)("inline-flex items-center rounded-lg border border-border bg-muted/50 p-0.5 gap-0.5",a),children:[(0,b.jsx)("button",{onClick:j,title:"Refresh",className:(0,A.f)("inline-flex items-center justify-center rounded-md p-1.5 transition-colors",k?"text-primary hover:bg-primary/10":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:(0,b.jsx)(z,{className:(0,A.f)("w-3.5 h-3.5",e&&"animate-spin")})}),(0,b.jsx)("div",{className:"w-px h-4 bg-border"}),(0,b.jsx)("div",{className:"inline-flex items-center gap-0.5",role:"group","aria-label":"Auto-refresh interval",children:C.map(a=>(0,b.jsx)("button",{onClick:()=>i(a.value),"aria-pressed":h===a.value,className:(0,A.f)("px-2 py-1 text-[11px] font-medium rounded-md transition-colors",h===a.value?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground hover:bg-muted"),children:a.label},a.value))})]})}var E=a.i(10765);let F=[{href:"/projects",label:"projects"},{href:"/policies",label:"policies"},{href:"/audit",label:"audit"}];a.s(["Navbar",0,({disabledPages:a=[]})=>{let f=(0,d.usePathname)(),{capture:g}=(0,E.usePostHog)(),h=f.startsWith("/policies")?"policies":f.startsWith("/audit")?"audit":f.startsWith("/settings")?"settings":f.startsWith("/projects")||f.startsWith("/project/")?"projects":"";return(0,b.jsxs)("header",{className:"app-header",children:[(0,b.jsx)("a",{href:"https://github.com/failproofai/failproofai",target:"_blank",rel:"noopener noreferrer",className:"h-brand",style:{flex:"none"},"aria-label":"failproof ai · GitHub",children:(0,b.jsx)("img",{src:"/logo.svg",alt:"failproof_ai",style:{height:18,display:"block",flexShrink:0}})}),(0,b.jsx)("nav",{className:"tabs",style:{border:"none",padding:0,gap:0},children:F.filter(({href:b})=>{let c=b.slice(1);return!a.includes(c)}).map(({href:a,label:d})=>{let e="/projects"===a?"/projects"===f||f.startsWith("/project/"):f.startsWith(a);return(0,b.jsx)(c.default,{href:a,className:`tab${e?" is-active":""}`,"aria-current":e?"page":void 0,onClick:()=>{"/audit"===a&&g("audit_nav_clicked",{from_path:f,is_active_tab:e})},children:d},a)})}),(0,b.jsx)("div",{style:{flex:1}}),(0,b.jsxs)("div",{className:"h-meta",children:[(0,b.jsxs)("span",{className:"h-version",children:["v","1.0.11"]}),h&&(0,b.jsx)("span",{className:"h-brand-sep","aria-hidden":"true",children:"·"}),h&&(0,b.jsx)("span",{className:"h-brand-section",children:h})]}),(0,b.jsxs)("div",{className:"h-actions",children:[(0,b.jsx)(D,{}),(0,b.jsx)("span",{style:{width:1,height:18,background:"var(--line)",margin:"0 6px"}}),!a.includes("settings")&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(c.default,{href:"/settings",className:`h-icon-btn${f.startsWith("/settings")?" is-active":""}`,"aria-label":"settings","aria-current":f.startsWith("/settings")?"page":void 0,title:"settings",children:(0,b.jsx)(e.f,{className:"w-3.5 h-3.5",strokeWidth:1.75,"aria-hidden":"true"})}),(0,b.jsx)("span",{style:{width:1,height:18,background:"var(--line)",margin:"0 6px"}})]}),(0,b.jsx)(x,{})]})]})}],10815)}]})();
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=_1djqs9i27e4kg._.js.map
|
|
@@ -22,7 +22,7 @@ ${c.indent}`)}}else(""===z||"\n"===z[0])&&(A="");return x+=A+z,c.inFlow?y&&h&&h(
|
|
|
22
22
|
${c}`)+"'";return b.implicitKey?d:f.foldFlowLines(d,c,f.FOLD_FLOW,g(b,!1))}function j(a,b){let c,{singleQuote:d}=b.options;if(!1===d)c=h;else{let b=a.includes('"'),e=a.includes("'");c=b&&!e?i:e&&!b?h:d?i:h}return c(a,b)}try{d=RegExp("(^|(?<!\n))\n+(?!\n|$)","g")}catch{d=/\n+(?!\n|$)/g}function k({comment:a,type:b,value:c},h,i,l){let m,n,o,p,{blockQuote:q,commentString:r,lineWidth:s}=h.options;if(!q||/\n[\t ]+$/.test(c))return j(c,h);let t=h.indent||(h.forceBlockIndent||(p=c,/^(%|---|\.\.\.)/m.test(p))?" ":""),u="literal"===q||"folded"!==q&&b!==e.Scalar.BLOCK_FOLDED&&(b===e.Scalar.BLOCK_LITERAL||!function(a,b,c){if(!b||b<0)return!1;let d=b-c,e=a.length;if(e<=d)return!1;for(let b=0,c=0;b<e;++b)if("\n"===a[b]){if(b-c>d)return!0;if(e-(c=b+1)<=d)return!1}return!0}(c,s,t.length));if(!c)return u?"|\n":">\n";for(n=c.length;n>0;--n){let a=c[n-1];if("\n"!==a&&" "!==a&&" "!==a)break}let v=c.substring(n),w=v.indexOf("\n");-1===w?m="-":c===v||w!==v.length-1?(m="+",l&&l()):m="",v&&(c=c.slice(0,-v.length),"\n"===v[v.length-1]&&(v=v.slice(0,-1)),v=v.replace(d,`$&${t}`));let x=!1,y=-1;for(o=0;o<c.length;++o){let a=c[o];if(" "===a)x=!0;else if("\n"===a)y=o;else break}let z=c.substring(0,y<o?y+1:o);z&&(c=c.substring(z.length),z=z.replace(/\n+/g,`$&${t}`));let A=t?"2":"1",B=(x?A:"")+m;if(a&&(B+=" "+r(a.replace(/ ?[\r\n]+/g," ")),i&&i()),!u){let a=c.replace(/\n+/g,"\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${t}`),d=!1,i=g(h,!0);"folded"!==q&&b!==e.Scalar.BLOCK_FOLDED&&(i.onOverflow=()=>{d=!0});let j=f.foldFlowLines(`${z}${a}${v}`,t,f.FOLD_BLOCK,i);if(!d)return`>${B}
|
|
23
23
|
${t}${j}`}return c=c.replace(/\n+/g,`$&${t}`),`|${B}
|
|
24
24
|
${t}${z}${c}${v}`}c.stringifyString=function(a,b,c,d){let{implicitKey:l,inFlow:m}=b,n="string"==typeof a.value?a:Object.assign({},a,{value:String(a.value)}),{type:o}=a;o!==e.Scalar.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(n.value)&&(o=e.Scalar.QUOTE_DOUBLE);let p=a=>{switch(a){case e.Scalar.BLOCK_FOLDED:case e.Scalar.BLOCK_LITERAL:return l||m?j(n.value,b):k(n,b,c,d);case e.Scalar.QUOTE_DOUBLE:return h(n.value,b);case e.Scalar.QUOTE_SINGLE:return i(n.value,b);case e.Scalar.PLAIN:return function(a,b,c,d){let{type:h,value:i}=a,{actualString:l,implicitKey:m,indent:n,indentStep:o,inFlow:p}=b;if(m&&i.includes("\n")||p&&/[[\]{},]/.test(i))return j(i,b);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(i))return m||p||!i.includes("\n")?j(i,b):k(a,b,c,d);if(!m&&!p&&h!==e.Scalar.PLAIN&&i.includes("\n"))return k(a,b,c,d);if(/^(%|---|\.\.\.)/m.test(i)){if(""===n)return b.forceBlockIndent=!0,k(a,b,c,d);else if(m&&n===o)return j(i,b)}let q=i.replace(/\n+/g,`$&
|
|
25
|
-
${n}`);if(l){let a=a=>a.default&&"tag:yaml.org,2002:str"!==a.tag&&a.test?.test(q),{compat:c,tags:d}=b.doc.schema;if(d.some(a)||c?.some(a))return j(i,b)}return m?q:f.foldFlowLines(q,n,f.FOLD_FLOW,g(b,!1))}(n,b,c,d);default:return null}},q=p(o);if(null===q){let{defaultKeyType:a,defaultStringType:c}=b.options,d=l&&a||c;if(null===(q=p(d)))throw Error(`Unsupported default string type ${d}`)}return q}},85927,(a,b,c)=>{var d=a.r(27267);let e=Symbol("break visit"),f=Symbol("skip children"),g=Symbol("remove node");function h(a,b){let c=l(b);d.isDocument(a)?i(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):i(null,a,c,Object.freeze([]))}function i(a,b,c,f){let h=m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),i(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=i(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=i("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=i("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}async function j(a,b){let c=l(b);d.isDocument(a)?await k(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):await k(null,a,c,Object.freeze([]))}async function k(a,b,c,f){let h=await m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),k(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=await k(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=await k("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=await k("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}function l(a){return"object"==typeof a&&(a.Collection||a.Node||a.Value)?Object.assign({Alias:a.Node,Map:a.Node,Scalar:a.Node,Seq:a.Node},a.Value&&{Map:a.Value,Scalar:a.Value,Seq:a.Value},a.Collection&&{Map:a.Collection,Seq:a.Collection},a):a}function m(a,b,c,e){return"function"==typeof c?c(a,b,e):d.isMap(b)?c.Map?.(a,b,e):d.isSeq(b)?c.Seq?.(a,b,e):d.isPair(b)?c.Pair?.(a,b,e):d.isScalar(b)?c.Scalar?.(a,b,e):d.isAlias(b)?c.Alias?.(a,b,e):void 0}function n(a,b,c){let e=b[b.length-1];if(d.isCollection(e))e.items[a]=c;else if(d.isPair(e))"key"===a?e.key=c:e.value=c;else if(d.isDocument(e))e.contents=c;else{let a=d.isAlias(e)?"alias":"scalar";throw Error(`Cannot replace node with ${a} parent`)}}h.BREAK=e,h.SKIP=f,h.REMOVE=g,j.BREAK=e,j.SKIP=f,j.REMOVE=g,c.visit=h,c.visitAsync=j},17280,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(9909),f=a.i(86304);let g="failproofai-pack.json",h="failproofai-pack.mjs",i="SHA256SUMS";function j(){return(process.env.FAILPROOFAI_PACK_BASE_URL||"https://github.com").replace(/\/+$/,"")}let k=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,l=/^[A-Za-z0-9][A-Za-z0-9._/-]{0,127}$/,m="FailproofAI/policies",n=new Set(["core","failproofai","official"]);function o(a){let b=a.trim();if(0===b.length)throw Error("pack source is empty");let c=b.match(/^(?:https?:\/\/)?(?:www\.)?github\.com\/(.+)$/i);if(c){let[a,b,...d]=c[1].replace(/\/+$/,"").split("/"),e=null;if("releases"===d[0]&&("tag"===d[1]||"download"===d[1])){let a=d.slice(2);e=("download"===d[1]?a.slice(0,-1):a).join("/")||null}else"releases"===d[0]&&"latest"===d[1]&&(e=null);return p(a,b,e)}let d=b.replace(/^github:/i,""),e=d.lastIndexOf("@"),f=e>0?d.slice(0,e):d,g=e>0?d.slice(e+1):null,h=f.indexOf("/");if(h<=0||h===f.length-1){if(n.has(f.trim().toLowerCase()))throw Error(`${JSON.stringify(a)} is no longer a pack name — ours is a pack like anyone else's now. Use ${m} instead.`);throw Error(`pack source must be owner/repo, owner/repo@tag, or a github.com URL — got ${JSON.stringify(a)}`)}return p(f.slice(0,h),f.slice(h+1),g)}function p(a,b,c){if(!a||!k.test(a))throw Error(`unsafe owner ${JSON.stringify(a)}`);if(!b||!k.test(b))throw Error(`unsafe repo ${JSON.stringify(b)}`);if(null!==c&&!l.test(c))throw Error(`unsafe tag ${JSON.stringify(c)}`);return{owner:a,repo:b,tag:c}}async function q(a){let b=`${j()}/${a.owner}/${a.repo}/releases/latest`,c=await fetch(b,{signal:AbortSignal.timeout(3e4),redirect:"manual"}),d=c.headers.get("location");if(!d)throw Error(`could not resolve the newest release of ${a.owner}/${a.repo} (GET ${b} returned ${c.status} with no redirect). That redirect is issued only for a published, non-prerelease release, so either the repository has no releases at all or every release it has is a prerelease or a draft. Name a tag explicitly.`);let e=d.match(/\/releases\/tag\/(.+)$/);if(!e)throw Error(`unexpected redirect from ${b}: ${d}`);let f=decodeURIComponent(e[1]).replace(/\/+$/,"");if(!l.test(f))throw Error(`unsafe tag ${JSON.stringify(f)} from ${b}`);return f}async function r(b,c){let d,e=c.toLowerCase(),f=`${(process.env.FAILPROOFAI_GITHUB_API??"https://api.github.com").replace(/\/+$/,"")}/repos/${b.owner}/${b.repo}/releases?per_page=100`;try{let a=(process.env.GITHUB_TOKEN||process.env.GH_TOKEN||"").trim(),b=await fetch(f,{headers:{...a?{Authorization:`Bearer ${a}`}:{},Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"failproofai"},signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${f} returned ${b.status}`);d=await b.json()}catch(a){throw Error(`could not resolve commit ${c} in ${b.owner}/${b.repo}: ${L(a)}. Name the release tag instead if you know it.`)}let{parseReleaseBody:g}=await a.A(49679),h=Array.isArray(d)?d:[],i=[];for(let a of h){let b="string"==typeof a.tag_name?a.tag_name:"";if(!b||!l.test(b))continue;let c=g("string"==typeof a.body?a.body:"");c.commit&&c.commit.startsWith(e)&&i.push({tag:b,commit:c.commit})}if(i.length>1)throw Error(`commit ${c} matches ${i.length} releases of ${b.owner}/${b.repo}: `+i.map(a=>`${a.tag} (${a.commit})`).join(", ")+". Name one of those tags, or type more of the commit.");return 1===i.length?i[0].tag:null}async function s(a){return null===a.tag?q(a):e.r.test(a.tag)?await r(a,a.tag)??a.tag:a.tag}function t(a){return`github:${a.owner}/${a.repo}@${a.tag}`}function u(a,b){return`${j()}/${a.owner}/${a.repo}/releases/download/${a.tag}/${b}`}async function v(a){let b=await fetch(a,{signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${a} returned ${b.status}`);let c=b.headers.get("content-length");if(null!==c){let d=Number(c);if(Number.isFinite(d)&&d>8388608)throw await b.body?.cancel(),Error(`${a} declares ${d} bytes, over the 8388608 limit`)}if(!b.body)return Buffer.alloc(0);let d=[],e=b.body.getReader(),f=0;try{for(;;){let{done:b,value:c}=await e.read();if(b)break;if((f+=c.byteLength)>8388608)throw await e.cancel(),Error(`${a} is over the 8388608 byte limit`);d.push(Buffer.from(c))}}finally{e.releaseLock()}return Buffer.concat(d,f)}function w(a,b){for(let c of a.split("\n")){let a=c.trim().match(/^([0-9a-f]{64})\s+\*?(.+)$/i);if(a&&a[2].trim()===b)return a[1].toLowerCase()}return null}function x(a){return(0,b.createHash)("sha256").update(a).digest("hex")}function y(a,b){let e=`${a}.${process.pid}.tmp`;try{(0,c.mkdirSync)((0,d.dirname)(a),{recursive:!0}),(0,c.writeFileSync)(e,b),(0,c.renameSync)(e,a)}catch(a){throw(0,c.rmSync)(e,{force:!0}),a}}function z(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} semantic is not an array`);if(b.length>e.P)throw Error(`pack ${a} declares ${b.length} semantic policies, over the cap of ${e.P}`);let c=b.map((b,c)=>(0,e.U)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);d.add(b.name)}return c}function A(a,b){let c=(0,e.T)(a,b);if("too-old"===c.kind)throw Error(c.reason);return"unreadable"===c.kind?{minCliVersionNote:c.reason}:c.declared?{minCliVersion:c.declared}:{}}async function B(a,b={}){let c=await I(a,b);return{id:c.id,version:c.version,enabled:c.enabled,available:c.available,bundled:!1,source:c.source,tag:c.tag,resolvedFromLatest:c.resolvedFromLatest,selection:c.selection,categories:c.categories}}async function C(a){let b;if("1"===process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("FAILPROOFAI_NO_DOWNLOAD is set, so nothing can be fetched to preview");let c=o(a),d=null===c.tag,f={...c,tag:await s(c)},h=(await v(u(f,i))).toString("utf8"),j=await v(u(f,g)),k=w(h,g);if(!k)throw Error(`${i} has no entry for ${g}`);if(x(j)!==k)throw Error(`${g} failed integrity verification`);try{b=JSON.parse(j.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let l=b,m=(0,e.$)(l),n=A(m.id,l.minCliVersion),p=z(m.id,l.semantic),q=D(m.id,l.policies);return E(q,p),{id:m.id,version:m.version,effect:m.effect,...m.commit?{commit:m.commit}:{},policies:q,semantic:p,...n,source:t(f),resolvedFromLatest:d}}function D(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} policies is not an array`);let c=b.map((b,c)=>(0,e.Z)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares ${b.name} twice`);d.add(b.name)}return c}function E(a,b){if(0===a.length&&0===b.length)throw Error("pack manifest declares no policies")}async function F(a){let b,c=(await v(u(a,i))).toString("utf8"),d=await v(u(a,g)),f=w(c,g);if(!f)throw Error(`${i} has no entry for ${g}`);if(x(d)!==f)throw Error(`${g} failed integrity verification`);let j=await v(u(a,h)),k=w(c,h);if(!k)throw Error(`${i} has no entry for ${h}`);let l=x(j);if(l!==k)throw Error(`${h} failed integrity verification`);try{b=JSON.parse(d.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let m=b,n=(0,e.$)(m),o=A(n.id,m.minCliVersion),p=D(n.id,m.policies),q=z(n.id,m.semantic);return E(p,q),{id:n.id,version:n.version,policies:p,semantic:q,...o,...void 0!==m.effect?{effect:n.effect}:{},...n.commit?{commit:n.commit}:{},artifact:j,artifactDigest:l}}function G(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}async function H(b,c){let d,{loadCustomHooks:e}=await a.A(6188);try{d=(await e(b,{strict:!0})).map(a=>a.name)}catch(a){throw Error(`its artifact could not be loaded: ${a instanceof Error?a.message:String(a)}`)}let f=c.filter(a=>!d.includes(a)),g=d.filter(a=>!c.includes(a));if(f.length>0)throw Error(`its manifest declares ${f.join(", ")} but the artifact does not register ${1===f.length?"it":"them"} — that would install as protection that never runs`);if(g.length>0)throw Error(`its artifact registers undeclared ${g.join(", ")} — a policy that enforces but appears in no listing cannot be reviewed or switched off`)}async function I(a,b){var g,h,i,j;let k,l;if(process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("pack downloads are disabled (FAILPROOFAI_NO_DOWNLOAD). Already-installed packs keep enforcing.");let m=o(a),n={...m,tag:await s(m)},p=null===m.tag,q=await F(n);if(g=n.tag,h=q.version,(k=g.slice(g.lastIndexOf("/")+1))!==h&&k!==`v${h}`){let a=n.tag.slice(n.tag.lastIndexOf("/")+1).replace(/^v/,""),b=`re-tag the release ${q.version} (a leading v is fine), or rebuild the pack with --version ${a}`;throw Error(`${q.id} was not installed: release tag ${n.tag} does not match the version its manifest declares (${q.version}). `+(p?`That is the newest release of ${n.owner}/${n.repo}, so the release and the pack disagree at the source — ask the publisher to ${b}.`:`Name the tag whose manifest says ${q.version}, or fix the pack: ${b}.`))}if(/^failproofai\//i.test(q.id)&&!(0,f.g)({source:t(n)}))throw Error(`${q.id} was not installed: the FailproofAI/ namespace is reserved for releases from github.com/FailproofAI, and this one came from ${n.owner}/${n.repo}.`);let r=q.policies.map(a=>a.name),u=(i=q.id,j=q.artifactDigest,(l=(0,e.V)().packs).find(a=>a.id===i)??l.find(a=>a.sha256===j)),{enabled:v,reason:w}=function(a,b,c,d){let e=a.map(a=>a.name);if(b?.all)return{enabled:null,reason:"all"};let f=new Set;if(b?.categories?.length){let c=new Set(b.categories.map(G)),d=new Map(a.map(a=>[G(a.category),a.category])),e=[...c].filter(a=>!d.has(a));if(e.length>0)throw Error(`no such categor${1===e.length?"y":"ies"}: ${e.join(", ")} (has: ${[...new Set(a.map(a=>G(a.category)))].join(", ")})`);for(let b of a)c.has(G(b.category))&&f.add(b.name)}if(b?.only?.length){let a=b.only.filter(a=>!e.includes(a));if(a.length>0)throw Error(`pack does not contain ${a.join(", ")}`);for(let a of b.only)f.add(a)}if(b?.only!==void 0||b?.categories?.length){if(b.merge&&d){if(null===c)return{enabled:null,reason:"carried"};for(let a of c??[])f.add(a);return{enabled:e.filter(a=>f.has(a)),reason:"added"}}return{enabled:e.filter(a=>f.has(a)),reason:"selected"}}return d?{enabled:null===c?null:c??null,reason:"carried"}:{enabled:a.filter(a=>a.defaultEnabled).map(a=>a.name),reason:"defaults"}}(q.policies,b,u?.enabled?u.enabled.filter(a=>r.includes(a)):u?.enabled,!!u),x=(0,e.N)(),z=`artifacts/${q.artifactDigest}.mjs`,A=(0,d.resolve)(x,z);(0,c.existsSync)(A)||y(A,q.artifact);try{await H(A,r)}catch(a){throw Error(`${q.id}@${q.version} was not installed: ${a instanceof Error?a.message:String(a)}`)}let B=a=>{let b=a.lastIndexOf("@");return b>a.indexOf(":")?a.slice(0,b):a};if(u&&u.id===q.id&&!u.source.startsWith("bundled:")&&B(u.source)!==B(t(n)))throw Error(`pack id ${q.id} is already installed from ${u.source}. Refusing to replace it with ${t(n)} — remove it first if that is what you mean.`);let C={id:q.id,version:q.version,source:t(n),entry:z,sha256:q.artifactDigest,policies:q.policies,...q.semantic.length>0?{semantic:q.semantic}:{},...q.minCliVersion?{minCliVersion:q.minCliVersion}:{},...q.commit?{commit:q.commit}:{},...q.effect?{effect:q.effect}:{},...v?{enabled:v}:{},...b?.clis?{clis:b.clis}:b?.merge!==!1&&u?.clis?{clis:u.clis}:{}};return{replaced:function(a,b=!0){let f=(0,d.resolve)((0,e.N)(),"installed.json"),g=[];if((0,c.existsSync)(f))try{let a=JSON.parse((0,c.readFileSync)(f,"utf8"));Array.isArray(a.packs)&&(g=a.packs)}catch{throw Error(`existing pack manifest at ${f} is unreadable; move it aside and re-add`)}let h=g.filter(b=>b?.sha256===a.sha256&&b?.id!==a.id).map(a=>a.id);if(b&&!a.enabled){let b=g.find(a=>h.includes(a?.id)),c=b?.enabled?.filter(b=>a.policies?.some(a=>a?.name===b));c&&c.length>0&&(a.enabled=c)}let i=g.filter(a=>!h.includes(a?.id)),j=i.findIndex(b=>b?.id===a.id);return j>=0?i[j]=a:i.push(a),y(f,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),h}(C,"all"!==w),id:q.id,version:q.version,source:C.source,tag:n.tag,resolvedFromLatest:p,enabled:v??r,available:r,selection:w,categories:[...new Set(q.policies.map(a=>G(a.category)))],semantic:q.semantic.length,...q.minCliVersionNote?{minCliVersionNote:q.minCliVersionNote}:{},...q.effect?{effect:q.effect}:{},...C.clis?{clis:C.clis}:{},artifact:A}}function J(a){let b=a.trim(),c=b.lastIndexOf("@");return(c>0?b.slice(0,c):b).trim()}class K extends Error{candidates;constructor(a,b){super(`${b} matches ${a.length} installed packs: ${a.join(", ")}. Name one of them exactly.`),this.candidates=a,this.name="AmbiguousPackId"}}function L(a){return a instanceof Error?a.message:String(a)}a.s(["w",0,m,"U",0,i,"Z",0,h,"v",0,g,"I",0,I,"z",0,B,"k",0,C,"R",0,function(a){let b,f=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(f))return null;try{b=JSON.parse((0,c.readFileSync)(f,"utf8"))}catch{return null}let g=Array.isArray(b.packs)?b.packs:[],h=g.find(b=>b?.id===J(a)),i=g.filter(b=>{var c;return b?.id&&(c=b.id,J(c).toLowerCase()===J(a).toLowerCase())});if(!h&&i.length>1)throw new K(i.map(a=>a.id).filter(a=>"string"==typeof a),a);let j=h??i[0],k=g.filter(a=>a!==j);return j&&k.length!==g.length?(y(f,JSON.stringify({schemaVersion:1,packs:k},null,2)+"\n"),j.id):null},"g",0,function(a,b,f){let g,h=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(h))return{ok:!1,reason:"no packs are installed"};try{g=JSON.parse((0,c.readFileSync)(h,"utf8"))}catch{return{ok:!1,reason:`pack manifest at ${h} is unreadable`}}let i=Array.isArray(g.packs)?g.packs:[],j=i.find(b=>b?.id===a);if(!j)return{ok:!1,reason:`no installed pack with id ${a}`};let k=(Array.isArray(j.policies)?j.policies:[]).map(a=>"string"==typeof a?.name?a.name:null).filter(a=>null!==a);if(!k.includes(b))return{ok:!1,reason:`pack ${a} declares no policy named ${b}`};let l=j.enabled??k,m=f?[...new Set([...l,b])]:l.filter(a=>a!==b);return j.enabled=k.filter(a=>m.includes(a)),y(h,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),{ok:!0}}])},1459,a=>{var b=a.i(1457),c=a.i(12072);let d={rgb:[102,209,181],c256:79,basic:"36"},e={rgb:[228,88,125],c256:168,basic:"95"},f={rgb:[227,179,65],c256:179,basic:"33"},g={rgb:[107,118,132],basic:"2"},h={rgb:[118,127,139],basic:"2"},i={rgb:[62,67,76],basic:"2"},j={rgb:[240,113,120],c256:203,basic:"31"};function k(a){return!!a.isTTY&&!process.env.NO_COLOR}let l="\x1b[0m";function m(){return/truecolor|24bit/i.test(process.env.COLORTERM||"")?"truecolor":/256color/i.test(process.env.TERM||"")?"ansi256":"basic"}function n(a,b){return"truecolor"===b?`38;2;${a.rgb[0]};${a.rgb[1]};${a.rgb[2]}`:"ansi256"===b&&void 0!==a.c256?`38;5;${a.c256}`:a.basic}let o=["...tt........","..tttt.......",".tttttt..pppp",".tttttt..pppp","..tttt...pppp","...tt....pppp",".........pppp",".........pppp","..pppp...pppp","..pppp...pppp","..pppp...pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp","..pppp...pppp","..ppppppppppp","..ppppppppppp","..ppppppppppp","..ppppppppppp"];function p(a,b){let c=0,d="",e=0;for(;e<a.length;)if("\x1b"===a[e]&&"["===a[e+1]){let b=e+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;b++,d+=a.slice(e,b),e=b}else{if(c>=b)break;d+=a[e],c++,e++}return d}function q(a,b,c,d={}){let e=a.columns||80,f=d.cut??!0,g=c.map(a=>""!==a&&f?p(a,e):a).join("\n")+"\n",h=b.lastCount>0?`\x1b[${b.lastCount}A\x1b[J`:"";a.write(`\x1b[?2026h${d.lead??""}${h}${g}${d.tail??""}\x1b[?2026l`),b.lastCount=c.length}function r(a){let b=0,c=0;for(;c<a.length;)if("\x1b"===a[c]&&"["===a[c+1]){let b=c+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;c=b+1}else b++,c++;return b}function s(a){let b=[],c="",d=0;for(;d<a.length;)if("\x1b"===a[d]&&"["===a[d+1]){let b=d+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;let e=a.slice(d,b+1);c=/\[0?m$/.test(e)?"":c+e,d=b+1}else b.push({ch:a[d],active:c}),d++;return b}function t(a){let b="",c="";for(let d of a)d.active!==c&&(c&&(b+=l),b+=d.active,c=d.active),b+=d.ch;return c?b+l:b}function u(a,b,c="left"){let d=Math.max(0,b-r(a));return"right"===c?" ".repeat(d)+a:a+" ".repeat(d)}Symbol("failproofai.back"),Symbol("failproofai.open-source"),Object.values({on:"✓ ON",off:"· OFF",mixed:"◐ MIXED",locked:"✓ LOCK",cloud:"✓ CLOUD",pack:"✓ PACK",failed:"▲ FAIL",observe:"◉ OBS"}).map(a=>a.length),a.s(["J",0," ","v",0,k,"w",0,function(a=process.stdout){return{cols:a.columns||80,color:k(a)}},"m",0,function(a={}){var k;let v,w,{cols:x,c:y}={cols:Math.max(20,a?.cols??80),c:(v=(k=a?.color??!1)?m():"basic",{bold:a=>k?`\x1b[1m${a}\x1b[0m`:a,dim:(w=(a,b=!1)=>c=>k?`\x1b[${b?"1;":""}${n(a,v)}m${c}\x1b[0m`:c)(g),guide:w(d),pink:w(e),pinkBold:w(e,!0),softPink:w(e),warn:w(f),ink2:a=>a,ink3:w(h),track:w(i),err:w(j)})},z=a.color??!1,A=a.version??c.version,B=y.ink3(" · "),C=(a,b)=>b?a(b):"",D=a=>y.pink(a),E=y.guide("●"),F=y.ink3("○"),G=y.err("✕"),H=y.pink("■"),I=y.ink3("□"),J=a=>`${y.bold("fa")}${y.pinkBold("il")}${y.bold("proof ai")} ${y.ink3(`v${A}`)}`+(a?`${B}${a}`:""),K=(a,b)=>y.bold(a.toUpperCase())+(b?` ${y.ink3(b)}`:""),L=(b,c=0)=>{let d=Math.max(c,...b.map(([a,b])=>b?r(a)+2:0));return b.map(([b,c])=>{let e,f;if(!c)return` ${b}`;let g=` ${u(b,d)}`;return g+(e=y.ink2(c),f=x-r(g),a.fit&&r(e)>f?function(a,b){var c;if(r(a)<=b)return a;if(a.includes("\x1b")){let d,e;return b<=1?"…":`${(e=(d=s(c=p(a,b-1)))[d.length-1])&&e.active?c+l:c}…`}return b<=0?"":a.length<=b?a:a.slice(0,b-1).trimEnd()+"…"}(e,Math.max(1,f)):e)})};return{cols:x,sep:B,cmd:D,on:E,off:F,failed:G,selected:H,unselected:I,meta:a=>C(y.ink3,a),header:J,head:K,rows:L,kv:(a,b=9)=>{let c=Math.max(b,...a.map(([a])=>r(a)))+2;return a.map(([a,b])=>b?` ${u(C(y.ink3,a),c)}${b}`:` ${C(y.ink3,a)}`)},ok:(a,b)=>`${y.guide("✓")} ${a}${b?` ${y.ink3(b)}`:""}`,caution:(a,b)=>`${y.warn("▲")} ${a}${b?`${B}${D(b)}`:""}`,fail:(a,b)=>`${y.err("✕")} ${a}${b?`${B}${D(b)}`:""}`,notice:(a,b)=>{let c=a=>(a.split("`").length-1)%2==0?a.replace(/`([^`]+)`/g,(a,b)=>D(b)):a,d="ok"===a?y.guide("✓"):"caution"===a?y.warn("▲"):y.err("✕"),[e="",...f]=b.split("\n");return[`${d} ${c(e)}`,...f.map(a=>""===a.trim()?"":` ${c(a)}`)]},confirm:(a,c="Continue?")=>new Promise(d=>{let{stdin:e,stdout:f}=a,g="",h=!1,i=e.isRaw,j=a=>{h||(h=!0,e.removeListener("keypress",l),e.removeListener("end",k),e.setRawMode?.(i??!1),e.pause(),f.write("\n"),d(a))};function k(){j(!1)}function l(a,b){let c=b?.name;b?.ctrl&&("c"===c||"d"===c)||"escape"===c?j(!1):"return"===c||"enter"===c?j(/^y(es)?$/i.test(g.trim())):"backspace"===c?g&&(g=g.slice(0,-1),f.write("\b \b")):a&&1===a.length&&a>=" "&&!b?.ctrl&&!b?.meta&&(g+=a,f.write(a))}f.write(`${c} ${y.ink3("y/N")} `),b.emitKeypressEvents(e),e.setRawMode?.(!0),e.on("keypress",l),e.on("end",k),e.resume()}),keys:a=>y.ink3(a.join(" · ")),bar:(a,b)=>{let c=Math.round(Math.max(0,Math.min(1,b))*a),d=Math.max(0,a-c);return C(y.pink,"━".repeat(c))+(z?C(y.track,"━".repeat(d)):" ".repeat(d))},logo:()=>x<22?[]:(function(a){let b=".".repeat(o[0]?.length??0),c=a=>"t"===a?d:"p"===a?e:null,f=[];for(let d=0;d<o.length;d+=2){let e=o[d],g=o[d+1]??b,h="";for(let b=0;b<e.length;b++){let d=c(e[b]),f=c(g[b]);if(d||f)if("basic"===a)h+=d&&f?"█":d?"▀":"▄";else if(d&&f)h+=d===f?`\x1b[${n(d,a)}m█\x1b[0m`:`\x1b[${n(d,a)};${"ansi256"===a&&void 0!==f.c256?`48;5;${f.c256}`:`48;2;${f.rgb[0]};${f.rgb[1]};${f.rgb[2]}`}m▀\x1b[0m`;else d?h+=`\x1b[${n(d,a)}m▀\x1b[0m`:h+=`\x1b[${n(f,a)}m▄\x1b[0m`;else h+=" "}f.push(h)}return f})(z?m():"basic").map(a=>` ${a}`),helpPage:b=>{var c;let d,e=[J(b.name),"",K("Usage"),...L(b.usage)];return b.options?.length&&e.push("",K("Options"),...(c=b.options,d=Math.max(b.optionsCol??0,...c.map(([a,b])=>b?r(a)+2:0)),c.flatMap(([b,c])=>{if(!c)return[` ${b}`];let e=` ${u(b,d)}`,f=x-r(e);if(!a.fit||r(c)<=f)return[e+y.ink2(c)];let g=" ".repeat(r(e));return(function(a,b){if(b<=0)return[a];if(!a.includes("\x1b")){if(b<=0)return[a];let c=a.split(/\s+/).filter(Boolean);if(0===c.length)return[];let d=[],e="";for(let a of c)e?e.length+1+a.length<=b?e+=` ${a}`:(d.push(e),e=a):e=a;return e&&d.push(e),d}let c=[],d=[];for(let b of s(a))/\s/.test(b.ch)?(d.length>0&&c.push(d),d=[]):d.push(b);d.length>0&&c.push(d);let e=[],f=[];for(let a of c){if(f.length>0&&f.length+1+a.length>b){e.push(t(f)),f=[...a];continue}f.length>0&&f.push({ch:" ",active:f[f.length-1].active}),f.push(...a)}return f.length>0&&e.push(t(f)),e})(c,Math.max(1,f)).map((a,b)=>(0===b?e:g)+y.ink2(a))}))),b.examples?.length&&e.push("",K("Examples"),...b.examples.map(a=>` ${D(a)}`)),e},live:a=>{let b={lastCount:0},c=0,d=null,e=null,f=!1,g=!1,h=()=>{a.write("\x1b[?25h")},i=()=>{process.removeListener("exit",h),process.removeListener("SIGINT",j),process.removeListener("SIGTERM",j)},j=a=>{g=!0,e&&clearTimeout(e),i(),h(),process.kill(process.pid,a)},k=()=>{e=null;let i=d;if(d=null,!i||g)return;c=Date.now();let k="";f||(f=!0,k="\x1b[?25l",process.once("exit",h),process.on("SIGINT",j),process.on("SIGTERM",j)),q(a,b,i(),{lead:k})};return{draw(a){if(g||(d=a,e))return;let b=c+100-Date.now();b<=0?k():(e=setTimeout(k,b),e.unref?.())},done(c){g||(g=!0,e&&clearTimeout(e),e=null,d=null,i(),q(a,b,c,{cut:!1,tail:f?"\x1b[?25h":""}))}}}}}])},91997,80504,67121,a=>{let b=["user","project","local"],c=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],d=["user","project"],e=["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],f={session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},g=["user"],h=["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],i=["user","project"],j=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],k=["user","project"],l=["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],m=["user","project"],n=["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],o=["user","project"],p=["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],q=["user"],r=["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],s=["user","project"],t=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],u=["user","project"],v=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],w=["user","project"],x=["PreToolUse","PostToolUse","PreInvocation","Stop"],y=["user","project"],z=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],A=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a),B="__failproofai_hook__";a.s(["X",0,x,"m",0,w,"I",0,A,"p",0,f,"W",0,e,"L",0,d,"d",0,j,"w",0,i,"s",0,l,"Y",0,k,"D",0,v,"c",0,u,"n",0,t,"B",0,s,"Z",0,B,"i",0,z,"x",0,y,"y",0,h,"M",0,g,"F",0,b,"z",0,c,"P",0,r,"E",0,q,"e",0,n,"O",0,m,"J",0,p,"G",0,o],91997);var C=a.i(74533),D=a.i(2157),E=a.i(50227),F=a.i(57764),G=a.i(60526),H=a.i(22650),I=a.i(66680);class J extends Error{path;target;constructor(a,b){super(`Refusing to write ${a}: it is a symlink to ${b}, which does not exist. Fix or remove the link, then retry — failproofai will not replace it with a regular file.`),this.path=a,this.target=b,this.name="DanglingConfigSymlinkError"}}function K(a,b,c={}){let d,e,f="replace"===c.symlinks&&function(a){try{return(0,D.lstatSync)(a).isSymbolicLink()}catch{return!1}}(a),g="replace"===c.symlinks?a:function(a){let b=!1;try{b=(0,D.lstatSync)(a).isSymbolicLink()}catch{return a}if(!b)return a;try{return(0,D.realpathSync)(a)}catch{let b="(unreadable link)";try{b=(0,D.readlinkSync)(a)}catch{}throw new J(a,b)}}(a),h=(0,E.dirname)(g);(0,D.mkdirSync)(h,{recursive:!0});try{d=c.mode??(f?void 0:511&(0,D.statSync)(g).mode)}catch{d=c.mode}let i=(0,E.join)(h,`.${(0,E.basename)(g)}.failproofai-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{e=(0,D.openSync)(i,"wx",d??438);let a=Buffer.from(b,"utf8"),j=0;for(;j<a.length;)j+=(0,D.writeSync)(e,a,j,a.length-j);(0,D.fsyncSync)(e),(0,D.closeSync)(e),e=void 0,void 0!==d&&(0,D.chmodSync)(i,d),!1!==c.backup&&!f&&(0,D.existsSync)(g)&&function(a,b){let c=`${a}.failproofai-backup`,d=(0,E.join)(b,`.${(0,E.basename)(a)}.failproofai-backup-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{(0,D.copyFileSync)(a,d,D.constants.COPYFILE_EXCL),(0,D.renameSync)(d,c)}catch(a){throw(0,D.rmSync)(d,{force:!0}),a}}(g,h),(c.rename??D.renameSync)(i,g)}catch(a){if(void 0!==e)try{(0,D.closeSync)(e)}catch{}throw(0,D.rmSync)(i,{force:!0}),a}try{let a=(0,D.openSync)(h,"r");try{(0,D.fsyncSync)(a)}finally{(0,D.closeSync)(a)}}catch{}}var L=a.i(8284),M=a.i(68561);let N="# >>> failproofai managed hooks >>>",O="# <<< failproofai managed hooks <<<",P="0.129.0",Q=["PreToolUse","PermissionRequest","PostToolUse","PreCompact","PostCompact","SessionStart","SessionEnd","UserPromptSubmit","SubagentStart","SubagentStop","Stop","Interrupt"];function R(a){return`${a}.failproofai-backup`}function S(){try{let a=(0,C.execSync)("codex --version",{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3});return/(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/.exec(a)?.[1]??null}catch{return null}}function T(a){let b=RegExp(`^${U(N)}[ \\t]*$`,"m").exec(a);if(!b)return RegExp(`^${U(O)}[ \\t]*$`,"m").test(a)?"malformed":null;let c=RegExp(`^${U(O)}[ \\t]*$`,"mg");c.lastIndex=b.index+b[0].length;let d=c.exec(a);if(!d)return"malformed";let e=d.index+d[0].length;return"\r"===a[e]&&e++,"\n"===a[e]&&e++,{start:b.index,end:e}}function U(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(a,b){let c=T(a);if("malformed"===c)throw Error("failproofai's managed block is missing its begin or end marker");if(c){let d=a.slice(0,c.start),e=a.slice(c.end);return null!==b?d+b+e:(d.endsWith("\n\n")&&""===e?d.slice(0,-1):d)+e}return null===b?a:""===a?b:`${a}${a.endsWith("\n")?"\n":"\n\n"}${b}`}function W(a){let b;return void 0!==a.path?a.path:void 0!==(b=process.env.FAILPROOFAI_CODEX_SYSTEM_CONFIG)?""===b||"off"===b?null:(0,E.resolve)(b):"/etc/codex/config.toml"}function X(a){let b=(0,E.dirname)(a);for(;!(0,D.existsSync)(b);){let a=(0,E.dirname)(b);if(a===b)return!1;b=a}try{return(0,D.accessSync)(b,D.constants.W_OK),(0,D.existsSync)(a)&&(0,D.accessSync)(a,D.constants.W_OK),!0}catch{return!1}}function Y(a){try{return(511&(0,D.statSync)(a).mode).toString(8).padStart(4,"0")}catch{return"0644"}}function Z(a,b,c,d){if(d){K(a,b,{backup:!1}),(0,D.chmodSync)(a,parseInt(c,8));return}(0,L.p)("install",["-d","-m","0755",(0,E.dirname)(a)]),(0,L.C)(a,b,c)}function $(a,b){b?(0,D.rmSync)(a,{force:!0}):(0,L.p)("rm",["-f",a])}function _(a={}){let b=W(a);if(!b)return!1;try{var c;let a;return c=(0,D.readFileSync)(b,"utf8"),a=T(c),null!==a&&"malformed"!==a}catch{return!1}}function aa(a){return a.replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()}let ab=new Set(["UserPromptSubmit","Stop","Interrupt"]);function ac(a,b){for(;b<a.length&&(" "===a[b]||" "===a[b]);)b++;return b}function ad(a,b){let c=[];for(;;){b=ac(a,b);let d=ae(a,b);if(d)c.push(d.value),b=d.end;else{let d=/^[A-Za-z0-9_-]+/.exec(a.slice(b));if(!d)return null;c.push(d[0]),b+=d[0].length}let e=ac(a,b);if("."!==a[e])return{path:c,end:b};b=e+1}}function ae(a,b){if("'"===a[b]){let c=a.indexOf("'",b+1);return c<0?null:{value:a.slice(b+1,c),end:c+1}}if('"'!==a[b])return null;let c="";for(let d=b+1;d<a.length;d++){let b=a[d];if('"'===b)return{value:c,end:d+1};if("\\"!==b){c+=b;continue}let e=a[++d],f={b:"\b",t:" ",n:"\n",f:"\f",r:"\r",'"':'"',"\\":"\\",e:"\x1b"};if(e in f)c+=f[e];else if("u"===e||"U"===e){let b="u"===e?4:8,f=a.slice(d+1,d+1+b);if(!/^[0-9A-Fa-f]+$/.test(f)||f.length!==b)return null;c+=String.fromCodePoint(parseInt(f,16)),d+=b}else break}return null}a.s(["s",0,"Codex won't run failproofai's hooks until they're trusted.\nRe-run `failproofai config` and allow sudo, or open `codex` once and approve the hooks.","c",0,function(a={}){let b=W(a);if(b&&_({path:b}))return{kind:"system",path:b};let c=a.hooksJsonPath??(0,E.resolve)((0,G.homedir)(),".codex","hooks.json"),d=function(a){let b;try{b=JSON.parse((0,D.readFileSync)(a,"utf8"))}catch{return[]}let c=b?.hooks;if(!c||"object"!=typeof c)return[];let d=[];for(let[b,e]of Object.entries(c))Array.isArray(e)&&e.forEach((c,e)=>{let f=c?.hooks;Array.isArray(f)&&f.forEach((f,g)=>{if(!function(a){if(!a||"object"!=typeof a)return!1;if(!0===a[B])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}(f))return;let h=c.matcher;d.push({key:`${a}:${aa(b)}:${e}:${g}`,hash:function(a,b,c){let d="SessionEnd"===a||"Interrupt"===a,e="number"==typeof c.timeout&&Number.isFinite(c.timeout)?Math.trunc(c.timeout):null,f=d?Math.min(3,Math.max(1,e??1)):Math.max(1,e??600),g={async:!0===c.async,command:"string"==typeof c.command?c.command:"",timeout:f,type:"command"};"string"==typeof c.statusMessage&&(g.statusMessage=c.statusMessage);let h=c.additionalContextLimit;"number"==typeof h&&2500!==h&&(g.additionalContextLimit=h);let i={event_name:aa(a),hooks:[g]};return null===b||ab.has(a)||(i.matcher=b),`sha256:${(0,I.createHash)("sha256").update(function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(b&&"object"==typeof b){let c=Object.entries(b).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)}(i)).digest("hex")}`}(b,"string"==typeof h?h:null,f)})})});return d}(c);if(0===d.length)return{kind:"none"};let e=(a.codexVersion??S)();if(e&&!function(a){if(!a)return!0;let b=(0,M.f)(a,P);return null===b||b>=0}(e))return{kind:"ungated",path:c,version:e};let f=new Map;try{f=function(a){let b=new Map,c=(a,c)=>{if(4===a.length&&"hooks"===a[0]&&"state"===a[1]&&"trusted_hash"===a[3]){let d=a[2].trim();d&&b.set(d,c)}},d=[],e=null;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(e){a.includes(e)&&(e=null);continue}let f=a.trimStart();if(f.startsWith("#")||""===f)continue;if(f.startsWith("[[")){let a=ad(f,2);d=a?[...a.path,"[]"]:["[]"];continue}if(f.startsWith("[")){let a=ad(f,1);d=a&&"]"===f[ac(f,a.end)]?a.path:["?"];continue}let g=ad(f,0);if(!g)continue;let h=ac(f,g.end);if("="!==f[h])continue;h=ac(f,h+1);let i=[...d,...g.path];if(f.startsWith('"""',h)||f.startsWith("'''",h)){let a=f.slice(h,h+3);f.slice(h+3).includes(a)||(e=a);continue}let j=ae(f,h);if(j){c(i,j.value);continue}if("{"===f[h]){let a=h+1;for(;;){a=ac(f,a);let b=ad(f,a);if(!b||(a=ac(f,b.end),"="!==f[a]))break;a=ac(f,a+1);let d=ae(f,a);if(d)c([...i,...b.path],d.value),a=d.end;else for(;a<f.length&&","!==f[a]&&"}"!==f[a];)a++;if(a=ac(f,a),","!==f[a])break;a++}}}return b}((0,D.readFileSync)(a.userConfigPath??(0,E.resolve)((0,G.homedir)(),".codex","config.toml"),"utf8"))}catch{}let g=d.filter(a=>f.get(a.key)!==a.hash).length;return 0===g?{kind:"trusted",path:c}:{kind:"untrusted",path:c,untrusted:g,total:d.length}},"j",0,_,"i",0,function(a,b={}){let c=W(b);if(!c)return{ok:!1,reason:"unsupported-platform"};let d=(b.codexVersion??S)();if(!d)return{ok:!1,reason:"codex-not-found",path:c};let e=(0,M.f)(d,P);if(null!==e&&e<0)return{ok:!1,reason:"codex-too-old",detail:d,path:c};let f="",g=(0,D.existsSync)(c);if(g)try{f=(0,D.readFileSync)(c,"utf8")}catch(a){return{ok:!1,reason:"unreadable",detail:a instanceof Error?a.message:String(a),path:c}}let h=T(f);if("malformed"===h)return{ok:!1,reason:"unreadable",detail:"failproofai's block has lost one of its markers",path:c};let i=function(a){let b=Q.join("|"),c=/^\s*hooks\s*=/,d=RegExp(`^\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(=|\\.)`),e=RegExp(`^\\s*\\[\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(\\]|\\.)`),f=RegExp(`^\\s*"?(${b})"?\\s*(=|\\.)`),g=!1;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(/^\s*\[\[/.test(a)){g=!1;continue}if(/^\s*\[/.test(a)){if(e.test(a))return a.trim();g=/^\s*\[\s*hooks\s*\]/.test(a);continue}if(c.test(a)||d.test(a)||g&&f.test(a))return a.trim()}return null}(h?f.slice(0,h.start)+f.slice(h.end):f);if(i)return{ok:!1,reason:"conflict",detail:i,path:c};let j=V(f,function(a){let b=[N,"# Written by failproofai. Codex runs hooks from its system config without","# asking to trust them. `failproofai uninstall` removes this block; edit","# outside the markers only, everything between them is replaced."];for(let c of a)b.push("",`[[hooks.${c.event}]]`,`[[hooks.${c.event}.hooks]]`,'type = "command"',`command = ${JSON.stringify(c.command)}`,`timeout = ${Math.trunc(c.timeout)}`);return b.push(O),`${b.join("\n")}
|
|
25
|
+
${n}`);if(l){let a=a=>a.default&&"tag:yaml.org,2002:str"!==a.tag&&a.test?.test(q),{compat:c,tags:d}=b.doc.schema;if(d.some(a)||c?.some(a))return j(i,b)}return m?q:f.foldFlowLines(q,n,f.FOLD_FLOW,g(b,!1))}(n,b,c,d);default:return null}},q=p(o);if(null===q){let{defaultKeyType:a,defaultStringType:c}=b.options,d=l&&a||c;if(null===(q=p(d)))throw Error(`Unsupported default string type ${d}`)}return q}},85927,(a,b,c)=>{var d=a.r(27267);let e=Symbol("break visit"),f=Symbol("skip children"),g=Symbol("remove node");function h(a,b){let c=l(b);d.isDocument(a)?i(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):i(null,a,c,Object.freeze([]))}function i(a,b,c,f){let h=m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),i(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=i(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=i("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=i("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}async function j(a,b){let c=l(b);d.isDocument(a)?await k(null,a.contents,c,Object.freeze([a]))===g&&(a.contents=null):await k(null,a,c,Object.freeze([]))}async function k(a,b,c,f){let h=await m(a,b,c,f);if(d.isNode(h)||d.isPair(h))return n(a,f,h),k(a,h,c,f);if("symbol"!=typeof h){if(d.isCollection(b)){f=Object.freeze(f.concat(b));for(let a=0;a<b.items.length;++a){let d=await k(a,b.items[a],c,f);if("number"==typeof d)a=d-1;else{if(d===e)return e;d===g&&(b.items.splice(a,1),a-=1)}}}else if(d.isPair(b)){f=Object.freeze(f.concat(b));let a=await k("key",b.key,c,f);if(a===e)return e;a===g&&(b.key=null);let d=await k("value",b.value,c,f);if(d===e)return e;d===g&&(b.value=null)}}return h}function l(a){return"object"==typeof a&&(a.Collection||a.Node||a.Value)?Object.assign({Alias:a.Node,Map:a.Node,Scalar:a.Node,Seq:a.Node},a.Value&&{Map:a.Value,Scalar:a.Value,Seq:a.Value},a.Collection&&{Map:a.Collection,Seq:a.Collection},a):a}function m(a,b,c,e){return"function"==typeof c?c(a,b,e):d.isMap(b)?c.Map?.(a,b,e):d.isSeq(b)?c.Seq?.(a,b,e):d.isPair(b)?c.Pair?.(a,b,e):d.isScalar(b)?c.Scalar?.(a,b,e):d.isAlias(b)?c.Alias?.(a,b,e):void 0}function n(a,b,c){let e=b[b.length-1];if(d.isCollection(e))e.items[a]=c;else if(d.isPair(e))"key"===a?e.key=c:e.value=c;else if(d.isDocument(e))e.contents=c;else{let a=d.isAlias(e)?"alias":"scalar";throw Error(`Cannot replace node with ${a} parent`)}}h.BREAK=e,h.SKIP=f,h.REMOVE=g,j.BREAK=e,j.SKIP=f,j.REMOVE=g,c.visit=h,c.visitAsync=j},17280,a=>{var b=a.i(66680),c=a.i(2157),d=a.i(50227),e=a.i(9909),f=a.i(86304);let g="failproofai-pack.json",h="failproofai-pack.mjs",i="SHA256SUMS";function j(){return(process.env.FAILPROOFAI_PACK_BASE_URL||"https://github.com").replace(/\/+$/,"")}let k=/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/,l=/^[A-Za-z0-9][A-Za-z0-9._/-]{0,127}$/,m="FailproofAI/policies",n=new Set(["core","failproofai","official"]);function o(a){let b=a.trim();if(0===b.length)throw Error("pack source is empty");let c=b.match(/^(?:https?:\/\/)?(?:www\.)?github\.com\/(.+)$/i);if(c){let[a,b,...d]=c[1].replace(/\/+$/,"").split("/"),e=null;if("releases"===d[0]&&("tag"===d[1]||"download"===d[1])){let a=d.slice(2);e=("download"===d[1]?a.slice(0,-1):a).join("/")||null}else"releases"===d[0]&&"latest"===d[1]&&(e=null);return p(a,b,e)}let d=b.replace(/^github:/i,""),e=d.lastIndexOf("@"),f=e>0?d.slice(0,e):d,g=e>0?d.slice(e+1):null,h=f.indexOf("/");if(h<=0||h===f.length-1){if(n.has(f.trim().toLowerCase()))throw Error(`${JSON.stringify(a)} is no longer a pack name — ours is a pack like anyone else's now. Use ${m} instead.`);throw Error(`pack source must be owner/repo, owner/repo@tag, or a github.com URL — got ${JSON.stringify(a)}`)}return p(f.slice(0,h),f.slice(h+1),g)}function p(a,b,c){if(!a||!k.test(a))throw Error(`unsafe owner ${JSON.stringify(a)}`);if(!b||!k.test(b))throw Error(`unsafe repo ${JSON.stringify(b)}`);if(null!==c&&!l.test(c))throw Error(`unsafe tag ${JSON.stringify(c)}`);return{owner:a,repo:b,tag:c}}async function q(a){let b=`${j()}/${a.owner}/${a.repo}/releases/latest`,c=await fetch(b,{signal:AbortSignal.timeout(3e4),redirect:"manual"}),d=c.headers.get("location");if(!d)throw Error(`could not resolve the newest release of ${a.owner}/${a.repo} (GET ${b} returned ${c.status} with no redirect). That redirect is issued only for a published, non-prerelease release, so either the repository has no releases at all or every release it has is a prerelease or a draft. Name a tag explicitly.`);let e=d.match(/\/releases\/tag\/(.+)$/);if(!e)throw Error(`unexpected redirect from ${b}: ${d}`);let f=decodeURIComponent(e[1]).replace(/\/+$/,"");if(!l.test(f))throw Error(`unsafe tag ${JSON.stringify(f)} from ${b}`);return f}async function r(b,c){let d,e=c.toLowerCase(),f=`${(process.env.FAILPROOFAI_GITHUB_API??"https://api.github.com").replace(/\/+$/,"")}/repos/${b.owner}/${b.repo}/releases?per_page=100`;try{let a=(process.env.GITHUB_TOKEN||process.env.GH_TOKEN||"").trim(),b=await fetch(f,{headers:{...a?{Authorization:`Bearer ${a}`}:{},Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28","User-Agent":"failproofai"},signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${f} returned ${b.status}`);d=await b.json()}catch(a){throw Error(`could not resolve commit ${c} in ${b.owner}/${b.repo}: ${L(a)}. Name the release tag instead if you know it.`)}let{parseReleaseBody:g}=await a.A(49679),h=Array.isArray(d)?d:[],i=[];for(let a of h){let b="string"==typeof a.tag_name?a.tag_name:"";if(!b||!l.test(b))continue;let c=g("string"==typeof a.body?a.body:"");c.commit&&c.commit.startsWith(e)&&i.push({tag:b,commit:c.commit})}if(i.length>1)throw Error(`commit ${c} matches ${i.length} releases of ${b.owner}/${b.repo}: `+i.map(a=>`${a.tag} (${a.commit})`).join(", ")+". Name one of those tags, or type more of the commit.");return 1===i.length?i[0].tag:null}async function s(a){return null===a.tag?q(a):e.r.test(a.tag)?await r(a,a.tag)??a.tag:a.tag}function t(a){return`github:${a.owner}/${a.repo}@${a.tag}`}function u(a,b){return`${j()}/${a.owner}/${a.repo}/releases/download/${a.tag}/${b}`}async function v(a){let b=await fetch(a,{signal:AbortSignal.timeout(3e4),redirect:"follow"});if(!b.ok)throw Error(`GET ${a} returned ${b.status}`);let c=b.headers.get("content-length");if(null!==c){let d=Number(c);if(Number.isFinite(d)&&d>8388608)throw await b.body?.cancel(),Error(`${a} declares ${d} bytes, over the 8388608 limit`)}if(!b.body)return Buffer.alloc(0);let d=[],e=b.body.getReader(),f=0;try{for(;;){let{done:b,value:c}=await e.read();if(b)break;if((f+=c.byteLength)>8388608)throw await e.cancel(),Error(`${a} is over the 8388608 byte limit`);d.push(Buffer.from(c))}}finally{e.releaseLock()}return Buffer.concat(d,f)}function w(a,b){for(let c of a.split("\n")){let a=c.trim().match(/^([0-9a-f]{64})\s+\*?(.+)$/i);if(a&&a[2].trim()===b)return a[1].toLowerCase()}return null}function x(a){return(0,b.createHash)("sha256").update(a).digest("hex")}function y(a,b){let e=`${a}.${process.pid}.tmp`;try{(0,c.mkdirSync)((0,d.dirname)(a),{recursive:!0}),(0,c.writeFileSync)(e,b),(0,c.renameSync)(e,a)}catch(a){throw(0,c.rmSync)(e,{force:!0}),a}}function z(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} semantic is not an array`);if(b.length>e.P)throw Error(`pack ${a} declares ${b.length} semantic policies, over the cap of ${e.P}`);let c=b.map((b,c)=>(0,e.U)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares semantic policy ${b.name} twice`);d.add(b.name)}return c}function A(a,b){let c=(0,e.T)(a,b);if("too-old"===c.kind)throw Error(c.reason);return"unreadable"===c.kind?{minCliVersionNote:c.reason}:c.declared?{minCliVersion:c.declared}:{}}async function B(a,b={}){let c=await I(a,b);return{id:c.id,version:c.version,enabled:c.enabled,available:c.available,bundled:!1,source:c.source,tag:c.tag,resolvedFromLatest:c.resolvedFromLatest,selection:c.selection,categories:c.categories}}async function C(a){let b;if("1"===process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("FAILPROOFAI_NO_DOWNLOAD is set, so nothing can be fetched to preview");let c=o(a),d=null===c.tag,f={...c,tag:await s(c)},h=(await v(u(f,i))).toString("utf8"),j=await v(u(f,g)),k=w(h,g);if(!k)throw Error(`${i} has no entry for ${g}`);if(x(j)!==k)throw Error(`${g} failed integrity verification`);try{b=JSON.parse(j.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let l=b,m=(0,e.$)(l),n=A(m.id,l.minCliVersion),p=z(m.id,l.semantic),q=D(m.id,l.policies);return E(q,p),{id:m.id,version:m.version,effect:m.effect,...m.commit?{commit:m.commit}:{},policies:q,semantic:p,...n,source:t(f),resolvedFromLatest:d}}function D(a,b){if(void 0===b)return[];if(!Array.isArray(b))throw Error(`pack ${a} policies is not an array`);let c=b.map((b,c)=>(0,e.Z)(a,b,c)),d=new Set;for(let b of c){if(d.has(b.name))throw Error(`pack ${a} declares ${b.name} twice`);d.add(b.name)}return c}function E(a,b){if(0===a.length&&0===b.length)throw Error("pack manifest declares no policies")}async function F(a){let b,c=(await v(u(a,i))).toString("utf8"),d=await v(u(a,g)),f=w(c,g);if(!f)throw Error(`${i} has no entry for ${g}`);if(x(d)!==f)throw Error(`${g} failed integrity verification`);let j=await v(u(a,h)),k=w(c,h);if(!k)throw Error(`${i} has no entry for ${h}`);let l=x(j);if(l!==k)throw Error(`${h} failed integrity verification`);try{b=JSON.parse(d.toString("utf8"))}catch(a){throw Error(`${g} is not valid JSON: ${L(a)}`)}if(!b||"object"!=typeof b)throw Error(`${g} is not an object`);let m=b,n=(0,e.$)(m),o=A(n.id,m.minCliVersion),p=D(n.id,m.policies),q=z(n.id,m.semantic);return E(p,q),{id:n.id,version:n.version,policies:p,semantic:q,...o,...void 0!==m.effect?{effect:n.effect}:{},...n.commit?{commit:n.commit}:{},artifact:j,artifactDigest:l}}function G(a){return a.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}async function H(b,c){let d,{loadCustomHooks:e}=await a.A(6188);try{d=(await e(b,{strict:!0})).map(a=>a.name)}catch(a){throw Error(`its artifact could not be loaded: ${a instanceof Error?a.message:String(a)}`)}let f=c.filter(a=>!d.includes(a)),g=d.filter(a=>!c.includes(a));if(f.length>0)throw Error(`its manifest declares ${f.join(", ")} but the artifact does not register ${1===f.length?"it":"them"} — that would install as protection that never runs`);if(g.length>0)throw Error(`its artifact registers undeclared ${g.join(", ")} — a policy that enforces but appears in no listing cannot be reviewed or switched off`)}async function I(a,b){var g,h,i,j;let k,l;if(process.env.FAILPROOFAI_NO_DOWNLOAD)throw Error("pack downloads are disabled (FAILPROOFAI_NO_DOWNLOAD). Already-installed packs keep enforcing.");let m=o(a),n={...m,tag:await s(m)},p=null===m.tag,q=await F(n);if(g=n.tag,h=q.version,(k=g.slice(g.lastIndexOf("/")+1))!==h&&k!==`v${h}`){let a=n.tag.slice(n.tag.lastIndexOf("/")+1).replace(/^v/,""),b=`re-tag the release ${q.version} (a leading v is fine), or rebuild the pack with --version ${a}`;throw Error(`${q.id} was not installed: release tag ${n.tag} does not match the version its manifest declares (${q.version}). `+(p?`That is the newest release of ${n.owner}/${n.repo}, so the release and the pack disagree at the source — ask the publisher to ${b}.`:`Name the tag whose manifest says ${q.version}, or fix the pack: ${b}.`))}if(/^failproofai\//i.test(q.id)&&!(0,f.g)({source:t(n)}))throw Error(`${q.id} was not installed: the FailproofAI/ namespace is reserved for releases from github.com/FailproofAI, and this one came from ${n.owner}/${n.repo}.`);let r=q.policies.map(a=>a.name),u=(i=q.id,j=q.artifactDigest,(l=(0,e.V)().packs).find(a=>a.id===i)??l.find(a=>a.sha256===j)),{enabled:v,reason:w}=function(a,b,c,d){let e=a.map(a=>a.name);if(b?.all)return{enabled:null,reason:"all"};let f=new Set;if(b?.categories?.length){let c=new Set(b.categories.map(G)),d=new Map(a.map(a=>[G(a.category),a.category])),e=[...c].filter(a=>!d.has(a));if(e.length>0)throw Error(`no such categor${1===e.length?"y":"ies"}: ${e.join(", ")} (has: ${[...new Set(a.map(a=>G(a.category)))].join(", ")})`);for(let b of a)c.has(G(b.category))&&f.add(b.name)}if(b?.only?.length){let a=b.only.filter(a=>!e.includes(a));if(a.length>0)throw Error(`pack does not contain ${a.join(", ")}`);for(let a of b.only)f.add(a)}if(b?.only!==void 0||b?.categories?.length){if(b.merge&&d){if(null===c)return{enabled:null,reason:"carried"};for(let a of c??[])f.add(a);return{enabled:e.filter(a=>f.has(a)),reason:"added"}}return{enabled:e.filter(a=>f.has(a)),reason:"selected"}}return d?{enabled:null===c?null:c??null,reason:"carried"}:{enabled:a.filter(a=>a.defaultEnabled).map(a=>a.name),reason:"defaults"}}(q.policies,b,u?.enabled?u.enabled.filter(a=>r.includes(a)):u?.enabled,!!u),x=(0,e.N)(),z=`artifacts/${q.artifactDigest}.mjs`,A=(0,d.resolve)(x,z);(0,c.existsSync)(A)||y(A,q.artifact);try{await H(A,r)}catch(a){throw Error(`${q.id}@${q.version} was not installed: ${a instanceof Error?a.message:String(a)}`)}let B=a=>{let b=a.lastIndexOf("@");return b>a.indexOf(":")?a.slice(0,b):a};if(u&&u.id===q.id&&!u.source.startsWith("bundled:")&&B(u.source)!==B(t(n)))throw Error(`pack id ${q.id} is already installed from ${u.source}. Refusing to replace it with ${t(n)} — remove it first if that is what you mean.`);let C={id:q.id,version:q.version,source:t(n),entry:z,sha256:q.artifactDigest,policies:q.policies,...q.semantic.length>0?{semantic:q.semantic}:{},...q.minCliVersion?{minCliVersion:q.minCliVersion}:{},...q.commit?{commit:q.commit}:{},...q.effect?{effect:q.effect}:{},...v?{enabled:v}:{},...b?.clis?{clis:b.clis}:b?.merge!==!1&&u?.clis?{clis:u.clis}:{}};return{replaced:function(a,b=!0){let f=(0,d.resolve)((0,e.N)(),"installed.json"),g=[];if((0,c.existsSync)(f))try{let a=JSON.parse((0,c.readFileSync)(f,"utf8"));Array.isArray(a.packs)&&(g=a.packs)}catch{throw Error(`existing pack manifest at ${f} is unreadable; move it aside and re-add`)}let h=g.filter(b=>b?.sha256===a.sha256&&b?.id!==a.id).map(a=>a.id);if(b&&!a.enabled){let b=g.find(a=>h.includes(a?.id)),c=b?.enabled?.filter(b=>a.policies?.some(a=>a?.name===b));c&&c.length>0&&(a.enabled=c)}let i=g.filter(a=>!h.includes(a?.id)),j=i.findIndex(b=>b?.id===a.id);return j>=0?i[j]=a:i.push(a),y(f,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),h}(C,"all"!==w),id:q.id,version:q.version,source:C.source,tag:n.tag,resolvedFromLatest:p,enabled:v??r,available:r,selection:w,categories:[...new Set(q.policies.map(a=>G(a.category)))],semantic:q.semantic.length,...q.minCliVersionNote?{minCliVersionNote:q.minCliVersionNote}:{},...q.effect?{effect:q.effect}:{},...C.clis?{clis:C.clis}:{},artifact:A}}function J(a){let b=a.trim(),c=b.lastIndexOf("@");return(c>0?b.slice(0,c):b).trim()}class K extends Error{candidates;constructor(a,b){super(`${b} matches ${a.length} installed packs: ${a.join(", ")}. Name one of them exactly.`),this.candidates=a,this.name="AmbiguousPackId"}}function L(a){return a instanceof Error?a.message:String(a)}a.s(["w",0,m,"U",0,i,"Z",0,h,"v",0,g,"I",0,I,"z",0,B,"k",0,C,"R",0,function(a){let b,f=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(f))return null;try{b=JSON.parse((0,c.readFileSync)(f,"utf8"))}catch{return null}let g=Array.isArray(b.packs)?b.packs:[],h=g.find(b=>b?.id===J(a)),i=g.filter(b=>{var c;return b?.id&&(c=b.id,J(c).toLowerCase()===J(a).toLowerCase())});if(!h&&i.length>1)throw new K(i.map(a=>a.id).filter(a=>"string"==typeof a),a);let j=h??i[0],k=g.filter(a=>a!==j);return j&&k.length!==g.length?(y(f,JSON.stringify({schemaVersion:1,packs:k},null,2)+"\n"),j.id):null},"g",0,function(a,b,f){let g,h=(0,d.resolve)((0,e.N)(),"installed.json");if(!(0,c.existsSync)(h))return{ok:!1,reason:"no packs are installed"};try{g=JSON.parse((0,c.readFileSync)(h,"utf8"))}catch{return{ok:!1,reason:`pack manifest at ${h} is unreadable`}}let i=Array.isArray(g.packs)?g.packs:[],j=i.find(b=>b?.id===a);if(!j)return{ok:!1,reason:`no installed pack with id ${a}`};let k=(Array.isArray(j.policies)?j.policies:[]).map(a=>"string"==typeof a?.name?a.name:null).filter(a=>null!==a);if(!k.includes(b))return{ok:!1,reason:`pack ${a} declares no policy named ${b}`};let l=j.enabled??k,m=f?[...new Set([...l,b])]:l.filter(a=>a!==b);return j.enabled=k.filter(a=>m.includes(a)),y(h,JSON.stringify({schemaVersion:1,packs:i},null,2)+"\n"),{ok:!0}}])},49526,a=>{var b=a.i(1457),c=a.i(12072);let d={rgb:[102,209,181],c256:79,basic:"36"},e={rgb:[228,88,125],c256:168,basic:"95"},f={rgb:[227,179,65],c256:179,basic:"33"},g={rgb:[107,118,132],basic:"2"},h={rgb:[118,127,139],basic:"2"},i={rgb:[62,67,76],basic:"2"},j={rgb:[240,113,120],c256:203,basic:"31"};function k(a){return!!a.isTTY&&!process.env.NO_COLOR}let l="\x1b[0m";function m(){return/truecolor|24bit/i.test(process.env.COLORTERM||"")?"truecolor":/256color/i.test(process.env.TERM||"")?"ansi256":"basic"}function n(a,b){return"truecolor"===b?`38;2;${a.rgb[0]};${a.rgb[1]};${a.rgb[2]}`:"ansi256"===b&&void 0!==a.c256?`38;5;${a.c256}`:a.basic}let o=["...tt........","..tttt.......",".tttttt..pppp",".tttttt..pppp","..tttt...pppp","...tt....pppp",".........pppp",".........pppp","..pppp...pppp","..pppp...pppp","..pppp...pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp",".pppppp..pppp","..pppp...pppp","..ppppppppppp","..ppppppppppp","..ppppppppppp","..ppppppppppp"];function p(a,b){let c=0,d="",e=0;for(;e<a.length;)if("\x1b"===a[e]&&"["===a[e+1]){let b=e+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;b++,d+=a.slice(e,b),e=b}else{if(c>=b)break;d+=a[e],c++,e++}return d}function q(a,b,c,d={}){let e=a.columns||80,f=d.cut??!0,g=c.map(a=>""!==a&&f?p(a,e):a).join("\n")+"\n",h=b.lastCount>0?`\x1b[${b.lastCount}A\x1b[J`:"";a.write(`\x1b[?2026h${d.lead??""}${h}${g}${d.tail??""}\x1b[?2026l`),b.lastCount=c.length}function r(a){let b=0,c=0;for(;c<a.length;)if("\x1b"===a[c]&&"["===a[c+1]){let b=c+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;c=b+1}else b++,c++;return b}function s(a){let b=[],c="",d=0;for(;d<a.length;)if("\x1b"===a[d]&&"["===a[d+1]){let b=d+2;for(;b<a.length&&!/[A-Za-z]/.test(a[b]);)b++;let e=a.slice(d,b+1);c=/\[0?m$/.test(e)?"":c+e,d=b+1}else b.push({ch:a[d],active:c}),d++;return b}function t(a){let b="",c="";for(let d of a)d.active!==c&&(c&&(b+=l),b+=d.active,c=d.active),b+=d.ch;return c?b+l:b}function u(a,b,c="left"){let d=Math.max(0,b-r(a));return"right"===c?" ".repeat(d)+a:a+" ".repeat(d)}Symbol("failproofai.back"),Symbol("failproofai.open-source"),Object.values({on:"✓ ON",off:"· OFF",mixed:"◐ MIXED",locked:"✓ LOCK",cloud:"✓ CLOUD",pack:"✓ PACK",failed:"▲ FAIL",observe:"◉ OBS"}).map(a=>a.length),a.s(["J",0," ","v",0,k,"w",0,function(a=process.stdout){return{cols:a.columns||80,color:k(a)}},"m",0,function(a={}){var k;let v,w,{cols:x,c:y}={cols:Math.max(20,a?.cols??80),c:(v=(k=a?.color??!1)?m():"basic",{bold:a=>k?`\x1b[1m${a}\x1b[0m`:a,dim:(w=(a,b=!1)=>c=>k?`\x1b[${b?"1;":""}${n(a,v)}m${c}\x1b[0m`:c)(g),guide:w(d),pink:w(e),pinkBold:w(e,!0),softPink:w(e),warn:w(f),ink2:a=>a,ink3:w(h),track:w(i),err:w(j)})},z=a.color??!1,A=a.version??c.version,B=y.ink3(" · "),C=(a,b)=>b?a(b):"",D=a=>y.pink(a),E=y.guide("●"),F=y.ink3("○"),G=y.err("✕"),H=y.pink("■"),I=y.ink3("□"),J=a=>`${y.bold("fa")}${y.pinkBold("il")}${y.bold("proof ai")} ${y.ink3(`v${A}`)}`+(a?`${B}${a}`:""),K=(a,b)=>y.bold(a.toUpperCase())+(b?` ${y.ink3(b)}`:""),L=(b,c=0)=>{let d=Math.max(c,...b.map(([a,b])=>b?r(a)+2:0));return b.map(([b,c])=>{let e,f;if(!c)return` ${b}`;let g=` ${u(b,d)}`;return g+(e=y.ink2(c),f=x-r(g),a.fit&&r(e)>f?function(a,b){var c;if(r(a)<=b)return a;if(a.includes("\x1b")){let d,e;return b<=1?"…":`${(e=(d=s(c=p(a,b-1)))[d.length-1])&&e.active?c+l:c}…`}return b<=0?"":a.length<=b?a:a.slice(0,b-1).trimEnd()+"…"}(e,Math.max(1,f)):e)})};return{cols:x,sep:B,cmd:D,on:E,off:F,failed:G,selected:H,unselected:I,meta:a=>C(y.ink3,a),header:J,head:K,rows:L,kv:(a,b=9)=>{let c=Math.max(b,...a.map(([a])=>r(a)))+2;return a.map(([a,b])=>b?` ${u(C(y.ink3,a),c)}${b}`:` ${C(y.ink3,a)}`)},ok:(a,b)=>`${y.guide("✓")} ${a}${b?` ${y.ink3(b)}`:""}`,caution:(a,b)=>`${y.warn("▲")} ${a}${b?`${B}${D(b)}`:""}`,fail:(a,b)=>`${y.err("✕")} ${a}${b?`${B}${D(b)}`:""}`,notice:(a,b)=>{let c=a=>(a.split("`").length-1)%2==0?a.replace(/`([^`]+)`/g,(a,b)=>D(b)):a,d="ok"===a?y.guide("✓"):"caution"===a?y.warn("▲"):y.err("✕"),[e="",...f]=b.split("\n");return[`${d} ${c(e)}`,...f.map(a=>""===a.trim()?"":` ${c(a)}`)]},confirm:(a,c="Continue?")=>new Promise(d=>{let{stdin:e,stdout:f}=a,g="",h=!1,i=e.isRaw,j=a=>{h||(h=!0,e.removeListener("keypress",l),e.removeListener("end",k),e.setRawMode?.(i??!1),e.pause(),f.write("\n"),d(a))};function k(){j(!1)}function l(a,b){let c=b?.name;b?.ctrl&&("c"===c||"d"===c)||"escape"===c?j(!1):"return"===c||"enter"===c?j(/^y(es)?$/i.test(g.trim())):"backspace"===c?g&&(g=g.slice(0,-1),f.write("\b \b")):a&&1===a.length&&a>=" "&&!b?.ctrl&&!b?.meta&&(g+=a,f.write(a))}f.write(`${c} ${y.ink3("y/N")} `),b.emitKeypressEvents(e),e.setRawMode?.(!0),e.on("keypress",l),e.on("end",k),e.resume()}),keys:a=>y.ink3(a.join(" · ")),bar:(a,b)=>{let c=Math.round(Math.max(0,Math.min(1,b))*a),d=Math.max(0,a-c);return C(y.pink,"━".repeat(c))+(z?C(y.track,"━".repeat(d)):" ".repeat(d))},logo:()=>x<22?[]:(function(a){let b=".".repeat(o[0]?.length??0),c=a=>"t"===a?d:"p"===a?e:null,f=[];for(let d=0;d<o.length;d+=2){let e=o[d],g=o[d+1]??b,h="";for(let b=0;b<e.length;b++){let d=c(e[b]),f=c(g[b]);if(d||f)if("basic"===a)h+=d&&f?"█":d?"▀":"▄";else if(d&&f)h+=d===f?`\x1b[${n(d,a)}m█\x1b[0m`:`\x1b[${n(d,a)};${"ansi256"===a&&void 0!==f.c256?`48;5;${f.c256}`:`48;2;${f.rgb[0]};${f.rgb[1]};${f.rgb[2]}`}m▀\x1b[0m`;else d?h+=`\x1b[${n(d,a)}m▀\x1b[0m`:h+=`\x1b[${n(f,a)}m▄\x1b[0m`;else h+=" "}f.push(h)}return f})(z?m():"basic").map(a=>` ${a}`),helpPage:b=>{var c;let d,e=[J(b.name),"",K("Usage"),...L(b.usage)];return b.options?.length&&e.push("",K("Options"),...(c=b.options,d=Math.max(b.optionsCol??0,...c.map(([a,b])=>b?r(a)+2:0)),c.flatMap(([b,c])=>{if(!c)return[` ${b}`];let e=` ${u(b,d)}`,f=x-r(e);if(!a.fit||r(c)<=f)return[e+y.ink2(c)];let g=" ".repeat(r(e));return(function(a,b){if(b<=0)return[a];if(!a.includes("\x1b")){if(b<=0)return[a];let c=a.split(/\s+/).filter(Boolean);if(0===c.length)return[];let d=[],e="";for(let a of c)e?e.length+1+a.length<=b?e+=` ${a}`:(d.push(e),e=a):e=a;return e&&d.push(e),d}let c=[],d=[];for(let b of s(a))/\s/.test(b.ch)?(d.length>0&&c.push(d),d=[]):d.push(b);d.length>0&&c.push(d);let e=[],f=[];for(let a of c){if(f.length>0&&f.length+1+a.length>b){e.push(t(f)),f=[...a];continue}f.length>0&&f.push({ch:" ",active:f[f.length-1].active}),f.push(...a)}return f.length>0&&e.push(t(f)),e})(c,Math.max(1,f)).map((a,b)=>(0===b?e:g)+y.ink2(a))}))),b.examples?.length&&e.push("",K("Examples"),...b.examples.map(a=>` ${D(a)}`)),e},live:a=>{let b={lastCount:0},c=0,d=null,e=null,f=!1,g=!1,h=()=>{a.write("\x1b[?25h")},i=()=>{process.removeListener("exit",h),process.removeListener("SIGINT",j),process.removeListener("SIGTERM",j)},j=a=>{g=!0,e&&clearTimeout(e),i(),h(),process.kill(process.pid,a)},k=()=>{e=null;let i=d;if(d=null,!i||g)return;c=Date.now();let k="";f||(f=!0,k="\x1b[?25l",process.once("exit",h),process.on("SIGINT",j),process.on("SIGTERM",j)),q(a,b,i(),{lead:k})};return{draw(a){if(g||(d=a,e))return;let b=c+100-Date.now();b<=0?k():(e=setTimeout(k,b),e.unref?.())},done(c){g||(g=!0,e&&clearTimeout(e),e=null,d=null,i(),q(a,b,c,{cut:!1,tail:f?"\x1b[?25h":""}))}}}}}])},91997,80504,67121,a=>{let b=["user","project","local"],c=["claude","codex","copilot","cursor","opencode","pi","hermes","openclaw","factory","devin","antigravity","goose"],d=["user","project"],e=["session_start","pre_tool_use","permission_request","post_tool_use","user_prompt_submit","stop","subagent_start","pre_compact","post_compact","subagent_stop"],f={session_start:"SessionStart",pre_tool_use:"PreToolUse",permission_request:"PermissionRequest",post_tool_use:"PostToolUse",user_prompt_submit:"UserPromptSubmit",stop:"Stop",subagent_start:"SubagentStart",pre_compact:"PreCompact",post_compact:"PostCompact",subagent_stop:"SubagentStop"},g=["user"],h=["pre_tool_call","post_tool_call","on_session_start","on_session_end","subagent_stop"],i=["user","project"],j=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PostToolUse","Stop","SubagentStop","PostToolUseFailure","ErrorOccurred","PreCompact","PermissionRequest","Notification"],k=["user","project"],l=["sessionStart","sessionEnd","beforeSubmitPrompt","preToolUse","postToolUse","stop","subagentStop"],m=["user","project"],n=["tool.execute.before","tool.execute.after","session.created","session.deleted","session.idle","message.updated","permission.ask"],o=["user","project"],p=["session_start","session_shutdown","input","tool_call","user_bash","tool_result","agent_end"],q=["user"],r=["before_tool_call","after_tool_call","before_agent_run","before_agent_finalize","session_start","session_end","subagent_ended","before_compaction"],s=["user","project"],t=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","Notification","Stop","SubagentStop","PreCompact","SessionEnd"],u=["user","project"],v=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PermissionRequest","Stop","SessionEnd"],w=["user","project"],x=["PreToolUse","PostToolUse","PreInvocation","Stop"],y=["user","project"],z=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","SessionEnd"],A=["SessionStart","SessionEnd","UserPromptSubmit","PreToolUse","PermissionRequest","PermissionDenied","PostToolUse","PostToolUseFailure","Notification","SubagentStart","SubagentStop","TaskCreated","TaskCompleted","Stop","StopFailure","TeammateIdle","InstructionsLoaded","ConfigChange","CwdChanged","FileChanged","WorktreeCreate","WorktreeRemove","PreCompact","PostCompact","Elicitation","ElicitationResult","UserPromptExpansion","PostToolBatch","Setup"].filter(a=>"WorktreeCreate"!==a),B="__failproofai_hook__";a.s(["X",0,x,"m",0,w,"I",0,A,"p",0,f,"W",0,e,"L",0,d,"d",0,j,"w",0,i,"s",0,l,"Y",0,k,"D",0,v,"c",0,u,"n",0,t,"B",0,s,"Z",0,B,"i",0,z,"x",0,y,"y",0,h,"M",0,g,"F",0,b,"z",0,c,"P",0,r,"E",0,q,"e",0,n,"O",0,m,"J",0,p,"G",0,o],91997);var C=a.i(74533),D=a.i(2157),E=a.i(50227),F=a.i(57764),G=a.i(60526),H=a.i(22650),I=a.i(66680);class J extends Error{path;target;constructor(a,b){super(`Refusing to write ${a}: it is a symlink to ${b}, which does not exist. Fix or remove the link, then retry — failproofai will not replace it with a regular file.`),this.path=a,this.target=b,this.name="DanglingConfigSymlinkError"}}function K(a,b,c={}){let d,e,f="replace"===c.symlinks&&function(a){try{return(0,D.lstatSync)(a).isSymbolicLink()}catch{return!1}}(a),g="replace"===c.symlinks?a:function(a){let b=!1;try{b=(0,D.lstatSync)(a).isSymbolicLink()}catch{return a}if(!b)return a;try{return(0,D.realpathSync)(a)}catch{let b="(unreadable link)";try{b=(0,D.readlinkSync)(a)}catch{}throw new J(a,b)}}(a),h=(0,E.dirname)(g);(0,D.mkdirSync)(h,{recursive:!0});try{d=c.mode??(f?void 0:511&(0,D.statSync)(g).mode)}catch{d=c.mode}let i=(0,E.join)(h,`.${(0,E.basename)(g)}.failproofai-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{e=(0,D.openSync)(i,"wx",d??438);let a=Buffer.from(b,"utf8"),j=0;for(;j<a.length;)j+=(0,D.writeSync)(e,a,j,a.length-j);(0,D.fsyncSync)(e),(0,D.closeSync)(e),e=void 0,void 0!==d&&(0,D.chmodSync)(i,d),!1!==c.backup&&!f&&(0,D.existsSync)(g)&&function(a,b){let c=`${a}.failproofai-backup`,d=(0,E.join)(b,`.${(0,E.basename)(a)}.failproofai-backup-${process.pid}-${(0,I.randomBytes)(4).toString("hex")}.tmp`);try{(0,D.copyFileSync)(a,d,D.constants.COPYFILE_EXCL),(0,D.renameSync)(d,c)}catch(a){throw(0,D.rmSync)(d,{force:!0}),a}}(g,h),(c.rename??D.renameSync)(i,g)}catch(a){if(void 0!==e)try{(0,D.closeSync)(e)}catch{}throw(0,D.rmSync)(i,{force:!0}),a}try{let a=(0,D.openSync)(h,"r");try{(0,D.fsyncSync)(a)}finally{(0,D.closeSync)(a)}}catch{}}var L=a.i(8284),M=a.i(68561);let N="# >>> failproofai managed hooks >>>",O="# <<< failproofai managed hooks <<<",P="0.129.0",Q=["PreToolUse","PermissionRequest","PostToolUse","PreCompact","PostCompact","SessionStart","SessionEnd","UserPromptSubmit","SubagentStart","SubagentStop","Stop","Interrupt"];function R(a){return`${a}.failproofai-backup`}function S(){try{let a=(0,C.execSync)("codex --version",{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3});return/(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)/.exec(a)?.[1]??null}catch{return null}}function T(a){let b=RegExp(`^${U(N)}[ \\t]*$`,"m").exec(a);if(!b)return RegExp(`^${U(O)}[ \\t]*$`,"m").test(a)?"malformed":null;let c=RegExp(`^${U(O)}[ \\t]*$`,"mg");c.lastIndex=b.index+b[0].length;let d=c.exec(a);if(!d)return"malformed";let e=d.index+d[0].length;return"\r"===a[e]&&e++,"\n"===a[e]&&e++,{start:b.index,end:e}}function U(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function V(a,b){let c=T(a);if("malformed"===c)throw Error("failproofai's managed block is missing its begin or end marker");if(c){let d=a.slice(0,c.start),e=a.slice(c.end);return null!==b?d+b+e:(d.endsWith("\n\n")&&""===e?d.slice(0,-1):d)+e}return null===b?a:""===a?b:`${a}${a.endsWith("\n")?"\n":"\n\n"}${b}`}function W(a){let b;return void 0!==a.path?a.path:void 0!==(b=process.env.FAILPROOFAI_CODEX_SYSTEM_CONFIG)?""===b||"off"===b?null:(0,E.resolve)(b):"/etc/codex/config.toml"}function X(a){let b=(0,E.dirname)(a);for(;!(0,D.existsSync)(b);){let a=(0,E.dirname)(b);if(a===b)return!1;b=a}try{return(0,D.accessSync)(b,D.constants.W_OK),(0,D.existsSync)(a)&&(0,D.accessSync)(a,D.constants.W_OK),!0}catch{return!1}}function Y(a){try{return(511&(0,D.statSync)(a).mode).toString(8).padStart(4,"0")}catch{return"0644"}}function Z(a,b,c,d){if(d){K(a,b,{backup:!1}),(0,D.chmodSync)(a,parseInt(c,8));return}(0,L.p)("install",["-d","-m","0755",(0,E.dirname)(a)]),(0,L.C)(a,b,c)}function $(a,b){b?(0,D.rmSync)(a,{force:!0}):(0,L.p)("rm",["-f",a])}function _(a={}){let b=W(a);if(!b)return!1;try{var c;let a;return c=(0,D.readFileSync)(b,"utf8"),a=T(c),null!==a&&"malformed"!==a}catch{return!1}}function aa(a){return a.replace(/([a-z0-9])([A-Z])/g,"$1_$2").toLowerCase()}let ab=new Set(["UserPromptSubmit","Stop","Interrupt"]);function ac(a,b){for(;b<a.length&&(" "===a[b]||" "===a[b]);)b++;return b}function ad(a,b){let c=[];for(;;){b=ac(a,b);let d=ae(a,b);if(d)c.push(d.value),b=d.end;else{let d=/^[A-Za-z0-9_-]+/.exec(a.slice(b));if(!d)return null;c.push(d[0]),b+=d[0].length}let e=ac(a,b);if("."!==a[e])return{path:c,end:b};b=e+1}}function ae(a,b){if("'"===a[b]){let c=a.indexOf("'",b+1);return c<0?null:{value:a.slice(b+1,c),end:c+1}}if('"'!==a[b])return null;let c="";for(let d=b+1;d<a.length;d++){let b=a[d];if('"'===b)return{value:c,end:d+1};if("\\"!==b){c+=b;continue}let e=a[++d],f={b:"\b",t:" ",n:"\n",f:"\f",r:"\r",'"':'"',"\\":"\\",e:"\x1b"};if(e in f)c+=f[e];else if("u"===e||"U"===e){let b="u"===e?4:8,f=a.slice(d+1,d+1+b);if(!/^[0-9A-Fa-f]+$/.test(f)||f.length!==b)return null;c+=String.fromCodePoint(parseInt(f,16)),d+=b}else break}return null}a.s(["s",0,"Codex won't run failproofai's hooks until they're trusted.\nRe-run `failproofai config` and allow sudo, or open `codex` once and approve the hooks.","c",0,function(a={}){let b=W(a);if(b&&_({path:b}))return{kind:"system",path:b};let c=a.hooksJsonPath??(0,E.resolve)((0,G.homedir)(),".codex","hooks.json"),d=function(a){let b;try{b=JSON.parse((0,D.readFileSync)(a,"utf8"))}catch{return[]}let c=b?.hooks;if(!c||"object"!=typeof c)return[];let d=[];for(let[b,e]of Object.entries(c))Array.isArray(e)&&e.forEach((c,e)=>{let f=c?.hooks;Array.isArray(f)&&f.forEach((f,g)=>{if(!function(a){if(!a||"object"!=typeof a)return!1;if(!0===a[B])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}(f))return;let h=c.matcher;d.push({key:`${a}:${aa(b)}:${e}:${g}`,hash:function(a,b,c){let d="SessionEnd"===a||"Interrupt"===a,e="number"==typeof c.timeout&&Number.isFinite(c.timeout)?Math.trunc(c.timeout):null,f=d?Math.min(3,Math.max(1,e??1)):Math.max(1,e??600),g={async:!0===c.async,command:"string"==typeof c.command?c.command:"",timeout:f,type:"command"};"string"==typeof c.statusMessage&&(g.statusMessage=c.statusMessage);let h=c.additionalContextLimit;"number"==typeof h&&2500!==h&&(g.additionalContextLimit=h);let i={event_name:aa(a),hooks:[g]};return null===b||ab.has(a)||(i.matcher=b),`sha256:${(0,I.createHash)("sha256").update(function a(b){if(Array.isArray(b))return`[${b.map(a).join(",")}]`;if(b&&"object"==typeof b){let c=Object.entries(b).sort(([a],[b])=>a<b?-1:+(a>b));return`{${c.map(([b,c])=>`${JSON.stringify(b)}:${a(c)}`).join(",")}}`}return JSON.stringify(b)}(i)).digest("hex")}`}(b,"string"==typeof h?h:null,f)})})});return d}(c);if(0===d.length)return{kind:"none"};let e=(a.codexVersion??S)();if(e&&!function(a){if(!a)return!0;let b=(0,M.f)(a,P);return null===b||b>=0}(e))return{kind:"ungated",path:c,version:e};let f=new Map;try{f=function(a){let b=new Map,c=(a,c)=>{if(4===a.length&&"hooks"===a[0]&&"state"===a[1]&&"trusted_hash"===a[3]){let d=a[2].trim();d&&b.set(d,c)}},d=[],e=null;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(e){a.includes(e)&&(e=null);continue}let f=a.trimStart();if(f.startsWith("#")||""===f)continue;if(f.startsWith("[[")){let a=ad(f,2);d=a?[...a.path,"[]"]:["[]"];continue}if(f.startsWith("[")){let a=ad(f,1);d=a&&"]"===f[ac(f,a.end)]?a.path:["?"];continue}let g=ad(f,0);if(!g)continue;let h=ac(f,g.end);if("="!==f[h])continue;h=ac(f,h+1);let i=[...d,...g.path];if(f.startsWith('"""',h)||f.startsWith("'''",h)){let a=f.slice(h,h+3);f.slice(h+3).includes(a)||(e=a);continue}let j=ae(f,h);if(j){c(i,j.value);continue}if("{"===f[h]){let a=h+1;for(;;){a=ac(f,a);let b=ad(f,a);if(!b||(a=ac(f,b.end),"="!==f[a]))break;a=ac(f,a+1);let d=ae(f,a);if(d)c([...i,...b.path],d.value),a=d.end;else for(;a<f.length&&","!==f[a]&&"}"!==f[a];)a++;if(a=ac(f,a),","!==f[a])break;a++}}}return b}((0,D.readFileSync)(a.userConfigPath??(0,E.resolve)((0,G.homedir)(),".codex","config.toml"),"utf8"))}catch{}let g=d.filter(a=>f.get(a.key)!==a.hash).length;return 0===g?{kind:"trusted",path:c}:{kind:"untrusted",path:c,untrusted:g,total:d.length}},"j",0,_,"i",0,function(a,b={}){let c=W(b);if(!c)return{ok:!1,reason:"unsupported-platform"};let d=(b.codexVersion??S)();if(!d)return{ok:!1,reason:"codex-not-found",path:c};let e=(0,M.f)(d,P);if(null!==e&&e<0)return{ok:!1,reason:"codex-too-old",detail:d,path:c};let f="",g=(0,D.existsSync)(c);if(g)try{f=(0,D.readFileSync)(c,"utf8")}catch(a){return{ok:!1,reason:"unreadable",detail:a instanceof Error?a.message:String(a),path:c}}let h=T(f);if("malformed"===h)return{ok:!1,reason:"unreadable",detail:"failproofai's block has lost one of its markers",path:c};let i=function(a){let b=Q.join("|"),c=/^\s*hooks\s*=/,d=RegExp(`^\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(=|\\.)`),e=RegExp(`^\\s*\\[\\s*hooks\\s*\\.\\s*"?(${b})"?\\s*(\\]|\\.)`),f=RegExp(`^\\s*"?(${b})"?\\s*(=|\\.)`),g=!1;for(let b of a.split("\n")){let a=b.replace(/\r$/,"");if(/^\s*\[\[/.test(a)){g=!1;continue}if(/^\s*\[/.test(a)){if(e.test(a))return a.trim();g=/^\s*\[\s*hooks\s*\]/.test(a);continue}if(c.test(a)||d.test(a)||g&&f.test(a))return a.trim()}return null}(h?f.slice(0,h.start)+f.slice(h.end):f);if(i)return{ok:!1,reason:"conflict",detail:i,path:c};let j=V(f,function(a){let b=[N,"# Written by failproofai. Codex runs hooks from its system config without","# asking to trust them. `failproofai uninstall` removes this block; edit","# outside the markers only, everything between them is replaced."];for(let c of a)b.push("",`[[hooks.${c.event}]]`,`[[hooks.${c.event}.hooks]]`,'type = "command"',`command = ${JSON.stringify(c.command)}`,`timeout = ${Math.trunc(c.timeout)}`);return b.push(O),`${b.join("\n")}
|
|
26
26
|
`}(a));if(j===f)return{ok:!0,path:c,changed:!1};let k=X(c);if(!k&&!(b.canElevate??L.e)())return{ok:!1,reason:"no-root",path:c};try{let a=g?Y(c):"0644",b=R(c);!g||h||(0,D.existsSync)(b)||Z(b,f,a,k),Z(c,j,a,k)}catch(a){return{ok:!1,reason:"write-failed",detail:a instanceof Error?a.message:String(a),path:c}}return{ok:!0,path:c,changed:!0}},"g",0,function(a={}){let b,c=W(a);if(!c||!(0,D.existsSync)(c))return{status:"absent"};try{b=(0,D.readFileSync)(c,"utf8")}catch(a){return{status:"failed",path:c,reason:a instanceof Error?a.message:String(a)}}let d=T(b);if(null===d)return{status:"absent"};if("malformed"===d)return{status:"failed",path:c,reason:"one of failproofai's markers is missing; remove the block by hand"};let e=(b.slice(d.start,d.end).match(/^\[\[hooks\.[A-Za-z]+\.hooks\]\]/gm)??[]).length,f=V(b,null),g=R(c),h=null;try{(0,D.existsSync)(g)&&(h=(0,D.readFileSync)(g,"utf8"))}catch{h=null}let i=X(c);if(!i&&!(a.canElevate??L.e)())return{status:"failed",path:c,reason:"removing it needs root, and sudo is not available"};try{null!==h&&(f===h||f===`${h}
|
|
27
27
|
`)?(Z(c,h,Y(c),i),$(g,i)):null===h&&""===f.trim()?$(c,i):Z(c,f,Y(c),i)}catch(a){return{status:"failed",path:c,reason:a instanceof Error?a.message:String(a)}}return{status:"removed",path:c,hooks:e}}],80504);var af=a.i(43600);let ag="default";function ah(){let a,b=function(){let a=(process.env.OPENCLAW_STATE_DIR??"").trim();if(a)return(0,E.resolve)(a);let b=(process.env.OPENCLAW_HOME??"").trim();if(b)return(0,E.resolve)(b);let c=(process.env.OPENCLAW_CONFIG_PATH||"").trim();return c?(0,E.dirname)((0,E.resolve)(c)):(0,E.join)((0,G.homedir)(),".openclaw")}(),c=(0,E.basename)(b);if(".openclaw"!==c&&!c.startsWith(".openclaw-"))return[{name:ag,home:b}];let d=(0,E.dirname)(b),e=[{name:ag,home:(0,E.join)(d,".openclaw")}];try{a=(0,D.readdirSync)(d,{withFileTypes:!0})}catch{return e}let f=a.filter(a=>(a.isDirectory()||a.isSymbolicLink())&&a.name.startsWith(".openclaw-")&&a.name.length>10&&(0,D.existsSync)((0,E.join)(d,a.name,"openclaw.json"))).map(a=>({name:a.name.slice(10),home:(0,E.join)(d,a.name)})).sort((a,b)=>a.name.localeCompare(b.name));return e.push(...f),e}var ai={get url(){return a.F("src/hooks/integrations.ts")},env:{DEV:!1,PROD:!0,MODE:"production",BASE_URL:"/",SSR:!0}};class aj extends Error{path;constructor(a,b){super(`Refusing to modify ${a}: ${b}. failproofai never rewrites a config it could not parse — fix or move the file, then retry.`),this.path=a,this.name="UnreadableAgentConfigError"}}function ak(a){let b,c;if(!(0,D.existsSync)(a))return{};try{b=(0,D.readFileSync)(a,"utf8")}catch(b){throw new aj(a,`it could not be read (${b instanceof Error?b.message:String(b)})`)}if(""===b.trim())return{};try{c=JSON.parse(b)}catch(b){throw new aj(a,`it is not valid JSON (${b instanceof Error?b.message:String(b)})`)}if(!c||"object"!=typeof c||Array.isArray(c))throw new aj(a,"its top level is not a JSON object");return c}function al(a,b){K(a,JSON.stringify(b,null,2)+"\n")}function am(a){let b;if(!(0,D.existsSync)(a))return(0,H.parseDocument)("");try{b=(0,D.readFileSync)(a,"utf8")}catch(b){throw new aj(a,`it could not be read (${b instanceof Error?b.message:String(b)})`)}let c=(0,H.parseDocument)(b);if(c.errors.length>0){let b=c.errors[0]?.message.split("\n")[0]??"syntax error";throw new aj(a,`it does not parse as YAML (${b})`)}return c}function an(a,b){K(a,b.toString())}function ao(a){if(!a||"object"!=typeof a)return!1;if(!0===a[B])return!0;let b="string"==typeof a.command?a.command:"";return b.includes("failproofai")&&b.includes("--hook")}function ap(a){return"version"in a&&(delete a.version,!0)}function aq(a){try{let b=`which ${a}`;return(0,C.execSync)(b,{encoding:"utf8",stdio:"pipe"}),!0}catch{return!1}}function ar(a,b,c){let d=a.getSettingsPaths?.(b,c);return d&&d.length>0?d:[a.getSettingsPath(b,c)]}let as={id:"claude",displayName:"Claude Code",scopes:b,eventTypes:A,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".claude","settings.json");case"project":return(0,E.resolve)(c,".claude","settings.json");case"local":return(0,E.resolve)(c,".claude","settings.local.json")}},readSettings:a=>ak(a),writeSettings(a,b){al(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b}`:`"${a}" --hook ${b}`,timeout:60,[B]:!0}),isFailproofaiHook:ao,writeHookEntries(a,b,c){a.hooks||(a.hooks={});let d=new Set(A);for(let b of Object.keys(a.hooks)){if(d.has(b))continue;let c=a.hooks[b];if(!Array.isArray(c))continue;let e=[];for(let a of c){if(!a||!Array.isArray(a.hooks)){a&&e.push(a);continue}let b=a.hooks.length;a.hooks=a.hooks.filter(a=>!ao(a)),0===a.hooks.length&&b>0||e.push(a)}a.hooks[b]=e,0===e.length&&delete a.hooks[b]}for(let d of A){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>ao(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(a);if(!b.hooks)return 0;let c=0;for(let a of Object.keys(b.hooks)){let d=b.hooks[a];if(Array.isArray(d)){for(let a=d.length-1;a>=0;a--){let b=d[a];if(!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!ao(a)),c+=e-b.hooks.length,0===b.hooks.length&&d.splice(a,1)}0===d.length&&delete b.hooks[a]}}return 0===Object.keys(b.hooks).length&&delete b.hooks,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,D.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>ao(a)))return!0}}catch{}return!1},detectInstalled:()=>aq("claude")||aq("claude-code")},at={id:"codex",displayName:"OpenAI Codex",scopes:d,eventTypes:e,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".codex","hooks.json");case"project":case"local":return(0,E.resolve)(c,".codex","hooks.json")}},readSettings:a=>ak(a),writeSettings(a,b){al(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli codex`:`"${a}" --hook ${b} --cli codex`,timeout:60,[B]:!0}),isFailproofaiHook:ao,writeHookEntries(a,b,c){for(let d of(ap(a),a.hooks||(a.hooks={}),e)){let e=f[d],g=this.buildHookEntry(b,d,c);a.hooks[e]||(a.hooks[e]=[]);let h=a.hooks[e],i=!1;for(let a of h){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>ao(a));if(b>=0){a.hooks[b]=g,i=!0;break}}i||h.push({hooks:[g]})}},removeHooksFromFile(a){let b=this.readSettings(a),c=ap(b);if(!b.hooks)return c&&this.writeSettings(a,b),0;let d=0;for(let a of Object.keys(b.hooks)){let c=b.hooks[a];if(Array.isArray(c)){for(let a=c.length-1;a>=0;a--){let b=c[a];if(!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!ao(a)),d+=e-b.hooks.length,0===b.hooks.length&&c.splice(a,1)}0===c.length&&delete b.hooks[a]}}return 0===Object.keys(b.hooks).length&&delete b.hooks,(d>0||c)&&this.writeSettings(a,b),d},hooksInstalledInSettings(a,b){if("user"===a&&_())return!0;let c=this.getSettingsPath(a,b);if(!(0,D.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>ao(a)))return!0}}catch{}return!1},detectInstalled:()=>aq("codex")};function au(a){if(!0===a[B])return!0;for(let b of["string"==typeof a.bash?a.bash:"","string"==typeof a.powershell?a.powershell:""])if(b.includes("failproofai")&&b.includes("--hook"))return!0;return!1}let av="./plugins/failproofai.mjs";function aw(a){return(0,E.resolve)((0,E.dirname)(a),"plugins","failproofai.mjs")}function ax(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,E.resolve)(a,"pi-extension"):(0,E.resolve)((0,F.fileURLToPath)(ai.url),"..","..","..","pi-extension")}function ay(a){return"string"==typeof a&&(!!/(?:^|\/)pi-extension\/?$/.test(a)||a.includes("pi-extension")&&a.includes("failproofai"))}let az="failproofai",aA=".failproofai-managed",aB=["plugin.yaml","__init__.py","client.py","ledger.py"],aC="hermes-plugin";function aD(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,E.resolve)(a,aC):function(a){let b=(0,E.resolve)(a);for(let a=0;a<8;a++){let a=(0,E.resolve)(b,aC);if((0,D.existsSync)((0,E.resolve)(a,"plugin.yaml")))return a;let c=(0,E.dirname)(b);if(c===b)break;b=c}return(0,E.resolve)(a,"..","..",aC)}((0,E.dirname)((0,F.fileURLToPath)(ai.url)))}function aE(a){return(0,E.resolve)((0,E.dirname)(a),"plugins",az)}function aF(a){try{return(0,D.lstatSync)(a),!0}catch{return!1}}function aG(a){return aB.every(b=>(0,D.existsSync)((0,E.resolve)(a,b)))}function aH(a){return(0,E.resolve)((0,E.dirname)(a),".failproofai-link")}function aI(a){try{let b=(0,D.readFileSync)(aH(a),"utf8").trim();return""===b?null:(0,E.resolve)(b)}catch{return null}}function aJ(a,b){K(aH(a),(0,E.resolve)(b)+"\n",{backup:!1,symlinks:"replace"})}function aK(a){(0,D.rmSync)(aH(a),{force:!0})}function aL(a,b){if((0,E.resolve)(a)===(0,E.resolve)(b))return!0;try{return(0,D.realpathSync)(a)===(0,D.realpathSync)(b)}catch{return!1}}function aM(a){let b,c,d=aE(a);try{let a=(0,D.lstatSync)(d);b=a.isSymbolicLink(),c=a.isDirectory()}catch{return{kind:"absent"}}if(b){let a;try{a=(0,E.resolve)((0,E.dirname)(d),(0,D.readlinkSync)(d))}catch{return{kind:"foreign"}}return!function(a,b){let c=aI(a);if(c&&(0,E.resolve)(b)===c||aL(b,aD()))return!0;let d=(0,E.dirname)((0,E.resolve)(b));if((0,E.basename)((0,E.resolve)(b))!==aC||"failproofai"!==(0,E.basename)(d)||"node_modules"!==(0,E.basename)((0,E.dirname)(d)))return!1;try{let a=JSON.parse((0,D.readFileSync)((0,E.resolve)(d,"package.json"),"utf8"));return"failproofai"===a.name}catch{return!1}}(d,a)?{kind:"foreign"}:{kind:"link",target:a,complete:aG(a),current:aL(a,aD())}}return c&&(0,D.existsSync)((0,E.resolve)(d,aA))?{kind:"copy",complete:aG(d)}:{kind:"foreign"}}function aN(a){let b=(a.toJS()??{}).hooks,c=0;if(b&&"object"==typeof b){for(let a of Object.keys(b)){let d=b[a];if(!Array.isArray(d))continue;let e=d.length,f=d.filter(a=>!ao(a));c+=e-f.length,0===f.length?delete b[a]:b[a]=f}0===Object.keys(b).length?(a.delete("hooks"),c>0&&a.delete("hooks_auto_accept")):a.set("hooks",b)}return c}function aO(a){if(!(0,D.existsSync)(a))return{pluginEnabled:!1,pluginListed:!1,pluginDisabled:!1,legacyShellHookPresent:!1};let b=function(a){try{return am(a)}catch{return null}}(a);if(!b)return{pluginEnabled:!1,pluginListed:!1,pluginDisabled:!1,legacyShellHookPresent:!1,unreadable:!0};let c=b.toJS()??{},d=c.plugins?.enabled,e=c.plugins?.disabled,f=!!c.hooks&&"object"==typeof c.hooks&&Object.values(c.hooks).some(a=>Array.isArray(a)&&a.some(a=>ao(a))),g=Array.isArray(d)&&d.includes(az),h=Array.isArray(e)&&e.includes(az);return{pluginEnabled:g&&!h,pluginListed:g,pluginDisabled:h,legacyShellHookPresent:f}}let aP="failproofai";function aQ(){let a=process.env.FAILPROOFAI_PACKAGE_ROOT;return a?(0,E.resolve)(a,"openclaw-plugin"):(0,E.resolve)((0,F.fileURLToPath)(ai.url),"..","..","..","openclaw-plugin")}function aR(a){return"string"==typeof a&&(/(?:^|\/)openclaw-plugin\/?$/.test(a)||a.includes("openclaw-plugin")&&a.includes("failproofai"))}let aS="failproofai",aT=new Set(["PreToolUse","PostToolUse"]);function aU(a){if(!a||"object"!=typeof a)return!1;let b=a.command;return"string"==typeof b&&b.includes("failproofai")&&b.includes("--cli goose")}let aV={claude:as,codex:at,copilot:{id:"copilot",displayName:"GitHub Copilot",scopes:i,eventTypes:j,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".copilot","hooks","failproofai.json");case"project":case"local":return(0,E.resolve)(c,".github","hooks","failproofai.json")}},readSettings(a){let b=ak(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){al(a,b)},buildHookEntry(a,b,c){let d="project"===c?`npx -y failproofai --hook ${b} --cli copilot`:`"${a}" --hook ${b} --cli copilot`;return{type:"command",bash:d,powershell:d,timeoutSec:60,[B]:!0}},isFailproofaiHook:au,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),j)){let e=this.buildHookEntry(b,d,c);a.hooks[d]||(a.hooks[d]=[]);let f=a.hooks[d],g=!1;for(let a of f){if(!a.hooks)continue;let b=a.hooks.findIndex(a=>au(a));if(b>=0){a.hooks[b]=e,g=!0;break}}g||f.push({hooks:[e]})}},removeHooksFromFile(a){let b=this.readSettings(a);if(!b.hooks)return 0;let c=0;for(let a of Object.keys(b.hooks)){let d=b.hooks[a];if(Array.isArray(d)){for(let a=d.length-1;a>=0;a--){let b=d[a];if(!b.hooks)continue;let e=b.hooks.length;b.hooks=b.hooks.filter(a=>!au(a)),c+=e-b.hooks.length,0===b.hooks.length&&d.splice(a,1)}0===d.length&&delete b.hooks[a]}}return 0===Object.keys(b.hooks).length&&delete b.hooks,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,D.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)){for(let a of b)if(a.hooks&&a.hooks.some(a=>au(a)))return!0}}catch{}return!1},detectInstalled:()=>aq("copilot")},cursor:{id:"cursor",displayName:"Cursor Agent",scopes:k,eventTypes:l,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".cursor","hooks.json");case"project":case"local":return(0,E.resolve)(c,".cursor","hooks.json")}},readSettings(a){let b=ak(a);return void 0===b.version&&(b.version=1),b},writeSettings(a,b){al(a,b)},buildHookEntry:(a,b,c)=>({type:"command",command:"project"===c?`npx -y failproofai --hook ${b} --cli cursor`:`"${a}" --hook ${b} --cli cursor`,timeout:60,[B]:!0}),isFailproofaiHook:ao,writeHookEntries(a,b,c){for(let d of(void 0===a.version&&(a.version=1),a.hooks||(a.hooks={}),l)){let e=this.buildHookEntry(b,d,c),f=a.hooks[d],g=f??[];f||(a.hooks[d]=g);let h=g.findIndex(a=>ao(a));h>=0?g[h]=e:g.push(e)}},removeHooksFromFile(a){let b=this.readSettings(a);if(!b.hooks)return 0;let c=0;for(let a of Object.keys(b.hooks)){let d=b.hooks[a];if(!Array.isArray(d))continue;let e=d.length,f=d.filter(a=>!ao(a));c+=e-f.length,0===f.length?delete b.hooks[a]:b.hooks[a]=f}return 0===Object.keys(b.hooks).length&&delete b.hooks,this.writeSettings(a,b),c},hooksInstalledInSettings(a,b){let c=this.getSettingsPath(a,b);if(!(0,D.existsSync)(c))return!1;try{let a=this.readSettings(c);if(!a.hooks)return!1;for(let b of Object.values(a.hooks))if(Array.isArray(b)&&b.some(a=>ao(a)))return!0}catch{}return!1},detectInstalled:()=>aq("cursor-agent")||aq("agent")},opencode:{id:"opencode",displayName:"OpenCode",scopes:m,eventTypes:n,getSettingsPath(a,b){let c=b?(0,E.resolve)(b):process.cwd();switch(a){case"user":return(0,E.resolve)((0,G.homedir)(),".config","opencode","opencode.json");case"project":case"local":return(0,E.resolve)(c,".opencode","opencode.json")}},readSettings:a=>ak(a),writeSettings(a,b){al(a,b)},buildHookEntry(a,b,c){if("user"===c){let a=(0,E.resolve)((0,G.homedir)(),".config","opencode","plugins","failproofai.mjs");return{spec:`file://${a}`,[B]:!0}}return{spec:av,[B]:!0}},isFailproofaiHook:a=>"string"==typeof a?a.includes("failproofai.mjs"):!!Array.isArray(a)&&"string"==typeof a[0]&&a[0].includes("failproofai.mjs"),writeHookEntries(a,b,c){let d,e,f=c??"project",g=aw("user"===f?(0,E.resolve)((0,G.homedir)(),".config","opencode","opencode.json"):(0,E.resolve)(process.cwd(),".opencode","opencode.json"));(0,D.mkdirSync)((0,E.dirname)(g),{recursive:!0}),K(g,(e=(d="project"===f)?'""':JSON.stringify(b),`// AUTO-GENERATED by failproofai. ${B}
|
|
28
28
|
// Re-generate via: failproofai policies --install --cli opencode
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[73338,a=>{"use strict";var b=a.i(36359),c=a.i(7292),d=a.i(37936),e=a.i(2157);a.i(66680);var f=a.i(50227),g=a.i(8674);a.i(1144);var h=a.i(75818),i=a.i(13095);async function j(){return function(a=Date.now()){let b,c,d=(c=process.env.FAILPROOFAI_STATE_DIR)?(0,f.resolve)(c,"sessions"):(0,h.$)();if(!(0,e.existsSync)(d))return[];let g=[];try{b=(0,e.readdirSync)(d)}catch{return[]}for(let c of b)if(c.endsWith(".json"))try{let b=function(a){if(!a||"object"!=typeof a||1!==a.schemaVersion||"string"!=typeof a.sessionId||0===a.sessionId.length||!Number.isFinite(a.pausedAt)||!Number.isFinite(a.expiresAt))return null;let b=a.pausedAt,c=Number.isFinite(a.firstPausedAt)?a.firstPausedAt:b;return{schemaVersion:1,sessionId:a.sessionId,pausedAt:b,firstPausedAt:c,expiresAt:Math.min(a.expiresAt,c+288e5),setBy:"string"==typeof a.setBy?a.setBy:"unknown",..."string"==typeof a.cwd?{cwd:a.cwd}:{}}}(JSON.parse((0,e.readFileSync)((0,f.join)(d,c),"utf8")));if(!b||b.expiresAt<=a)continue;let{schemaVersion:h,...i}=b;g.push(i)}catch{}return g.sort((a,b)=>b.pausedAt-a.pausedAt)}()}(0,i.ensureServerEntryExports)([j]),(0,d.registerServerReference)(j,"
|
|
1
|
+
module.exports=[73338,a=>{"use strict";var b=a.i(36359),c=a.i(7292),d=a.i(37936),e=a.i(2157);a.i(66680);var f=a.i(50227),g=a.i(8674);a.i(1144);var h=a.i(75818),i=a.i(13095);async function j(){return function(a=Date.now()){let b,c,d=(c=process.env.FAILPROOFAI_STATE_DIR)?(0,f.resolve)(c,"sessions"):(0,h.$)();if(!(0,e.existsSync)(d))return[];let g=[];try{b=(0,e.readdirSync)(d)}catch{return[]}for(let c of b)if(c.endsWith(".json"))try{let b=function(a){if(!a||"object"!=typeof a||1!==a.schemaVersion||"string"!=typeof a.sessionId||0===a.sessionId.length||!Number.isFinite(a.pausedAt)||!Number.isFinite(a.expiresAt))return null;let b=a.pausedAt,c=Number.isFinite(a.firstPausedAt)?a.firstPausedAt:b;return{schemaVersion:1,sessionId:a.sessionId,pausedAt:b,firstPausedAt:c,expiresAt:Math.min(a.expiresAt,c+288e5),setBy:"string"==typeof a.setBy?a.setBy:"unknown",..."string"==typeof a.cwd?{cwd:a.cwd}:{}}}(JSON.parse((0,e.readFileSync)((0,f.join)(d,c),"utf8")));if(!b||b.expiresAt<=a)continue;let{schemaVersion:h,...i}=b;g.push(i)}catch{}return g.sort((a,b)=>b.pausedAt-a.pausedAt)}()}(0,i.ensureServerEntryExports)([j]),(0,d.registerServerReference)(j,"0048b2349d5d15713f07f749a4aa9714eb8407cfbf",null);var k=a.i(17280);a.i(75534);var l=a.i(10695),m=a.i(98378),n=a.i(69839),o=a.i(28120),p=a.i(74533),q=a.i(60526),r=a.i(91997),s=a.i(67121),t=a.i(80504),u=a.i(92956),v=a.i(15638),w=a.i(32352);class x extends Error{exitCode;constructor(a,b=1){super(a),this.name="CliError",this.exitCode=b}}a.i(89790);var y=a.i(9909),z=a.i(8284),A=a.i(21572),B=a.i(49526);function C(a,b){let c,d,i=r.z.filter(a=>b.includes(a));if(0===i.length)return null;let j=(0,A.s)().agents;if("installed"===a){if(!j||0===(c=i.filter(a=>!j.selected.includes(a))).length)return null;let a=a=>[...r.z.filter(b=>a.includes(b)),...a.filter(a=>!r.z.includes(a))],b=(0,s.w)(),e=c.filter(a=>b.includes(a)&&!j.seen.includes(a));d={selected:a([...j.selected,...c]),seen:e.length>0?a([...j.seen,...e]):j.seen}}else if(j){if(0===(c=i.filter(a=>j.selected.includes(a))).length)return null;let a=new Set(c);d={selected:j.selected.filter(b=>!a.has(b)),seen:j.seen}}else{c=i;let a=(0,s.w)(),b=process.cwd();d={selected:r.z.filter(c=>!i.includes(c)&&(a.includes(c)||function(a,b){let c=(0,s.B)(a);try{if(c.hooksInstalledInSettings("user",b))return!0;if("hermes"===a)return(0,s.d)().some(a=>(0,e.existsSync)(a.home)&&(a.pluginInstalled&&a.pluginEnabled||a.legacyShellHookPresent));let d=(0,s.r)(c,"user",b);if(d.length<2)return!1;return d.some(a=>c.hooksInstalledInSettings.call({...c,getSettingsPaths:()=>[a]},"user",b))}catch{return!1}}(c,b))),seen:a}}let k=(0,B.m)((0,B.w)(process.stdout)),m=c.map(a=>(0,s.B)(a).displayName),n=1===m.length?m[0]:`${m.slice(0,-1).join(", ")} and ${m[m.length-1]}`,o=1===m.length,p=k.cmd("failproofai config");"installed"===a&&function(a,b,c=Date.now()){if(0!==a.length&&b)try{!function(a){var b;let c=(b=void 0,(0,f.join)((0,h.J)(b),"state","backfill-request.json")),d=null;if((0,e.existsSync)(c))try{d=function(a,b){let c;if("object"!=typeof a||null===a||Array.isArray(a))return null;if(Array.isArray(a.agents))c=[...new Set(a.agents.filter(a=>"string"==typeof a&&""!==a.trim()))];else if(void 0!==a.agents&&null!==a.agents)return null;let d="number"==typeof a.requestedAtMs?a.requestedAtMs:void 0,e=void 0===a.kind||null===a.kind?"user":a.kind;return"user"===e?"number"!=typeof a.sinceMs?null:{kind:"user",sinceMs:a.sinceMs,requestedAtMs:d??b,...c?{agents:c}:{}}:"added"===e?void 0===d||!c||b-d>6e5?null:{kind:"added",requestedAtMs:d,agents:c}:null}(JSON.parse((0,e.readFileSync)(c,"utf8")),a.requestedAtMs)}catch{d=null}let i=function(a,b){let c,d;if(!a)return b;if("added"===a.kind&&"added"===b.kind)return{kind:"added",requestedAtMs:b.requestedAtMs,agents:[...new Set([...a.agents,...b.agents])]};let e=[a,b].flatMap(a=>"user"===a.kind?[a.sinceMs]:[]),f=(c=a.agents,d=b.agents,void 0===c||void 0===d?void 0:[...new Set([...c,...d])]);return{kind:"user",sinceMs:Math.min(...e),requestedAtMs:b.requestedAtMs,...f?{agents:f}:{}}}(d,a);(0,g.f)(c,i)}({kind:"added",agents:[...a],requestedAtMs:c})}catch(a){return(0,l.g)(`could not write the backfill request for re-added agents: ${a instanceof Error?a.message:String(a)}`),!1}}(c,function(){try{let a;return null!==((a=(0,A.d)().ingest)?{url:a.url,key:a.key}:null)&&!0===(0,A.s)().collector.sessions}catch{return!1}}());try{(0,A.t)({agents:d})}catch(c){let b=c instanceof Error?c.message:String(c);return k.caution("installed"===a?`Couldn't record ${n} as traced (${b}), so ${p} may remove ${o?"its":"their"} hooks again.`:`Couldn't record ${n} as no longer traced (${b}), so ${p} may add ${o?"its":"their"} hooks back.`)}return k.ok("installed"===a?`${n} ${o?"is":"are"} traced again, so ${p} keeps ${o?"its":"their"} hooks.`:`${n} ${o?"is":"are"} no longer traced, so ${p} won't add ${o?"its":"their"} hooks back.`)}let D=new Set(u.H.map(a=>a.name));function E(a,b){return s.p.getSettingsPath(a,b)}function F(a){let b=[],c=[],d=[],e=[];try{e=(0,y.V)().packs}catch{}let f=(a,b)=>e.filter(b=>null===a||b.id===a).filter(a=>a.policies.some(a=>a.name===b)).map(a=>({packId:a.id,packVersion:a.version,name:b,disabledKey:`pack:${a.id}@${a.version}:${b}`}));for(let e of a){let a=f(null,e);if(1===a.length){c.push(a[0]);continue}if(a.length>1)throw new x(`"${e}" is declared by ${a.length} installed packs.
|
|
2
2
|
Name the one you mean:
|
|
3
3
|
`+a.map(a=>` \`${a.packId}:${a.name}\``).join("\n"));if(D.has(e)){b.push(e);continue}let g=e.lastIndexOf(":"),h=g>0?{packId:e.slice(0,g),name:e.slice(g+1)}:null,i=h?f(h.packId,h.name):f(null,e);if(1===i.length){c.push(i[0]);continue}if(i.length>1)throw new x(`"${e}" is declared by ${i.length} installed packs.
|
|
4
4
|
Name the one you mean:
|
|
@@ -12,6 +12,6 @@ Make sure the file calls \`customPolicies.add(...)\` at least once.`).join("\n
|
|
|
12
12
|
`),process.exit(1)}console.log(`
|
|
13
13
|
Validated ${a.length} custom hook(s) from ${d}: ${a.map(a=>a.name).join(", ")}`)}}(0,o.f)(S,b,c);let T=new Set(u.H.filter(a=>a.alwaysOn).map(a=>a.name)),U=void 0===a?[]:K.filter(a=>!T.has(a));if(U.length>0)if((0,y.Q)()){for(let a of U)for(let b of(0,y.V)().packs)if(b.policies.some(b=>b.name===a)){(0,k.g)(b.id,a,!0);break}}else try{await (0,k.I)(k.w,{only:U})}catch(a){console.log((0,B.m)((0,B.w)(process.stdout)).caution(`Couldn't fetch the policy pack (${a instanceof Error?a.message:String(a)}). Once you are online:`,"failproofai policies add FailproofAI/policies"))}if(void 0!==a&&K.length>0){let a=K.length;console.log((0,B.m)((0,B.w)(process.stdout)).ok(`Enabled ${a} ${1===a?"policy":"policies"}: ${K.join(", ")}`))}if(i)console.log((0,B.m)((0,B.w)(process.stdout)).ok("Custom hooks path cleared."));else if(S.customPoliciesPaths?.length||S.customPoliciesPath){let a=S.customPoliciesPaths??[S.customPoliciesPath];for(let b of(0,B.m)((0,B.w)(process.stdout)).kv([["custom",a.join(", ")]]))console.log(b)}let V=[],W=null;for(let a of M){let d=(0,s.B)(a);if("codex"===a&&"user"===b){let b=(0,t.i)((0,s.D)(P));if(b.ok){let f=d.getSettingsPath("user",c);(0,e.existsSync)(f)&&d.removeHooksFromFile(f),V.push({cli:a,path:b.path});continue}W=b}let f=(0,s.r)(d,b,c);try{for(let c of f){d.prepareInstall?.(c);let e=d.readSettings(c);d.writeHookEntries(e,P,b),d.writeSettings(c,e),V.push({cli:a,path:c})}}catch(d){let c=d instanceof Error&&/EACCES|EPERM/.test(d.message)?"permission_denied":d instanceof Error&&/ENOENT|ENOTDIR/.test(d.message)?"path_not_found":"write_error";try{await (0,m.f)((0,n._)(),"hook_write_failed",{cli:a,scope:b,error_type:c})}catch{}throw d}}try{let a=new Set(K),c=K.filter(a=>!R.has(a)),e=[...R].filter(b=>!a.has(b)),f=(0,n._)();if(await (0,m.f)(f,"hooks_installed",{scope:b,cli:M,cli_count:M.length,policies:K,policy_count:K.length,policies_added:c,policies_removed:e,...g?{source:g}:{},platform:(0,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)()),has_custom_hooks_path:!!(S.customPoliciesPaths?.length||S.customPoliciesPath),has_policy_params:!!(S.policyParams&&Object.keys(S.policyParams).length>0),param_policy_names:S.policyParams?Object.keys(S.policyParams):[],command_format:"project"===b?"npx":"absolute"}),d){let a=new Set(u.H.filter(a=>a.beta).map(a=>a.name)),c=K.filter(b=>a.has(b));c.length>0&&await (0,m.f)(f,"beta_policies_installed",{scope:b,cli:M,beta_count:c.length,beta_policy_names:c,...g?{source:g}:{}})}}catch{}let X=(0,B.m)((0,B.w)(process.stdout));for(let{cli:a,path:c}of V){let d=(0,s.B)(a);for(let e of(console.log(X.ok("hermes"===a?`${d.displayName} plugin installed (8 hooks, ${b} scope).`:`${d.displayName} hooks installed (${d.eventTypes.length} events, ${b} scope).`)),X.kv([["settings",c]])))console.log(e)}for(let a of X.kv("project"===b?[["command","npx -y failproofai"]]:[["binary",P]]))console.log(a);if("project"===b&&console.log(`${B.J}This file can be committed to git: it has no machine-specific paths.`),W&&!W.ok&&(("conflict"===W.reason||"unreadable"===W.reason||"write-failed"===W.reason)&&console.log(X.caution(`Couldn't add the Codex hooks to ${W.path}: ${W.detail??W.reason}.`)),"untrusted"===(0,t.c)().kind))for(let a of X.notice("caution",t.s))console.log(a);let Y=(I=r.F,L=new Set,I.filter(a=>{let b=E(a,c);return!L.has(b)&&(L.add(b),!0)})).filter(a=>a!==b).filter(a=>H(a,c));if(Y.length>0){let a=Y.map(a=>`${a} (${function(a){switch(a){case"user":return"~/.claude/settings.json";case"project":return"{cwd}/.claude/settings.json";case"local":return"{cwd}/.claude/settings.local.json"}}(a)})`).join(", ");console.log(X.caution(`Hooks are also installed at ${a}, so each policy may run twice.`,`failproofai policies --uninstall --scope ${Y[0]}`));try{await (0,m.f)((0,n._)(),"multi_scope_warning_shown",{new_scope:b,existing_scopes:Y,cli:M})}catch{}}if(A){let a=C("installed",V.map(a=>a.cli));a&&console.log(a)}}async function K(a,b="user",c,d){let f=a=>{d?.silent||console.log(a)},g="all"===b?"user":b,h=d?.cli&&d.cli.length>0?[...new Set(d.cli)]:["claude"];if(d?.removeCustomHooks){let a=(0,o.Z)(g,c);delete a.customPoliciesPath,delete a.customPoliciesPaths,(0,o.f)(a,g,c),f("Custom hooks path cleared.")}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){let b=F(a);G(b.packs,!1,g,c);var i=a=b.builtins;let d=new Set(u.H.filter(a=>a.alwaysOn).map(a=>a.name)),e=i.filter(a=>d.has(a));if(e.length>0)throw new x(`Cannot disable: ${e.join(", ")}
|
|
14
14
|
It stops an agent from switching failproofai off, so it is always on.`);if(b.packs.length>0&&0===a.length)return}if(a&&a.length>0&&(1!==a.length||"all"!==a[0])){let e=(0,o.Z)(g,c),i=new Set(a),j=e.enabledPolicies.filter(a=>!i.has(a)),k=a.filter(a=>!e.enabledPolicies.includes(a));k.length>0&&f(`Warning: policy(ies) not currently enabled: ${k.join(", ")}`);let{policyParams:l,...p}=e,r=l?Object.fromEntries(Object.entries(l).filter(([a])=>!i.has(a))):null,s={...p,enabledPolicies:j,...r&&Object.keys(r).length>0?{policyParams:r}:{}};(0,o.f)(s,g,c);try{let c=(0,n._)(),f=a.filter(a=>e.enabledPolicies.includes(a));await (0,m.f)(c,"hooks_removed",{scope:b,cli:h,removal_mode:d?.betaOnly?"beta_policies":"policies",beta_only:d?.betaOnly??!1,policies_removed:f,removed_count:f.length,...d?.source?{source:d.source}:{},platform:(0,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)())})}catch{}f(`Disabled ${a.length-k.length} policy(ies).`),f(`Remaining: ${j.length>0?j.join(", "):"(none)"}`);return}let j=(0,o.Z)(g,c),k=()=>{if(!d?.syncAgentSelection||"user"!==b&&"all"!==b)return;let a=C("removed",h.filter(a=>"all"===b||(0,s.B)(a).scopes.includes("user")));a&&f(a)},l=0,p=!1;for(let a of h){let d=(0,s.B)(a);for(let g of"all"===b?[...d.scopes]:d.scopes.includes(b)?[b]:[]){let i=0;if("codex"===a&&"user"===g){let a=(0,t.g)();if("removed"===a.status){if(i=a.hooks,"all"!==b)for(let b of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${a.hooks} failproofai ${1===a.hooks?"hook":"hooks"} from Codex's system config.`)),(0,B.m)((0,B.w)(process.stdout)).kv([["settings",a.path]])))f(b)}else if("failed"===a.status)for(let b of(0,B.m)((0,B.w)(process.stdout)).notice("caution",`failproofai's Codex hooks are still in ${a.path}: ${a.reason}.
|
|
15
|
-
Run \`sudo -v\`, then this command again.`))f(b)}let j=(0,s.r)(d,g,c),k="hermes"===a?j:j.filter(a=>(0,e.existsSync)(a));if(0===k.length){if(l+=i,i>0)continue;"all"!==b&&1===h.length&&(f((0,B.m)((0,B.w)(process.stdout)).ok("No settings file found, so there is nothing to remove.")),p=!0);continue}let m=i;for(let a of k){let c=d.removeHooksFromFile(a);if(m+=c,c>0&&"all"!==b)for(let b of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${c} failproofai ${1===c?"hook":"hooks"} from ${d.displayName} settings.`)),(0,B.m)((0,B.w)(process.stdout)).kv([["settings",a]])))f(b)}if(0===m&&"all"!==b&&1===h.length){f((0,B.m)((0,B.w)(process.stdout)).ok("No hooks found in settings, so there is nothing to remove.")),p=!0;continue}l+=m}}if(p&&0===l)return void k();if("all"===b)for(let a of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${l} failproofai ${1===l?"hook":"hooks"} from every scope.`)),h)){let b=(0,s.B)(a);for(let a of b.scopes)for(let d of(0,s.r)(b,a,c))f(`${B.J}${b.displayName}, ${a}: ${d}`)}try{let a=(0,n._)();await (0,m.f)(a,"hooks_removed",{scope:b,cli:h,removal_mode:"hooks",policies_removed:j.enabledPolicies,removed_count:l,...d?.source?{source:d.source}:{},platform:(0,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)())})}catch{}if("all"===b)for(let a of r.F){let b=(0,o.Z)(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPaths?.length||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,customPoliciesPaths:e,policyParams:f,...g}=b;(0,o.f)({...g,enabledPolicies:[]},a,c)}}else if(!r.F.some(a=>H(a,c))){let{customPoliciesPath:a,customPoliciesPaths:b,policyParams:d,...e}=(0,o.Z)(g,c);(0,o.f)({...e,enabledPolicies:[]},g,c)}k()}var L=a.i(24282),M=a.i(12714);async function N(a,b){let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),d=(0,f.resolve)((0,o.Y)(c),".failproofai","policies"),e=(0,h.E)(),g=[];for(let{scope:c,dir:h}of[{scope:"project",dir:d},...e===d?[]:[{scope:"user",dir:e}]]){let d=[];try{d=(0,v.discoverPolicyFiles)(h)}catch{continue}for(let e of d){if(b.has(e))continue;let d=[];try{d=(await O(e)).map(b=>{let d=(0,v.conventionPolicyId)(c,(0,f.basename)(e),b.name);return{...b,id:d,enabled:!a.has(d)}})}catch{}g.push({scope:c,file:(0,f.basename)(e),path:e,policies:d})}}return g}async function O(a){if(!(0,e.existsSync)(a))return[];let b=await (0,M.readFile)(a,"utf-8"),c=[],d=b.split(/customPolicies\.add\s*\(/);for(let a=1;a<d.length;a++){let b=d[a],e=b.match(/name:\s*["'`]([^"'`]+)["'`]/);if(!e)continue;let f=b.match(/description:\s*["'`]([^"'`]+)["'`]/),g=b.match(/events:\s*\[([^\]]+)\]/),h=g?g[1].replace(/["'`\s]/g,"").split(",").filter(Boolean).join(", "):void 0;c.push({name:e[1],description:f?.[1],eventScope:h,id:"",enabled:!0})}return c}async function P(){let a=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),b=(0,o.q)(a),c=new Set(b.disabledCustomPolicies??[]),d=r.F.filter(a=>H(a)),e=E(d[0]??"user"),g=(0,s.u)().map(a=>({id:a.id,label:(0,L.A)(a.id),installed:a.hooksInstalledInSettings("user"),settingsPath:a.getSettingsPath("user"),detected:a.detectInstalled()})),h=[],i=[];try{let a=(0,y.V)();h=a.packs,i=a.errors}catch{}let j=[];for(let a of h){let d=a.enabled??a.policies.map(a=>a.name);for(let e of a.policies)j.push({name:e.name,description:e.description,category:e.category,defaultEnabled:e.defaultEnabled,beta:!1,enabled:d.includes(e.name)&&!c.has(`pack:${a.id}@${a.version}:${e.name}`),eventScope:function(a){let b=a.events?.join(", ")??"",c=a.toolNames?` \xb7 ${a.toolNames.join(", ")}`:"";return`${b}${c}`}(e.match),packId:a.id,packVersion:a.version,...e.params?{params:Object.fromEntries(Object.entries(e.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])),currentParams:function(a,b,c){if(!a)return;let d=a[`pack/${b}/${c}`];return d||(b.toLowerCase()===k.w.toLowerCase()?a[c]:void 0)}(b.policyParams,a.id,e.name)??{}}:{}})}let l=(0,o.W)(b),m=(0,o.Y)(a),n=l.map(a=>(0,f.resolve)(m,a)),p=(await Promise.all(n.map(async a=>{try{return(await O(a)).map(b=>{let d=(0,v.customPolicyId)(a,b.name);return{...b,id:d,enabled:!c.has(d)}})}catch{return[]}}))).flat(),q=await N(c,new Set(n)),t=h.map(a=>{let b=a.enabled??a.policies.map(a=>a.name);return{id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(d=>({name:d.name,description:d.description,category:d.category,enabled:b.includes(d.name)&&!c.has(`pack:${a.id}@${a.version}:${d.name}`)}))}});for(let a of i)t.push({id:a.id??"(unnamed pack)",version:"",source:"",effect:"enforce",policies:[],error:a.reason});return{enabledPolicies:b.enabledPolicies,installedScopes:d,settingsPath:e,clis:g,policies:j,customPoliciesPaths:l.length?l:void 0,customPoliciesPath:1===l.length?l[0]:void 0,customPolicies:p.length?p:void 0,conventionPolicies:q,packs:t}}async function Q(a,b){let c=(0,o.E)(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),(0,o.H)({...c,enabledPolicies:[...d]});try{let c=(0,n._)();await (0,m.f)(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function R(a,b){if(!a.startsWith("custom:")&&!a.startsWith("convention:"))throw Error("Invalid custom policy ID");let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd();if(b){for(let b of r.F){let d=(0,o.Z)(b,c);if(!d.disabledCustomPolicies?.includes(a))continue;let e=d.disabledCustomPolicies.filter(b=>b!==a),f={...d,disabledCustomPolicies:e};e.length||delete f.disabledCustomPolicies,(0,o.f)(f,b,c)}return}let d=(0,o.E)(),e=new Set(d.disabledCustomPolicies??[]);e.add(a);let f={...d,disabledCustomPolicies:[...e]};e.size||delete f.disabledCustomPolicies,(0,o.H)(f)}async function S(a,b){let c=a.trim();if(!c)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.z)(c,b??{});return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function T(){try{let a=await (0,k.I)(k.w);return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function U(a){let b;try{b=(0,k.R)(a)}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}return b?{ok:!0,id:b}:{ok:!1,error:`No installed pack with id ${a}`}}async function V(a,b,c){let d=(0,k.g)(a,b,c);if(!d.ok)return{ok:!1,error:d.reason};if(c){let c=(0,y.V)().packs.find(b=>b.id===a);if(c){let a=`pack:${c.id}@${c.version}:${b}`,d=(0,o.E)(),e=(d.disabledCustomPolicies??[]).filter(b=>b!==a);if(e.length!==(d.disabledCustomPolicies??[]).length){let{disabledCustomPolicies:a,...b}=d;(0,o.H)(e.length>0?{...b,disabledCustomPolicies:e}:b)}}}return{ok:!0,id:a}}async function W(a){let b=a.trim();if(!b)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.k)(b);return{ok:!0,id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(a=>({name:a.name,description:a.description,category:a.category,defaultEnabled:a.defaultEnabled})),...a.semantic.length>0?{semantic:a.semantic.map(a=>a.name)}:{},...a.minCliVersion?{minCliVersion:a.minCliVersion}:{}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function X(a="user",b){let c=(0,o.E)(),d=c.enabledPolicies.length>0?c.enabledPolicies:u.H.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name),e=b&&b.length>0?b:(0,s.w)(),f=e.length>0?e:["claude"];await I(d,a,void 0,!1,"web",void 0,!1,f,{syncAgentSelection:!0})}async function Y(a="user",b){let c=b&&b.length>0?b:(0,s.w)(),d=c.length>0?c:["claude"];await K(void 0,a,void 0,{source:"web",cli:d,syncAgentSelection:!0})}async function Z(a,b){let c=(0,o.E)(),d={...c.policyParams??{},[a]:b};(0,o.H)({...c,policyParams:d});try{let c=(0,n._)();await (0,m.f)(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,i.ensureServerEntryExports)([P]),(0,d.registerServerReference)(P,"
|
|
15
|
+
Run \`sudo -v\`, then this command again.`))f(b)}let j=(0,s.r)(d,g,c),k="hermes"===a?j:j.filter(a=>(0,e.existsSync)(a));if(0===k.length){if(l+=i,i>0)continue;"all"!==b&&1===h.length&&(f((0,B.m)((0,B.w)(process.stdout)).ok("No settings file found, so there is nothing to remove.")),p=!0);continue}let m=i;for(let a of k){let c=d.removeHooksFromFile(a);if(m+=c,c>0&&"all"!==b)for(let b of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${c} failproofai ${1===c?"hook":"hooks"} from ${d.displayName} settings.`)),(0,B.m)((0,B.w)(process.stdout)).kv([["settings",a]])))f(b)}if(0===m&&"all"!==b&&1===h.length){f((0,B.m)((0,B.w)(process.stdout)).ok("No hooks found in settings, so there is nothing to remove.")),p=!0;continue}l+=m}}if(p&&0===l)return void k();if("all"===b)for(let a of(f((0,B.m)((0,B.w)(process.stdout)).ok(`Removed ${l} failproofai ${1===l?"hook":"hooks"} from every scope.`)),h)){let b=(0,s.B)(a);for(let a of b.scopes)for(let d of(0,s.r)(b,a,c))f(`${B.J}${b.displayName}, ${a}: ${d}`)}try{let a=(0,n._)();await (0,m.f)(a,"hooks_removed",{scope:b,cli:h,removal_mode:"hooks",policies_removed:j.enabledPolicies,removed_count:l,...d?.source?{source:d.source}:{},platform:(0,q.platform)(),arch:(0,q.arch)(),os_release:(0,q.release)(),hostname_hash:(0,n.F)((0,q.hostname)())})}catch{}if("all"===b)for(let a of r.F){let b=(0,o.Z)(a,c);if(b.enabledPolicies.length>0||b.customPoliciesPaths?.length||b.customPoliciesPath||b.policyParams){let{customPoliciesPath:d,customPoliciesPaths:e,policyParams:f,...g}=b;(0,o.f)({...g,enabledPolicies:[]},a,c)}}else if(!r.F.some(a=>H(a,c))){let{customPoliciesPath:a,customPoliciesPaths:b,policyParams:d,...e}=(0,o.Z)(g,c);(0,o.f)({...e,enabledPolicies:[]},g,c)}k()}var L=a.i(24282),M=a.i(12714);async function N(a,b){let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),d=(0,f.resolve)((0,o.Y)(c),".failproofai","policies"),e=(0,h.E)(),g=[];for(let{scope:c,dir:h}of[{scope:"project",dir:d},...e===d?[]:[{scope:"user",dir:e}]]){let d=[];try{d=(0,v.discoverPolicyFiles)(h)}catch{continue}for(let e of d){if(b.has(e))continue;let d=[];try{d=(await O(e)).map(b=>{let d=(0,v.conventionPolicyId)(c,(0,f.basename)(e),b.name);return{...b,id:d,enabled:!a.has(d)}})}catch{}g.push({scope:c,file:(0,f.basename)(e),path:e,policies:d})}}return g}async function O(a){if(!(0,e.existsSync)(a))return[];let b=await (0,M.readFile)(a,"utf-8"),c=[],d=b.split(/customPolicies\.add\s*\(/);for(let a=1;a<d.length;a++){let b=d[a],e=b.match(/name:\s*["'`]([^"'`]+)["'`]/);if(!e)continue;let f=b.match(/description:\s*["'`]([^"'`]+)["'`]/),g=b.match(/events:\s*\[([^\]]+)\]/),h=g?g[1].replace(/["'`\s]/g,"").split(",").filter(Boolean).join(", "):void 0;c.push({name:e[1],description:f?.[1],eventScope:h,id:"",enabled:!0})}return c}async function P(){let a=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd(),b=(0,o.q)(a),c=new Set(b.disabledCustomPolicies??[]),d=r.F.filter(a=>H(a)),e=E(d[0]??"user"),g=(0,s.u)().map(a=>({id:a.id,label:(0,L.A)(a.id),installed:a.hooksInstalledInSettings("user"),settingsPath:a.getSettingsPath("user"),detected:a.detectInstalled()})),h=[],i=[];try{let a=(0,y.V)();h=a.packs,i=a.errors}catch{}let j=[];for(let a of h){let d=a.enabled??a.policies.map(a=>a.name);for(let e of a.policies)j.push({name:e.name,description:e.description,category:e.category,defaultEnabled:e.defaultEnabled,beta:!1,enabled:d.includes(e.name)&&!c.has(`pack:${a.id}@${a.version}:${e.name}`),eventScope:function(a){let b=a.events?.join(", ")??"",c=a.toolNames?` \xb7 ${a.toolNames.join(", ")}`:"";return`${b}${c}`}(e.match),packId:a.id,packVersion:a.version,...e.params?{params:Object.fromEntries(Object.entries(e.params).map(([a,b])=>[a,{type:b.type,description:b.description,default:b.default}])),currentParams:function(a,b,c){if(!a)return;let d=a[`pack/${b}/${c}`];return d||(b.toLowerCase()===k.w.toLowerCase()?a[c]:void 0)}(b.policyParams,a.id,e.name)??{}}:{}})}let l=(0,o.W)(b),m=(0,o.Y)(a),n=l.map(a=>(0,f.resolve)(m,a)),p=(await Promise.all(n.map(async a=>{try{return(await O(a)).map(b=>{let d=(0,v.customPolicyId)(a,b.name);return{...b,id:d,enabled:!c.has(d)}})}catch{return[]}}))).flat(),q=await N(c,new Set(n)),t=h.map(a=>{let b=a.enabled??a.policies.map(a=>a.name);return{id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(d=>({name:d.name,description:d.description,category:d.category,enabled:b.includes(d.name)&&!c.has(`pack:${a.id}@${a.version}:${d.name}`)}))}});for(let a of i)t.push({id:a.id??"(unnamed pack)",version:"",source:"",effect:"enforce",policies:[],error:a.reason});return{enabledPolicies:b.enabledPolicies,installedScopes:d,settingsPath:e,clis:g,policies:j,customPoliciesPaths:l.length?l:void 0,customPoliciesPath:1===l.length?l[0]:void 0,customPolicies:p.length?p:void 0,conventionPolicies:q,packs:t}}async function Q(a,b){let c=(0,o.E)(),d=new Set(c.enabledPolicies);b?d.add(a):d.delete(a),(0,o.H)({...c,enabledPolicies:[...d]});try{let c=(0,n._)();await (0,m.f)(c,"policy_toggled",{policy_name:a,enabled:b,action:b?"enable":"disable",source:"web"})}catch{}}async function R(a,b){if(!a.startsWith("custom:")&&!a.startsWith("convention:"))throw Error("Invalid custom policy ID");let c=process.env.FAILPROOFAI_LAUNCH_CWD||process.cwd();if(b){for(let b of r.F){let d=(0,o.Z)(b,c);if(!d.disabledCustomPolicies?.includes(a))continue;let e=d.disabledCustomPolicies.filter(b=>b!==a),f={...d,disabledCustomPolicies:e};e.length||delete f.disabledCustomPolicies,(0,o.f)(f,b,c)}return}let d=(0,o.E)(),e=new Set(d.disabledCustomPolicies??[]);e.add(a);let f={...d,disabledCustomPolicies:[...e]};e.size||delete f.disabledCustomPolicies,(0,o.H)(f)}async function S(a,b){let c=a.trim();if(!c)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.z)(c,b??{});return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function T(){try{let a=await (0,k.I)(k.w);return{ok:!0,id:a.id,version:a.version,enabled:a.enabled,available:a.available}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function U(a){let b;try{b=(0,k.R)(a)}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}return b?{ok:!0,id:b}:{ok:!1,error:`No installed pack with id ${a}`}}async function V(a,b,c){let d=(0,k.g)(a,b,c);if(!d.ok)return{ok:!1,error:d.reason};if(c){let c=(0,y.V)().packs.find(b=>b.id===a);if(c){let a=`pack:${c.id}@${c.version}:${b}`,d=(0,o.E)(),e=(d.disabledCustomPolicies??[]).filter(b=>b!==a);if(e.length!==(d.disabledCustomPolicies??[]).length){let{disabledCustomPolicies:a,...b}=d;(0,o.H)(e.length>0?{...b,disabledCustomPolicies:e}:b)}}}return{ok:!0,id:a}}async function W(a){let b=a.trim();if(!b)return{ok:!1,error:"Enter a pack source, for example acme/ops"};try{let a=await (0,k.k)(b);return{ok:!0,id:a.id,version:a.version,source:a.source,effect:a.effect,policies:a.policies.map(a=>({name:a.name,description:a.description,category:a.category,defaultEnabled:a.defaultEnabled})),...a.semantic.length>0?{semantic:a.semantic.map(a=>a.name)}:{},...a.minCliVersion?{minCliVersion:a.minCliVersion}:{}}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}}async function X(a="user",b){let c=(0,o.E)(),d=c.enabledPolicies.length>0?c.enabledPolicies:u.H.filter(a=>a.defaultEnabled&&!a.beta).map(a=>a.name),e=b&&b.length>0?b:(0,s.w)(),f=e.length>0?e:["claude"];await I(d,a,void 0,!1,"web",void 0,!1,f,{syncAgentSelection:!0})}async function Y(a="user",b){let c=b&&b.length>0?b:(0,s.w)(),d=c.length>0?c:["claude"];await K(void 0,a,void 0,{source:"web",cli:d,syncAgentSelection:!0})}async function Z(a,b){let c=(0,o.E)(),d={...c.policyParams??{},[a]:b};(0,o.H)({...c,policyParams:d});try{let c=(0,n._)();await (0,m.f)(c,"policy_params_updated",{policy_name:a,param_keys:Object.keys(b),source:"web"})}catch{}}(0,i.ensureServerEntryExports)([P]),(0,d.registerServerReference)(P,"00895d4b3cd614451111010c4743e2ad2b811e5c2c",null),(0,i.ensureServerEntryExports)([Q,R]),(0,d.registerServerReference)(Q,"600a9c90e6e2912627713fae6a1b8b3dc0435d318f",null),(0,d.registerServerReference)(R,"60610fdb7d8fb2a361b4bc0d05a60a7b15ebad2094",null),(0,i.ensureServerEntryExports)([S,T,U,V,W]),(0,d.registerServerReference)(S,"60b6e8e7090c5c8590f764abbab3b30a2eede0ae22",null),(0,d.registerServerReference)(T,"001cb3a8cce3e879e730a681bbdce4baed8c03e613",null),(0,d.registerServerReference)(U,"40a74110c39998cb132b4d90657de1626f06005548",null),(0,d.registerServerReference)(V,"7001d320c6c3fef3b3649902714c0cf0288a81c1e2",null),(0,d.registerServerReference)(W,"40ec2c7861d3db95ade86663849449ccf76ab587e8",null),(0,i.ensureServerEntryExports)([X,Y]),(0,d.registerServerReference)(X,"608a0187039113b0496b566969083088c722196ffb",null),(0,d.registerServerReference)(Y,"6076719922358ae20ca97754eef7fd0f65124a5053",null),(0,i.ensureServerEntryExports)([Z]),(0,d.registerServerReference)(Z,"6093da8b551f35f73b8f46534d796e87a0108db474",null),a.s(["001cb3a8cce3e879e730a681bbdce4baed8c03e613",0,T,"0048b2349d5d15713f07f749a4aa9714eb8407cfbf",0,j,"00817d93b66813c1f16544147af118f6c81d0f496f",()=>b.f,"00895d4b3cd614451111010c4743e2ad2b811e5c2c",0,P,"406d4e7dd09da534fa3e96b2da8d244957c81e7245",()=>c.x,"40a74110c39998cb132b4d90657de1626f06005548",0,U,"40ec2c7861d3db95ade86663849449ccf76ab587e8",0,W,"60130bb15961cded68b8676eee6422be45b28ff640",()=>c.m,"60610fdb7d8fb2a361b4bc0d05a60a7b15ebad2094",0,R,"6076719922358ae20ca97754eef7fd0f65124a5053",0,Y,"608a0187039113b0496b566969083088c722196ffb",0,X,"6093da8b551f35f73b8f46534d796e87a0108db474",0,Z,"60b6e8e7090c5c8590f764abbab3b30a2eede0ae22",0,S,"7001d320c6c3fef3b3649902714c0cf0288a81c1e2",0,V],73338)}];
|
|
16
16
|
|
|
17
17
|
//# sourceMappingURL=_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js.map
|