failproofai 0.0.1-beta.1
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 -0
- package/.next/standalone/.next/app-path-routes-manifest.json +11 -0
- package/.next/standalone/.next/build-manifest.json +22 -0
- package/.next/standalone/.next/package.json +1 -0
- package/.next/standalone/.next/prerender-manifest.json +114 -0
- package/.next/standalone/.next/required-server-files.json +333 -0
- package/.next/standalone/.next/routes-manifest.json +108 -0
- package/.next/standalone/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +17 -0
- package/.next/standalone/.next/server/app/_global-error/page.js +9 -0
- package/.next/standalone/.next/server/app/_global-error/page.js.map +5 -0
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/_global-error.html +1 -0
- package/.next/standalone/.next/server/app/_global-error.meta +15 -0
- package/.next/standalone/.next/server/app/_global-error.rsc +14 -0
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/standalone/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/_not-found/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +17 -0
- package/.next/standalone/.next/server/app/_not-found/page.js +14 -0
- package/.next/standalone/.next/server/app/_not-found/page.js.map +5 -0
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/_not-found.html +30 -0
- package/.next/standalone/.next/server/app/_not-found.meta +16 -0
- package/.next/standalone/.next/server/app/_not-found.rsc +27 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +27 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +12 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +7 -0
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/icon.png/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/icon.png/route/build-manifest.json +9 -0
- package/.next/standalone/.next/server/app/icon.png/route.js +7 -0
- package/.next/standalone/.next/server/app/icon.png/route.js.map +5 -0
- package/.next/standalone/.next/server/app/icon.png/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/icon.png.body +0 -0
- package/.next/standalone/.next/server/app/icon.png.meta +1 -0
- package/.next/standalone/.next/server/app/index.html +1 -0
- package/.next/standalone/.next/server/app/index.meta +15 -0
- package/.next/standalone/.next/server/app/index.rsc +22 -0
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +22 -0
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +6 -0
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +12 -0
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -0
- package/.next/standalone/.next/server/app/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +17 -0
- package/.next/standalone/.next/server/app/page.js +16 -0
- package/.next/standalone/.next/server/app/page.js.map +5 -0
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/policies/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/policies/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/policies/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +101 -0
- package/.next/standalone/.next/server/app/policies/page.js +17 -0
- package/.next/standalone/.next/server/app/policies/page.js.map +5 -0
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/project/[name]/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/project/[name]/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/project/[name]/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +17 -0
- package/.next/standalone/.next/server/app/project/[name]/page.js +18 -0
- package/.next/standalone/.next/server/app/project/[name]/page.js.map +5 -0
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +9 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +29 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +20 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.map +5 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app/projects/page/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +18 -0
- package/.next/standalone/.next/server/app/projects/page/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/app/projects/page/react-loadable-manifest.json +1 -0
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +17 -0
- package/.next/standalone/.next/server/app/projects/page.js +17 -0
- package/.next/standalone/.next/server/app/projects/page.js.map +5 -0
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +3 -0
- package/.next/standalone/.next/server/app-paths-manifest.json +11 -0
- package/.next/standalone/.next/server/chunks/[externals]__0-p9.k~._.js +3 -0
- package/.next/standalone/.next/server/chunks/[externals]__080wern._.js +3 -0
- package/.next/standalone/.next/server/chunks/[externals]__0z0j--b._.js +3 -0
- package/.next/standalone/.next/server/chunks/[externals]_next_dist_0sqmaqd._.js +3 -0
- package/.next/standalone/.next/server/chunks/[externals]_node_os_06ur78j._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02nt~6d._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b57.gk._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g48iv.._.js +20 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0j8-xkl._.js +13 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kjo7d_._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0yspgjy._.js +3 -0
- package/.next/standalone/.next/server/chunks/[turbopack]_runtime.js +903 -0
- package/.next/standalone/.next/server/chunks/_0ebx_lc._.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_download_[project]_[session]_route_actions_0wb00i-.js +3 -0
- package/.next/standalone/.next/server/chunks/_next-internal_server_app_icon_png_route_actions_12.gv.r.js +3 -0
- package/.next/standalone/.next/server/chunks/lib_logger_ts_047tt9f._.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0bdfoky.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_05pz9._._.js +3 -0
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_0z7w.hh._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[externals]__12dv.x0._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[externals]_node_async_hooks_0v0ln8c._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0138pgk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__02r.cjq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__092s1ta._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09icjsf._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09y9okz._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__09z7o2x._.js +19 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0_sh2n0._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0dj-tbi._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0g.lg8b._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h..k-e._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0m72uj7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nn6lb4._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0odijkc._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0of~riu._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0osi8nq._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0w6l33k._.js +16 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__105.l_7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__10xgshr._.js +33 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__11pa2ra._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12t-wym._.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
- package/.next/standalone/.next/server/chunks/ssr/_02_tcps._.js +32 -0
- package/.next/standalone/.next/server/chunks/ssr/_0h21oar._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0i~.gk_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0q3h.2s._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0x..fj-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_10lm7or._.js +5 -0
- package/.next/standalone/.next/server/chunks/ssr/app_04qfs8z._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_0uosk1e._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_13f0ohr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_error_tsx_11t4ysq._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0m9qisk._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_0xerkr6._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_0q-m0y-._.js +8 -0
- package/.next/standalone/.next/server/chunks/ssr/app_project_[name]_error_tsx_0.9-fod._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_project_[name]_loading_tsx_03g9xy0._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_project_[name]_session_[sessionId]_error_tsx_0ler-mr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_project_[name]_session_[sessionId]_loading_tsx_0c0e3yx._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_projects_loading_tsx_13veom4._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0rd0oc-._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_06u0kr8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0h9llsw._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_11dij6w._.js +6 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_0inhx6q._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0a_7sdg.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0ef3uwk.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0j79~gv.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0pbja1x.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0r6o0i2.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_11y81~_.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_12or2kf.js +4 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0mebn66._.js +3 -0
- package/.next/standalone/.next/server/functions-config-manifest.json +14 -0
- package/.next/standalone/.next/server/instrumentation.js +4 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +22 -0
- package/.next/standalone/.next/server/middleware-manifest.json +6 -0
- package/.next/standalone/.next/server/middleware.js +5 -0
- package/.next/standalone/.next/server/next-font-manifest.js +1 -0
- package/.next/standalone/.next/server/next-font-manifest.json +6 -0
- package/.next/standalone/.next/server/pages/404.html +30 -0
- package/.next/standalone/.next/server/pages/500.html +1 -0
- package/.next/standalone/.next/server/pages-manifest.json +4 -0
- package/.next/standalone/.next/server/prefetch-hints.json +1 -0
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -0
- package/.next/standalone/.next/server/server-reference-manifest.json +144 -0
- package/.next/standalone/CHANGELOG.md +10 -0
- package/.next/standalone/CONTRIBUTING.md +76 -0
- package/.next/standalone/LICENSE +42 -0
- package/.next/standalone/README.md +247 -0
- package/.next/standalone/app/actions/get-hook-activity.ts +27 -0
- package/.next/standalone/app/actions/get-hooks-config.ts +105 -0
- package/.next/standalone/app/actions/get-telemetry-config.ts +27 -0
- package/.next/standalone/app/actions/install-hooks-web.ts +21 -0
- package/.next/standalone/app/actions/update-hooks-config.ts +29 -0
- package/.next/standalone/app/actions/update-policy-params.ts +26 -0
- package/.next/standalone/app/api/download/[project]/[session]/route.ts +47 -0
- package/.next/standalone/app/components/copy-button.tsx +68 -0
- package/.next/standalone/app/components/date-picker-input.tsx +57 -0
- package/.next/standalone/app/components/error-fallback.tsx +42 -0
- package/.next/standalone/app/components/global-error-listeners.tsx +36 -0
- package/.next/standalone/app/components/lazy-log-viewer.tsx +28 -0
- package/.next/standalone/app/components/log-viewer/constants.ts +33 -0
- package/.next/standalone/app/components/log-viewer/content-block-view.tsx +142 -0
- package/.next/standalone/app/components/log-viewer/entry-icon.tsx +27 -0
- package/.next/standalone/app/components/log-viewer/entry-link-button.tsx +39 -0
- package/.next/standalone/app/components/log-viewer/entry-row.tsx +176 -0
- package/.next/standalone/app/components/log-viewer/index.tsx +1 -0
- package/.next/standalone/app/components/log-viewer/queue-divider.tsx +61 -0
- package/.next/standalone/app/components/log-viewer/stats-bar.tsx +50 -0
- package/.next/standalone/app/components/log-viewer/tool-input-output.tsx +61 -0
- package/.next/standalone/app/components/log-viewer/type-badge.tsx +14 -0
- package/.next/standalone/app/components/pagination-controls.tsx +94 -0
- package/.next/standalone/app/components/project-list.tsx +333 -0
- package/.next/standalone/app/components/raw-log-viewer.tsx +537 -0
- package/.next/standalone/app/components/refresh-button.tsx +80 -0
- package/.next/standalone/app/components/session-hooks-panel.tsx +394 -0
- package/.next/standalone/app/components/sessions-list.tsx +227 -0
- package/.next/standalone/app/components/toast.tsx +67 -0
- package/.next/standalone/app/error.tsx +7 -0
- package/.next/standalone/app/global-error.tsx +76 -0
- package/.next/standalone/app/globals.css +276 -0
- package/.next/standalone/app/icon.png +0 -0
- package/.next/standalone/app/layout.tsx +91 -0
- package/.next/standalone/app/page.tsx +7 -0
- package/.next/standalone/app/policies/hooks-client.tsx +1269 -0
- package/.next/standalone/app/policies/page.tsx +24 -0
- package/.next/standalone/app/project/[name]/error.tsx +7 -0
- package/.next/standalone/app/project/[name]/loading.tsx +27 -0
- package/.next/standalone/app/project/[name]/page.tsx +101 -0
- package/.next/standalone/app/project/[name]/session/[sessionId]/error.tsx +7 -0
- package/.next/standalone/app/project/[name]/session/[sessionId]/loading.tsx +34 -0
- package/.next/standalone/app/project/[name]/session/[sessionId]/page.tsx +100 -0
- package/.next/standalone/app/projects/loading.tsx +17 -0
- package/.next/standalone/app/projects/page.tsx +39 -0
- package/.next/standalone/bin/failproofai.mjs +94 -0
- package/.next/standalone/bun.lock +1148 -0
- package/.next/standalone/components/logo.tsx +36 -0
- package/.next/standalone/components/navbar.tsx +82 -0
- package/.next/standalone/components/reach-developers.tsx +99 -0
- package/.next/standalone/components/theme-toggle.tsx +37 -0
- package/.next/standalone/components/ui/button.tsx +42 -0
- package/.next/standalone/components.json +23 -0
- package/.next/standalone/contexts/AutoRefreshContext.tsx +25 -0
- package/.next/standalone/contexts/PostHogContext.tsx +62 -0
- package/.next/standalone/contexts/ThemeContext.tsx +69 -0
- package/.next/standalone/docs/architecture.md +311 -0
- package/.next/standalone/docs/built-in-policies.md +422 -0
- package/.next/standalone/docs/cli-reference.md +148 -0
- package/.next/standalone/docs/configuration.md +172 -0
- package/.next/standalone/docs/custom-hooks.md +257 -0
- package/.next/standalone/docs/dashboard.md +111 -0
- package/.next/standalone/docs/getting-started.md +122 -0
- package/.next/standalone/docs/index.md +47 -0
- package/.next/standalone/docs/testing.md +256 -0
- package/.next/standalone/eslint.config.mjs +15 -0
- package/.next/standalone/examples/policies-advanced/index.js +146 -0
- package/.next/standalone/examples/policies-advanced/utils.js +35 -0
- package/.next/standalone/examples/policies-basic.js +77 -0
- package/.next/standalone/instrumentation.node.ts +37 -0
- package/.next/standalone/instrumentation.ts +11 -0
- package/.next/standalone/lib/claude-config.ts +36 -0
- package/.next/standalone/lib/client-telemetry.ts +37 -0
- package/.next/standalone/lib/concurrency.ts +26 -0
- package/.next/standalone/lib/date-filters.ts +123 -0
- package/.next/standalone/lib/extract-subagent-ids.ts +21 -0
- package/.next/standalone/lib/format-duration.ts +29 -0
- package/.next/standalone/lib/log-entries.ts +460 -0
- package/.next/standalone/lib/log-format.ts +56 -0
- package/.next/standalone/lib/log-stats.ts +54 -0
- package/.next/standalone/lib/logger.ts +70 -0
- package/.next/standalone/lib/paths.ts +42 -0
- package/.next/standalone/lib/projects.ts +181 -0
- package/.next/standalone/lib/resolve-subagent-path.ts +36 -0
- package/.next/standalone/lib/runtime-cache.ts +59 -0
- package/.next/standalone/lib/telemetry-id.ts +97 -0
- package/.next/standalone/lib/telemetry.ts +148 -0
- package/.next/standalone/lib/url-filter-serializers.ts +111 -0
- package/.next/standalone/lib/use-filter-state.ts +68 -0
- package/.next/standalone/lib/use-url-params.ts +66 -0
- package/.next/standalone/lib/utils/session-id.ts +4 -0
- package/.next/standalone/lib/utils.ts +31 -0
- package/.next/standalone/next.config.ts +23 -0
- package/.next/standalone/node_modules/@img/colour/color.cjs +1594 -0
- package/.next/standalone/node_modules/@img/colour/index.cjs +1 -0
- package/.next/standalone/node_modules/@img/colour/package.json +45 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +46 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +221 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +1 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +42 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linux-x64/versions.json +30 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +46 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +221 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
- package/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
- package/.next/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-linux-x64/package.json +46 -0
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
- package/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
- package/.next/standalone/node_modules/@next/env/dist/index.js +1 -0
- package/.next/standalone/node_modules/@next/env/package.json +36 -0
- package/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +6 -0
- package/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +38 -0
- package/.next/standalone/node_modules/@swc/helpers/package.json +471 -0
- package/.next/standalone/node_modules/client-only/index.js +0 -0
- package/.next/standalone/node_modules/client-only/package.json +19 -0
- package/.next/standalone/node_modules/detect-libc/lib/detect-libc.js +313 -0
- package/.next/standalone/node_modules/detect-libc/lib/elf.js +39 -0
- package/.next/standalone/node_modules/detect-libc/lib/filesystem.js +51 -0
- package/.next/standalone/node_modules/detect-libc/lib/process.js +24 -0
- package/.next/standalone/node_modules/detect-libc/package.json +44 -0
- package/.next/standalone/node_modules/next/dist/build/adapter/setup-node-env.external.js +15 -0
- package/.next/standalone/node_modules/next/dist/build/define-env.js +255 -0
- package/.next/standalone/node_modules/next/dist/build/duration-to-string.js +99 -0
- package/.next/standalone/node_modules/next/dist/build/get-supported-browsers.js +38 -0
- package/.next/standalone/node_modules/next/dist/build/next-config-ts/require-hook.js +85 -0
- package/.next/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +251 -0
- package/.next/standalone/node_modules/next/dist/build/output/format.js +84 -0
- package/.next/standalone/node_modules/next/dist/build/output/log.js +135 -0
- package/.next/standalone/node_modules/next/dist/build/segment-config/app/app-segment-config.js +162 -0
- package/.next/standalone/node_modules/next/dist/build/segment-config/app/app-segments.js +137 -0
- package/.next/standalone/node_modules/next/dist/build/segment-config/app/collect-root-param-keys.js +52 -0
- package/.next/standalone/node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js +137 -0
- package/.next/standalone/node_modules/next/dist/build/static-paths/app.js +735 -0
- package/.next/standalone/node_modules/next/dist/build/static-paths/pages.js +169 -0
- package/.next/standalone/node_modules/next/dist/build/static-paths/utils.js +119 -0
- package/.next/standalone/node_modules/next/dist/build/swc/helpers.js +15 -0
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1348 -0
- package/.next/standalone/node_modules/next/dist/build/swc/install-bindings.js +30 -0
- package/.next/standalone/node_modules/next/dist/build/swc/jest-transformer.js +76 -0
- package/.next/standalone/node_modules/next/dist/build/swc/loaderWorkerPool.js +40 -0
- package/.next/standalone/node_modules/next/dist/build/swc/options.js +403 -0
- package/.next/standalone/node_modules/next/dist/build/swc/types.js +6 -0
- package/.next/standalone/node_modules/next/dist/build/utils.js +1215 -0
- package/.next/standalone/node_modules/next/dist/cli/next-test.js +170 -0
- package/.next/standalone/node_modules/next/dist/client/add-base-path.js +24 -0
- package/.next/standalone/node_modules/next/dist/client/app-call-server.js +34 -0
- package/.next/standalone/node_modules/next/dist/client/app-find-source-map-url.js +39 -0
- package/.next/standalone/node_modules/next/dist/client/assign-location.js +29 -0
- package/.next/standalone/node_modules/next/dist/client/components/app-router-announcer.js +78 -0
- package/.next/standalone/node_modules/next/dist/client/components/app-router-headers.js +138 -0
- package/.next/standalone/node_modules/next/dist/client/components/app-router-instance.js +397 -0
- package/.next/standalone/node_modules/next/dist/client/components/app-router-utils.js +62 -0
- package/.next/standalone/node_modules/next/dist/client/components/app-router.js +514 -0
- package/.next/standalone/node_modules/next/dist/client/components/builtin/default.js +35 -0
- package/.next/standalone/node_modules/next/dist/client/components/builtin/error-styles.js +165 -0
- package/.next/standalone/node_modules/next/dist/client/components/builtin/global-error.js +100 -0
- package/.next/standalone/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js +52 -0
- package/.next/standalone/node_modules/next/dist/client/components/error-boundary.js +144 -0
- package/.next/standalone/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js +86 -0
- package/.next/standalone/node_modules/next/dist/client/components/errors/root-error-boundary.js +41 -0
- package/.next/standalone/node_modules/next/dist/client/components/forbidden.js +48 -0
- package/.next/standalone/node_modules/next/dist/client/components/handle-isr-error.js +30 -0
- package/.next/standalone/node_modules/next/dist/client/components/hooks-server-context.js +42 -0
- package/.next/standalone/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js +125 -0
- package/.next/standalone/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js +72 -0
- package/.next/standalone/node_modules/next/dist/client/components/is-next-router-error.js +23 -0
- package/.next/standalone/node_modules/next/dist/client/components/links.js +299 -0
- package/.next/standalone/node_modules/next/dist/client/components/match-segments.js +32 -0
- package/.next/standalone/node_modules/next/dist/client/components/nav-failure-handler.js +61 -0
- package/.next/standalone/node_modules/next/dist/client/components/navigation-devtools.js +126 -0
- package/.next/standalone/node_modules/next/dist/client/components/navigation-untracked.js +67 -0
- package/.next/standalone/node_modules/next/dist/client/components/navigation.js +225 -0
- package/.next/standalone/node_modules/next/dist/client/components/navigation.react-server.js +75 -0
- package/.next/standalone/node_modules/next/dist/client/components/not-found.js +42 -0
- package/.next/standalone/node_modules/next/dist/client/components/readonly-url-search-params.js +41 -0
- package/.next/standalone/node_modules/next/dist/client/components/redirect-boundary.js +107 -0
- package/.next/standalone/node_modules/next/dist/client/components/redirect-error.js +43 -0
- package/.next/standalone/node_modules/next/dist/client/components/redirect-status-code.js +24 -0
- package/.next/standalone/node_modules/next/dist/client/components/redirect.js +91 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +201 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js +21 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +153 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js +32 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +457 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +59 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +1341 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js +49 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +63 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js +38 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js +23 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +56 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +83 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +62 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +320 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +58 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js +70 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer.js +66 -0
- package/.next/standalone/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js +60 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/bfcache.js +128 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/cache-key.js +28 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/cache-map.js +305 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/cache.js +1933 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/lru.js +152 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +194 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/navigation.js +597 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +543 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/prefetch.js +31 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/scheduler.js +1249 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/types.js +69 -0
- package/.next/standalone/node_modules/next/dist/client/components/segment-cache/vary-path.js +278 -0
- package/.next/standalone/node_modules/next/dist/client/components/static-generation-bailout.js +42 -0
- package/.next/standalone/node_modules/next/dist/client/components/unauthorized.js +49 -0
- package/.next/standalone/node_modules/next/dist/client/components/unrecognized-action-error.js +39 -0
- package/.next/standalone/node_modules/next/dist/client/components/unresolved-thenable.js +23 -0
- package/.next/standalone/node_modules/next/dist/client/components/unstable-rethrow.browser.js +28 -0
- package/.next/standalone/node_modules/next/dist/client/components/unstable-rethrow.js +25 -0
- package/.next/standalone/node_modules/next/dist/client/components/unstable-rethrow.server.js +32 -0
- package/.next/standalone/node_modules/next/dist/client/components/use-action-queue.js +148 -0
- package/.next/standalone/node_modules/next/dist/client/dev/debug-channel.js +72 -0
- package/.next/standalone/node_modules/next/dist/client/flight-data-helpers.js +232 -0
- package/.next/standalone/node_modules/next/dist/client/has-base-path.js +23 -0
- package/.next/standalone/node_modules/next/dist/client/lib/console.js +177 -0
- package/.next/standalone/node_modules/next/dist/client/lib/javascript-url.js +32 -0
- package/.next/standalone/node_modules/next/dist/client/navigation-build-id.js +53 -0
- package/.next/standalone/node_modules/next/dist/client/normalize-trailing-slash.js +36 -0
- package/.next/standalone/node_modules/next/dist/client/remove-base-path.js +32 -0
- package/.next/standalone/node_modules/next/dist/client/route-params.js +230 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js +339 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/cookies/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/ponyfill/index.js +46 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/ponyfill/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/abort-controller.js.text.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/console.js.text.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/events.js.text.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/index.js +5 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js +18713 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/stream.js +44 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/timers.js.text.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/url.js.text.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@hapi/accept/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@hapi/accept/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@napi-rs/triples/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@napi-rs/triples/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@opentelemetry/api/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/@opentelemetry/api/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/async-retry/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/async-retry/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/async-sema/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/async-sema/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/busboy/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/busboy/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/bytes/index.js +8 -0
- package/.next/standalone/node_modules/next/dist/compiled/bytes/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/ci-info/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/ci-info/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/commander/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/commander/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/comment-json/index.js +7 -0
- package/.next/standalone/node_modules/next/dist/compiled/comment-json/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/compression/index.js +58 -0
- package/.next/standalone/node_modules/next/dist/compiled/compression/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/conf/index.js +15 -0
- package/.next/standalone/node_modules/next/dist/compiled/conf/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/content-disposition/index.js +6 -0
- package/.next/standalone/node_modules/next/dist/compiled/content-disposition/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/cookie/index.js +7 -0
- package/.next/standalone/node_modules/next/dist/compiled/cookie/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/cross-spawn/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/cross-spawn/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/debug/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/debug/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/edge-runtime/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/edge-runtime/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/find-up/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/find-up/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/fresh/index.js +8 -0
- package/.next/standalone/node_modules/next/dist/compiled/fresh/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/http-proxy/index.js +34 -0
- package/.next/standalone/node_modules/next/dist/compiled/http-proxy/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/image-detector/detector.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/image-size/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/image-size/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/ipaddr.js/ipaddr.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/ipaddr.js/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/is-animated/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/is-animated/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/is-docker/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/is-docker/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/is-wsl/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/is-wsl/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/jsonwebtoken/index.js +11 -0
- package/.next/standalone/node_modules/next/dist/compiled/jsonwebtoken/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/nanoid/index.cjs +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/nanoid/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +54 -0
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +54 -0
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +6 -0
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +20 -0
- package/.next/standalone/node_modules/next/dist/compiled/p-limit/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/p-limit/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/p-queue/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/p-queue/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/path-browserify/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/path-browserify/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/path-to-regexp/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/path-to-regexp/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/picomatch/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/picomatch/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/react-is/cjs/react-is.development.js +133 -0
- package/.next/standalone/node_modules/next/dist/compiled/react-is/cjs/react-is.production.js +130 -0
- package/.next/standalone/node_modules/next/dist/compiled/react-is/index.js +7 -0
- package/.next/standalone/node_modules/next/dist/compiled/react-is/package.json +26 -0
- package/.next/standalone/node_modules/next/dist/compiled/regenerator-runtime/package.json +19 -0
- package/.next/standalone/node_modules/next/dist/compiled/regenerator-runtime/runtime.js +729 -0
- package/.next/standalone/node_modules/next/dist/compiled/semver/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/semver/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/send/index.js +70 -0
- package/.next/standalone/node_modules/next/dist/compiled/send/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/source-map/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/source-map/source-map.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/stacktrace-parser/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/string-hash/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/string-hash/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/strip-ansi/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/strip-ansi/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/superstruct/index.cjs +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/superstruct/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/tar/index.min.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/tar/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/text-table/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/text-table/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/watchpack/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/watchpack/watchpack.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/ws/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/ws/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/zod/index.cjs +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/zod/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/zod-validation-error/index.js +1 -0
- package/.next/standalone/node_modules/next/dist/compiled/zod-validation-error/package.json +1 -0
- package/.next/standalone/node_modules/next/dist/experimental/testmode/context.js +57 -0
- package/.next/standalone/node_modules/next/dist/experimental/testmode/fetch.js +142 -0
- package/.next/standalone/node_modules/next/dist/experimental/testmode/httpget.js +26 -0
- package/.next/standalone/node_modules/next/dist/experimental/testmode/server-edge.js +32 -0
- package/.next/standalone/node_modules/next/dist/experimental/testmode/server.js +62 -0
- package/.next/standalone/node_modules/next/dist/export/helpers/create-incremental-cache.js +61 -0
- package/.next/standalone/node_modules/next/dist/lib/batcher.js +65 -0
- package/.next/standalone/node_modules/next/dist/lib/build-custom-route.js +46 -0
- package/.next/standalone/node_modules/next/dist/lib/bundler.js +97 -0
- package/.next/standalone/node_modules/next/dist/lib/client-and-server-references.js +54 -0
- package/.next/standalone/node_modules/next/dist/lib/coalesced-function.js +39 -0
- package/.next/standalone/node_modules/next/dist/lib/compile-error.js +14 -0
- package/.next/standalone/node_modules/next/dist/lib/constants.js +420 -0
- package/.next/standalone/node_modules/next/dist/lib/create-client-router-filter.js +67 -0
- package/.next/standalone/node_modules/next/dist/lib/default-transpiled-packages.json +1 -0
- package/.next/standalone/node_modules/next/dist/lib/detached-promise.js +32 -0
- package/.next/standalone/node_modules/next/dist/lib/detect-typo.js +51 -0
- package/.next/standalone/node_modules/next/dist/lib/download-swc.js +183 -0
- package/.next/standalone/node_modules/next/dist/lib/error-telemetry-utils.js +42 -0
- package/.next/standalone/node_modules/next/dist/lib/fallback.js +100 -0
- package/.next/standalone/node_modules/next/dist/lib/fatal-error.js +14 -0
- package/.next/standalone/node_modules/next/dist/lib/file-exists.js +53 -0
- package/.next/standalone/node_modules/next/dist/lib/find-config.js +102 -0
- package/.next/standalone/node_modules/next/dist/lib/find-pages-dir.js +65 -0
- package/.next/standalone/node_modules/next/dist/lib/find-root.js +126 -0
- package/.next/standalone/node_modules/next/dist/lib/format-cli-help-output.js +84 -0
- package/.next/standalone/node_modules/next/dist/lib/format-dynamic-import-path.js +24 -0
- package/.next/standalone/node_modules/next/dist/lib/format-server-error.js +75 -0
- package/.next/standalone/node_modules/next/dist/lib/framework/boundary-components.js +62 -0
- package/.next/standalone/node_modules/next/dist/lib/framework/boundary-constants.js +36 -0
- package/.next/standalone/node_modules/next/dist/lib/fs/rename.js +87 -0
- package/.next/standalone/node_modules/next/dist/lib/fs/write-atomic.js +28 -0
- package/.next/standalone/node_modules/next/dist/lib/generate-interception-routes-rewrites.js +52 -0
- package/.next/standalone/node_modules/next/dist/lib/get-files-in-dir.js +33 -0
- package/.next/standalone/node_modules/next/dist/lib/get-network-host.js +44 -0
- package/.next/standalone/node_modules/next/dist/lib/get-package-version.js +118 -0
- package/.next/standalone/node_modules/next/dist/lib/get-project-dir.js +51 -0
- package/.next/standalone/node_modules/next/dist/lib/has-necessary-dependencies.js +49 -0
- package/.next/standalone/node_modules/next/dist/lib/helpers/get-cache-directory.js +66 -0
- package/.next/standalone/node_modules/next/dist/lib/helpers/get-npx-command.js +29 -0
- package/.next/standalone/node_modules/next/dist/lib/helpers/get-online.js +50 -0
- package/.next/standalone/node_modules/next/dist/lib/helpers/get-pkg-manager.js +63 -0
- package/.next/standalone/node_modules/next/dist/lib/helpers/get-registry.js +45 -0
- package/.next/standalone/node_modules/next/dist/lib/helpers/get-reserved-port.js +116 -0
- package/.next/standalone/node_modules/next/dist/lib/helpers/install.js +83 -0
- package/.next/standalone/node_modules/next/dist/lib/import-next-warning.js +50 -0
- package/.next/standalone/node_modules/next/dist/lib/inline-static-env.js +112 -0
- package/.next/standalone/node_modules/next/dist/lib/install-dependencies.js +40 -0
- package/.next/standalone/node_modules/next/dist/lib/interop-default.js +16 -0
- package/.next/standalone/node_modules/next/dist/lib/is-api-route.js +15 -0
- package/.next/standalone/node_modules/next/dist/lib/is-app-page-route.js +15 -0
- package/.next/standalone/node_modules/next/dist/lib/is-app-route-route.js +15 -0
- package/.next/standalone/node_modules/next/dist/lib/is-edge-runtime.js +16 -0
- package/.next/standalone/node_modules/next/dist/lib/is-error.js +78 -0
- package/.next/standalone/node_modules/next/dist/lib/is-interception-route-rewrite.js +18 -0
- package/.next/standalone/node_modules/next/dist/lib/is-internal-component.js +36 -0
- package/.next/standalone/node_modules/next/dist/lib/is-serializable-props.js +106 -0
- package/.next/standalone/node_modules/next/dist/lib/known-edge-safe-packages.json +1 -0
- package/.next/standalone/node_modules/next/dist/lib/load-custom-routes.js +594 -0
- package/.next/standalone/node_modules/next/dist/lib/memory/gc-observer.js +53 -0
- package/.next/standalone/node_modules/next/dist/lib/memory/shutdown.js +29 -0
- package/.next/standalone/node_modules/next/dist/lib/memory/startup.js +47 -0
- package/.next/standalone/node_modules/next/dist/lib/memory/trace.js +109 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/constants.js +40 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/default-metadata.js +82 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/generate/icon-mark.js +22 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/generate/utils.js +52 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/get-metadata-route.js +123 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/is-metadata-route.js +221 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/metadata-context.js +18 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/metadata.js +1686 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/resolve-metadata.js +884 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js +232 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js +56 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js +199 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-title.js +40 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-url.js +135 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/alternative-urls-types.js +7 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/extra-types.js +9 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/icons.js +6 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/manifest-types.js +6 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/metadata-interface.js +18 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/metadata-types.js +10 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/opengraph-types.js +6 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/resolvers.js +6 -0
- package/.next/standalone/node_modules/next/dist/lib/metadata/types/twitter-types.js +7 -0
- package/.next/standalone/node_modules/next/dist/lib/mime-type.js +20 -0
- package/.next/standalone/node_modules/next/dist/lib/mkcert.js +204 -0
- package/.next/standalone/node_modules/next/dist/lib/multi-file-writer.js +75 -0
- package/.next/standalone/node_modules/next/dist/lib/needs-experimental-react.js +16 -0
- package/.next/standalone/node_modules/next/dist/lib/non-nullable.js +15 -0
- package/.next/standalone/node_modules/next/dist/lib/normalize-path.js +21 -0
- package/.next/standalone/node_modules/next/dist/lib/oxford-comma-list.js +15 -0
- package/.next/standalone/node_modules/next/dist/lib/page-types.js +18 -0
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +185 -0
- package/.next/standalone/node_modules/next/dist/lib/pick.js +19 -0
- package/.next/standalone/node_modules/next/dist/lib/picocolors.js +177 -0
- package/.next/standalone/node_modules/next/dist/lib/pretty-bytes.js +74 -0
- package/.next/standalone/node_modules/next/dist/lib/realpath.js +20 -0
- package/.next/standalone/node_modules/next/dist/lib/recursive-copy.js +76 -0
- package/.next/standalone/node_modules/next/dist/lib/recursive-delete.js +137 -0
- package/.next/standalone/node_modules/next/dist/lib/recursive-readdir.js +124 -0
- package/.next/standalone/node_modules/next/dist/lib/redirect-status.js +46 -0
- package/.next/standalone/node_modules/next/dist/lib/require-instrumentation-client.js +26 -0
- package/.next/standalone/node_modules/next/dist/lib/resolve-build-paths.js +154 -0
- package/.next/standalone/node_modules/next/dist/lib/resolve-from.js +65 -0
- package/.next/standalone/node_modules/next/dist/lib/route-pattern-normalizer.js +107 -0
- package/.next/standalone/node_modules/next/dist/lib/scheduler.js +64 -0
- package/.next/standalone/node_modules/next/dist/lib/semver-noop.js +18 -0
- package/.next/standalone/node_modules/next/dist/lib/server-external-packages.jsonc +103 -0
- package/.next/standalone/node_modules/next/dist/lib/setup-exception-listeners.js +11 -0
- package/.next/standalone/node_modules/next/dist/lib/static-env.js +92 -0
- package/.next/standalone/node_modules/next/dist/lib/try-to-parse-path.js +67 -0
- package/.next/standalone/node_modules/next/dist/lib/turbopack-warning.js +185 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/diagnosticFormatter.js +243 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +153 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/getTypeScriptIntent.js +52 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/missingDependencyError.js +27 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/runTypeCheck.js +149 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/type-paths.js +51 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +75 -0
- package/.next/standalone/node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js +395 -0
- package/.next/standalone/node_modules/next/dist/lib/url.js +75 -0
- package/.next/standalone/node_modules/next/dist/lib/verify-partytown-setup.js +115 -0
- package/.next/standalone/node_modules/next/dist/lib/verify-root-layout.js +165 -0
- package/.next/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +228 -0
- package/.next/standalone/node_modules/next/dist/lib/wait.js +19 -0
- package/.next/standalone/node_modules/next/dist/lib/with-promise-cache.js +24 -0
- package/.next/standalone/node_modules/next/dist/lib/worker.js +234 -0
- package/.next/standalone/node_modules/next/dist/server/ReactDOMServerPages.js +16 -0
- package/.next/standalone/node_modules/next/dist/server/accept-header.js +132 -0
- package/.next/standalone/node_modules/next/dist/server/after/after-context.js +140 -0
- package/.next/standalone/node_modules/next/dist/server/after/after.js +26 -0
- package/.next/standalone/node_modules/next/dist/server/after/awaiter.js +74 -0
- package/.next/standalone/node_modules/next/dist/server/after/builtin-request-context.js +38 -0
- package/.next/standalone/node_modules/next/dist/server/after/index.js +21 -0
- package/.next/standalone/node_modules/next/dist/server/after/run-with-after.js +35 -0
- package/.next/standalone/node_modules/next/dist/server/api-utils/get-cookie-parser.js +22 -0
- package/.next/standalone/node_modules/next/dist/server/api-utils/index.js +201 -0
- package/.next/standalone/node_modules/next/dist/server/api-utils/node/api-resolver.js +395 -0
- package/.next/standalone/node_modules/next/dist/server/api-utils/node/parse-body.js +79 -0
- package/.next/standalone/node_modules/next/dist/server/api-utils/node/try-get-preview-data.js +86 -0
- package/.next/standalone/node_modules/next/dist/server/api-utils/web.js +17 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/action-async-storage-instance.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/action-async-storage.external.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/action-handler.js +1020 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/after-task-async-storage-instance.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/after-task-async-storage.external.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +167 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/app-render-render-utils.js +76 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/app-render-scheduling.js +188 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +4469 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +76 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/cache-signal.js +181 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/collect-segment-data.js +600 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/console-async-storage-instance.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/console-async-storage.external.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/create-component-styles-and-scripts.js +33 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/create-component-tree.js +840 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/create-error-handler.js +189 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +102 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/csrf-protection.js +86 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/debug-channel-server.js +30 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/debug-channel-server.web.js +71 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +1144 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/encryption-utils-server.js +114 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/encryption-utils.js +93 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/encryption.js +259 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/entry-base.js +256 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/flight-render-result.js +28 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/get-asset-query-string.js +29 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/get-css-inlined-link-tags.js +49 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/get-layer-assets.js +65 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/get-preloadable-fonts.js +39 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/get-script-nonce-from-header.js +44 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js +25 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/has-loading-component-in-tree.js +19 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-impl.js +103 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +18 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +181 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples-client.js +128 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +432 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js +33 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-validation.js +713 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/stream-utils.js +96 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/interop-default.js +17 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/make-get-server-inserted-html.js +92 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/manifests-singleton.js +264 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js +28 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/module-loading/track-dynamic-import.js +57 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js +32 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js +66 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/parse-and-validate-flight-router-state.js +49 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/postponed-state.js +157 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/prospective-render-utils.js +74 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/react-large-shell-error.js +17 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/react-server.node.js +39 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/render-css-resource.js +52 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/required-scripts.js +76 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/rsc/postpone.js +18 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/rsc/preloads.js +74 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/rsc/taint.js +79 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/segment-explorer-path.js +128 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/server-inserted-html.js +77 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/staged-rendering.js +343 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/stale-time.js +111 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/stream-ops.js +106 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/stream-ops.web.js +163 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/strip-flight-headers.js +18 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/types.js +65 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/use-flight-response.js +214 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/vary-params.js +336 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +232 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/work-async-storage-instance.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/work-async-storage.external.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +280 -0
- package/.next/standalone/node_modules/next/dist/server/async-storage/draft-mode-provider.js +62 -0
- package/.next/standalone/node_modules/next/dist/server/async-storage/request-store.js +144 -0
- package/.next/standalone/node_modules/next/dist/server/async-storage/with-store.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/async-storage/work-store.js +91 -0
- package/.next/standalone/node_modules/next/dist/server/base-http/helpers.js +36 -0
- package/.next/standalone/node_modules/next/dist/server/base-http/index.js +54 -0
- package/.next/standalone/node_modules/next/dist/server/base-http/node.js +147 -0
- package/.next/standalone/node_modules/next/dist/server/base-http/web.js +124 -0
- package/.next/standalone/node_modules/next/dist/server/base-server.js +1874 -0
- package/.next/standalone/node_modules/next/dist/server/body-streams.js +114 -0
- package/.next/standalone/node_modules/next/dist/server/cache-dir.js +26 -0
- package/.next/standalone/node_modules/next/dist/server/capsize-font-metrics.json +181516 -0
- package/.next/standalone/node_modules/next/dist/server/ci-info.js +41 -0
- package/.next/standalone/node_modules/next/dist/server/client-component-renderer-logger.js +70 -0
- package/.next/standalone/node_modules/next/dist/server/config-schema.js +718 -0
- package/.next/standalone/node_modules/next/dist/server/config-shared.js +369 -0
- package/.next/standalone/node_modules/next/dist/server/config-utils.js +185 -0
- package/.next/standalone/node_modules/next/dist/server/config.js +1545 -0
- package/.next/standalone/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js +96 -0
- package/.next/standalone/node_modules/next/dist/server/crypto-utils.js +70 -0
- package/.next/standalone/node_modules/next/dist/server/dev/browser-logs/file-logger.js +186 -0
- package/.next/standalone/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +558 -0
- package/.next/standalone/node_modules/next/dist/server/dev/browser-logs/source-map.js +222 -0
- package/.next/standalone/node_modules/next/dist/server/dev/debug-channel.js +87 -0
- package/.next/standalone/node_modules/next/dist/server/dev/dev-indicator-server-state.js +15 -0
- package/.next/standalone/node_modules/next/dist/server/dev/get-source-map-from-file.js +100 -0
- package/.next/standalone/node_modules/next/dist/server/dev/hot-middleware.js +274 -0
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-rspack.js +171 -0
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-shared-utils.js +56 -0
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1475 -0
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-types.js +58 -0
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1386 -0
- package/.next/standalone/node_modules/next/dist/server/dev/log-requests.js +149 -0
- package/.next/standalone/node_modules/next/dist/server/dev/messages.js +74 -0
- package/.next/standalone/node_modules/next/dist/server/dev/middleware-turbopack.js +403 -0
- package/.next/standalone/node_modules/next/dist/server/dev/middleware-webpack.js +483 -0
- package/.next/standalone/node_modules/next/dist/server/dev/node-stack-frames.js +72 -0
- package/.next/standalone/node_modules/next/dist/server/dev/on-demand-entry-handler.js +773 -0
- package/.next/standalone/node_modules/next/dist/server/dev/parse-version-info.js +108 -0
- package/.next/standalone/node_modules/next/dist/server/dev/require-cache.js +79 -0
- package/.next/standalone/node_modules/next/dist/server/dev/serialized-errors.js +67 -0
- package/.next/standalone/node_modules/next/dist/server/dev/server-action-logger.js +37 -0
- package/.next/standalone/node_modules/next/dist/server/dev/static-paths-worker.js +104 -0
- package/.next/standalone/node_modules/next/dist/server/dev/turbopack-utils.js +687 -0
- package/.next/standalone/node_modules/next/dist/server/dynamic-rendering-utils.js +108 -0
- package/.next/standalone/node_modules/next/dist/server/font-utils.js +43 -0
- package/.next/standalone/node_modules/next/dist/server/get-app-route-from-entrypoint.js +30 -0
- package/.next/standalone/node_modules/next/dist/server/get-page-files.js +23 -0
- package/.next/standalone/node_modules/next/dist/server/get-route-from-entrypoint.js +35 -0
- package/.next/standalone/node_modules/next/dist/server/htmlescape.js +37 -0
- package/.next/standalone/node_modules/next/dist/server/image-optimizer.js +1220 -0
- package/.next/standalone/node_modules/next/dist/server/instrumentation/types.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/instrumentation/utils.js +21 -0
- package/.next/standalone/node_modules/next/dist/server/internal-utils.js +39 -0
- package/.next/standalone/node_modules/next/dist/server/is-private-ip.js +36 -0
- package/.next/standalone/node_modules/next/dist/server/lib/app-dir-module.js +59 -0
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +132 -0
- package/.next/standalone/node_modules/next/dist/server/lib/async-callback-set.js +29 -0
- package/.next/standalone/node_modules/next/dist/server/lib/cache-control.js +22 -0
- package/.next/standalone/node_modules/next/dist/server/lib/cache-handlers/default.external.js +18 -0
- package/.next/standalone/node_modules/next/dist/server/lib/cache-handlers/default.js +160 -0
- package/.next/standalone/node_modules/next/dist/server/lib/cache-handlers/types.js +8 -0
- package/.next/standalone/node_modules/next/dist/server/lib/chrome-devtools-workspace.js +116 -0
- package/.next/standalone/node_modules/next/dist/server/lib/clone-response.js +77 -0
- package/.next/standalone/node_modules/next/dist/server/lib/cpu-profile.js +59 -0
- package/.next/standalone/node_modules/next/dist/server/lib/decode-query-path-parameter.js +26 -0
- package/.next/standalone/node_modules/next/dist/server/lib/dedupe-fetch.js +163 -0
- package/.next/standalone/node_modules/next/dist/server/lib/dev-bundler-service.js +95 -0
- package/.next/standalone/node_modules/next/dist/server/lib/disk-lru-cache.external.js +57 -0
- package/.next/standalone/node_modules/next/dist/server/lib/etag.js +56 -0
- package/.next/standalone/node_modules/next/dist/server/lib/experimental/create-env-definitions.js +48 -0
- package/.next/standalone/node_modules/next/dist/server/lib/experimental/ppr.js +47 -0
- package/.next/standalone/node_modules/next/dist/server/lib/find-page-file.js +147 -0
- package/.next/standalone/node_modules/next/dist/server/lib/fix-mojibake.js +25 -0
- package/.next/standalone/node_modules/next/dist/server/lib/format-hostname.js +16 -0
- package/.next/standalone/node_modules/next/dist/server/lib/i18n-provider.js +129 -0
- package/.next/standalone/node_modules/next/dist/server/lib/implicit-tags.js +77 -0
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +335 -0
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +501 -0
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +57 -0
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +73 -0
- package/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js +55 -0
- package/.next/standalone/node_modules/next/dist/server/lib/install-code-frame.js +22 -0
- package/.next/standalone/node_modules/next/dist/server/lib/is-ipv6.js +41 -0
- package/.next/standalone/node_modules/next/dist/server/lib/lazy-result.js +46 -0
- package/.next/standalone/node_modules/next/dist/server/lib/lru-cache.js +191 -0
- package/.next/standalone/node_modules/next/dist/server/lib/match-next-data-pathname.js +18 -0
- package/.next/standalone/node_modules/next/dist/server/lib/mock-request.js +416 -0
- package/.next/standalone/node_modules/next/dist/server/lib/module-loader/module-loader.js +8 -0
- package/.next/standalone/node_modules/next/dist/server/lib/module-loader/node-module-loader.js +25 -0
- package/.next/standalone/node_modules/next/dist/server/lib/module-loader/route-module-loader.js +26 -0
- package/.next/standalone/node_modules/next/dist/server/lib/node-fs-methods.js +28 -0
- package/.next/standalone/node_modules/next/dist/server/lib/parse-stack.js +46 -0
- package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +978 -0
- package/.next/standalone/node_modules/next/dist/server/lib/patch-set-header.js +38 -0
- package/.next/standalone/node_modules/next/dist/server/lib/postponed-request-body.js +64 -0
- package/.next/standalone/node_modules/next/dist/server/lib/render-server.js +155 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-server.js +696 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +110 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/build-data-route.js +48 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.js +50 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/cache-life-type-utils.js +211 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/decode-path-params.js +42 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/filesystem.js +591 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +89 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js +96 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/is-postpone.js +16 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/proxy-request.js +118 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +629 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +286 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/router-server-context.js +26 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/typegen.js +858 -0
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/types.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/lib/server-action-request-meta.js +53 -0
- package/.next/standalone/node_modules/next/dist/server/lib/server-ipc/utils.js +81 -0
- package/.next/standalone/node_modules/next/dist/server/lib/source-maps.js +196 -0
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +494 -0
- package/.next/standalone/node_modules/next/dist/server/lib/streaming-metadata.js +38 -0
- package/.next/standalone/node_modules/next/dist/server/lib/to-route.js +37 -0
- package/.next/standalone/node_modules/next/dist/server/lib/trace/constants.js +203 -0
- package/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +280 -0
- package/.next/standalone/node_modules/next/dist/server/lib/trace/utils.js +16 -0
- package/.next/standalone/node_modules/next/dist/server/lib/types.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/lib/utils.js +278 -0
- package/.next/standalone/node_modules/next/dist/server/lib/worker-utils.js +36 -0
- package/.next/standalone/node_modules/next/dist/server/load-components.js +179 -0
- package/.next/standalone/node_modules/next/dist/server/load-default-error-components.js +41 -0
- package/.next/standalone/node_modules/next/dist/server/load-manifest.external.js +117 -0
- package/.next/standalone/node_modules/next/dist/server/match-bundle.js +25 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/get-mcp-middleware.js +49 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/get-or-create-mcp-server.js +41 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/mcp-telemetry-tracker.js +82 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/get-errors.js +114 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/get-logs.js +67 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/get-page-metadata.js +188 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/get-project-metadata.js +59 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/get-routes.js +136 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/get-server-action-by-id.js +121 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/next-instance-error-state.js +31 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/utils/browser-communication.js +90 -0
- package/.next/standalone/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +137 -0
- package/.next/standalone/node_modules/next/dist/server/next-server.js +1429 -0
- package/.next/standalone/node_modules/next/dist/server/next-typescript.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/next.js +455 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-baseline.js +25 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +301 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/console-exit.js +49 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/console-file.js +56 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/date.js +52 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/error-inspect.js +8 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +577 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/global-behaviors.js +33 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/io-utils.js +195 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/node-crypto.js +103 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +91 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/random.js +28 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js +508 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment-extensions/web-crypto.js +45 -0
- package/.next/standalone/node_modules/next/dist/server/node-environment.js +19 -0
- package/.next/standalone/node_modules/next/dist/server/node-polyfill-crypto.js +21 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/absolute-filename-normalizer.js +33 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-bundle-path-normalizer.js +54 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-filename-normalizer.js +22 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-page-normalizer.js +40 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-pathname-normalizer.js +55 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/app/index.js +42 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/index.js +44 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-bundle-path-normalizer.js +55 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-filename-normalizer.js +22 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-page-normalizer.js +19 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-pathname-normalizer.js +19 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/locale-route-normalizer.js +26 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/normalizer.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/normalizers.js +23 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/prefixing-normalizer.js +26 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/request/base-path.js +25 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/request/next-data.js +38 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/request/pathname-normalizer.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/request/prefix.js +39 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/request/rsc.js +19 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.js +33 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/request/suffix.js +27 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/underscore-normalizer.js +17 -0
- package/.next/standalone/node_modules/next/dist/server/normalizers/wrap-normalizer-fn.js +17 -0
- package/.next/standalone/node_modules/next/dist/server/og/image-response.js +53 -0
- package/.next/standalone/node_modules/next/dist/server/patch-error-inspect.js +453 -0
- package/.next/standalone/node_modules/next/dist/server/pipe-readable.js +140 -0
- package/.next/standalone/node_modules/next/dist/server/post-process.js +39 -0
- package/.next/standalone/node_modules/next/dist/server/render-result.js +204 -0
- package/.next/standalone/node_modules/next/dist/server/render.js +1140 -0
- package/.next/standalone/node_modules/next/dist/server/request/connection.js +133 -0
- package/.next/standalone/node_modules/next/dist/server/request/cookies.js +235 -0
- package/.next/standalone/node_modules/next/dist/server/request/draft-mode.js +230 -0
- package/.next/standalone/node_modules/next/dist/server/request/fallback-params.js +69 -0
- package/.next/standalone/node_modules/next/dist/server/request/headers.js +229 -0
- package/.next/standalone/node_modules/next/dist/server/request/params.js +527 -0
- package/.next/standalone/node_modules/next/dist/server/request/pathname.js +119 -0
- package/.next/standalone/node_modules/next/dist/server/request/root-params.js +194 -0
- package/.next/standalone/node_modules/next/dist/server/request/search-params.js +526 -0
- package/.next/standalone/node_modules/next/dist/server/request/utils.js +51 -0
- package/.next/standalone/node_modules/next/dist/server/request-meta.js +55 -0
- package/.next/standalone/node_modules/next/dist/server/require-hook.js +82 -0
- package/.next/standalone/node_modules/next/dist/server/require.js +109 -0
- package/.next/standalone/node_modules/next/dist/server/response-cache/index.js +311 -0
- package/.next/standalone/node_modules/next/dist/server/response-cache/types.js +41 -0
- package/.next/standalone/node_modules/next/dist/server/response-cache/utils.js +104 -0
- package/.next/standalone/node_modules/next/dist/server/response-cache/web.js +101 -0
- package/.next/standalone/node_modules/next/dist/server/resume-data-cache/cache-store.js +96 -0
- package/.next/standalone/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +124 -0
- package/.next/standalone/node_modules/next/dist/server/revalidation-utils.js +157 -0
- package/.next/standalone/node_modules/next/dist/server/route-definitions/app-page-route-definition.js +16 -0
- package/.next/standalone/node_modules/next/dist/server/route-definitions/app-route-route-definition.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-definitions/locale-route-definition.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-definitions/pages-api-route-definition.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-definitions/pages-route-definition.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-definitions/route-definition.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-kind.js +32 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-managers/default-route-matcher-manager.js +239 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-managers/dev-route-matcher-manager.js +120 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +55 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/app-route-route-matcher-provider.js +43 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +91 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-route-route-matcher-provider.js +112 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-api-route-matcher-provider.js +77 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-route-matcher-provider.js +77 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/file-cache-route-matcher-provider.js +28 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/batched-file-reader.js +106 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/default-file-reader.js +42 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/file-reader.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/cached-route-matcher-provider.js +30 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/manifest-loader.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/node-manifest-loader.js +34 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/server-manifest-loader.js +20 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/manifest-route-matcher-provider.js +21 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/pages-api-route-matcher-provider.js +55 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/pages-route-matcher-provider.js +64 -0
- package/.next/standalone/node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matchers/app-page-route-matcher.js +18 -0
- package/.next/standalone/node_modules/next/dist/server/route-matchers/app-route-route-matcher.js +15 -0
- package/.next/standalone/node_modules/next/dist/server/route-matchers/locale-route-matcher.js +68 -0
- package/.next/standalone/node_modules/next/dist/server/route-matchers/pages-api-route-matcher.js +30 -0
- package/.next/standalone/node_modules/next/dist/server/route-matchers/pages-route-matcher.js +30 -0
- package/.next/standalone/node_modules/next/dist/server/route-matchers/route-matcher.js +54 -0
- package/.next/standalone/node_modules/next/dist/server/route-matches/app-page-route-match.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matches/app-route-route-match.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matches/locale-route-match.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matches/pages-api-route-match.js +16 -0
- package/.next/standalone/node_modules/next/dist/server/route-matches/pages-route-match.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-matches/route-match.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +51 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/module.compiled.js +36 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/module.js +162 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/module.render.js +24 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/normalize-request-url.js +25 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.js +87 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/image-config-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/router-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.js +140 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-server.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-static.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.js +125 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom-server.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/auto-implement-methods.js +85 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/clean-url.js +24 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/get-pathname-from-absolute-path.js +29 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/is-static-gen-enabled.js +15 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/parsed-url-query-to-params.js +20 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/module.compiled.js +36 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/module.js +914 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/app-route/shared-modules.js +56 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/checks.js +45 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/builtin/_error.js +100 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/module.compiled.js +20 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/module.js +92 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/module.render.js +24 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +545 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/app-router-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.js +102 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/head-manager-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/hooks-client-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/html-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/image-config-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/router-context.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/server-inserted-html.js +4 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js +20 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages-api/module.js +58 -0
- package/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +650 -0
- package/.next/standalone/node_modules/next/dist/server/runtime-reacts.external.js +46 -0
- package/.next/standalone/node_modules/next/dist/server/send-payload.js +88 -0
- package/.next/standalone/node_modules/next/dist/server/send-response.js +70 -0
- package/.next/standalone/node_modules/next/dist/server/serve-static.js +66 -0
- package/.next/standalone/node_modules/next/dist/server/server-route-utils.js +30 -0
- package/.next/standalone/node_modules/next/dist/server/server-utils.js +323 -0
- package/.next/standalone/node_modules/next/dist/server/setup-http-agent-env.js +31 -0
- package/.next/standalone/node_modules/next/dist/server/stream-utils/encoded-tags.js +122 -0
- package/.next/standalone/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +918 -0
- package/.next/standalone/node_modules/next/dist/server/stream-utils/uint8array-helpers.js +74 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/constant.js +98 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/index.js +199 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/client-boundary.js +97 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/config.js +512 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/entry.js +149 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/error.js +38 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/metadata.js +234 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/server-boundary.js +115 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/rules/server.js +79 -0
- package/.next/standalone/node_modules/next/dist/server/typescript/utils.js +212 -0
- package/.next/standalone/node_modules/next/dist/server/use-cache/cache-life.js +163 -0
- package/.next/standalone/node_modules/next/dist/server/use-cache/cache-tag.js +52 -0
- package/.next/standalone/node_modules/next/dist/server/use-cache/constants.js +28 -0
- package/.next/standalone/node_modules/next/dist/server/use-cache/handlers.js +121 -0
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-errors.js +36 -0
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1588 -0
- package/.next/standalone/node_modules/next/dist/server/utils.js +73 -0
- package/.next/standalone/node_modules/next/dist/server/web/adapter.js +392 -0
- package/.next/standalone/node_modules/next/dist/server/web/edge-route-module-wrapper.js +123 -0
- package/.next/standalone/node_modules/next/dist/server/web/error.js +54 -0
- package/.next/standalone/node_modules/next/dist/server/web/exports/index.js +56 -0
- package/.next/standalone/node_modules/next/dist/server/web/get-edge-preview-props.js +23 -0
- package/.next/standalone/node_modules/next/dist/server/web/globals.js +128 -0
- package/.next/standalone/node_modules/next/dist/server/web/http.js +39 -0
- package/.next/standalone/node_modules/next/dist/server/web/internal-edge-wait-until.js +64 -0
- package/.next/standalone/node_modules/next/dist/server/web/next-url.js +199 -0
- package/.next/standalone/node_modules/next/dist/server/web/sandbox/context.js +462 -0
- package/.next/standalone/node_modules/next/dist/server/web/sandbox/fetch-inline-assets.js +35 -0
- package/.next/standalone/node_modules/next/dist/server/web/sandbox/index.js +28 -0
- package/.next/standalone/node_modules/next/dist/server/web/sandbox/resource-managers.js +88 -0
- package/.next/standalone/node_modules/next/dist/server/web/sandbox/sandbox.js +137 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/headers.js +192 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js +142 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js +30 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js +211 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/cookies.js +29 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/fetch-event.js +98 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/image-response.js +22 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/request.js +99 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/response.js +136 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/revalidate.js +214 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/unstable-cache.js +289 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/unstable-no-store.js +51 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/url-pattern.js +14 -0
- package/.next/standalone/node_modules/next/dist/server/web/spec-extension/user-agent.js +46 -0
- package/.next/standalone/node_modules/next/dist/server/web/types.js +6 -0
- package/.next/standalone/node_modules/next/dist/server/web/utils.js +151 -0
- package/.next/standalone/node_modules/next/dist/server/web/web-on-close.js +87 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/action-revalidation-kind.js +31 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js +50 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/app-router-types.js +46 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/constants.js +448 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/deep-freeze.js +30 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/deployment-id.js +63 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/dset.js +34 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/encode-uri-path.js +15 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/entry-constants.js +36 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/error-source.js +36 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +39 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/errors/code-frame.js +20 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/errors/constants.js +19 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/errors/empty-generate-static-params-error.js +24 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/errors/hard-deprecated-config-error.js +20 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/escape-regexp.js +22 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/get-hostname.js +23 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/hash.js +42 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js +18 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/head.js +163 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js +60 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/html-context.shared-runtime.js +40 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js +25 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/i18n/get-locale-redirect.js +59 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js +54 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/image-blur-svg.js +22 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js +19 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/image-config.js +77 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/invariant-error.js +18 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/is-plain-object.js +42 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/is-thenable.js +20 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/isomorphic/path.js +14 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js +37 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/loadable-context.shared-runtime.js +19 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/loadable.shared-runtime.js +246 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/match-local-pattern.js +46 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/match-remote-pattern.js +63 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/modern-browserslist-target.js +15 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/no-fallback-error.external.js +18 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/normalized-asset-prefix.js +28 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/absolute-path-to-page.js +26 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js +18 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js +18 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/get-page-paths.js +40 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/normalize-data-path.js +23 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/normalize-page-path.js +26 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js +19 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/page-path/remove-page-path-tail.js +20 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/promise-with-resolvers.js +26 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/adapters.js +136 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/routes/app.js +122 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/add-locale.js +28 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js +20 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js +20 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +62 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/as-path-to-search-params.js +17 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js +24 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js +16 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js +27 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/format-url.js +111 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +174 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js +52 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-route-from-asset-path.js +25 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-segment-param.js +90 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/html-bots.js +17 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/index.js +30 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js +33 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/interception-routes.js +108 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/is-bot.js +57 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js +26 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.js +31 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js +30 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-path.js +33 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +43 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-url.js +38 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js +20 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/path-match.js +49 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js +292 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/querystring.js +79 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/relativize-url.js +40 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js +39 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js +21 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js +116 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/route-match-utils.js +113 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/route-matcher.js +45 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/route-regex.js +256 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js +244 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/router-context.shared-runtime.js +18 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js +99 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +32 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/segment.js +102 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.js +35 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/server-reference-info.js +56 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/side-effect.js +63 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/size-limit.js +40 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/turbopack/internal-error.js +53 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/utils/reflect-utils.js +69 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/utils/warn-once.js +22 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/utils.js +207 -0
- package/.next/standalone/node_modules/next/dist/shared/lib/zod.js +101 -0
- package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +89 -0
- package/.next/standalone/node_modules/next/dist/telemetry/detached-flush.js +56 -0
- package/.next/standalone/node_modules/next/dist/telemetry/events/build.js +174 -0
- package/.next/standalone/node_modules/next/dist/telemetry/events/index.js +41 -0
- package/.next/standalone/node_modules/next/dist/telemetry/events/plugins.js +51 -0
- package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +55 -0
- package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +66 -0
- package/.next/standalone/node_modules/next/dist/telemetry/flush-telemetry.js +19 -0
- package/.next/standalone/node_modules/next/dist/telemetry/post-telemetry-payload.js +48 -0
- package/.next/standalone/node_modules/next/dist/telemetry/project-id.js +48 -0
- package/.next/standalone/node_modules/next/dist/telemetry/storage.js +301 -0
- package/.next/standalone/node_modules/next/dist/trace/index.js +58 -0
- package/.next/standalone/node_modules/next/dist/trace/report/index.js +37 -0
- package/.next/standalone/node_modules/next/dist/trace/report/to-json-build.js +40 -0
- package/.next/standalone/node_modules/next/dist/trace/report/to-json.js +165 -0
- package/.next/standalone/node_modules/next/dist/trace/report/to-telemetry.js +36 -0
- package/.next/standalone/node_modules/next/dist/trace/shared.js +39 -0
- package/.next/standalone/node_modules/next/dist/trace/trace.js +211 -0
- package/.next/standalone/node_modules/next/package.json +378 -0
- package/.next/standalone/node_modules/react/cjs/react-compiler-runtime.production.js +16 -0
- package/.next/standalone/node_modules/react/cjs/react-jsx-dev-runtime.production.js +14 -0
- package/.next/standalone/node_modules/react/cjs/react-jsx-runtime.production.js +34 -0
- package/.next/standalone/node_modules/react/cjs/react.development.js +1284 -0
- package/.next/standalone/node_modules/react/cjs/react.production.js +542 -0
- package/.next/standalone/node_modules/react/compiler-runtime.js +14 -0
- package/.next/standalone/node_modules/react/index.js +7 -0
- package/.next/standalone/node_modules/react/jsx-dev-runtime.js +7 -0
- package/.next/standalone/node_modules/react/jsx-runtime.js +7 -0
- package/.next/standalone/node_modules/react/package.json +51 -0
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +6603 -0
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +6692 -0
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +7410 -0
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +7512 -0
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +7707 -0
- package/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +210 -0
- package/.next/standalone/node_modules/react-dom/index.js +38 -0
- package/.next/standalone/node_modules/react-dom/package.json +117 -0
- package/.next/standalone/node_modules/react-dom/server.browser.js +16 -0
- package/.next/standalone/node_modules/react-dom/server.edge.js +17 -0
- package/.next/standalone/node_modules/react-dom/server.node.js +18 -0
- package/.next/standalone/node_modules/react-dom/static.node.js +14 -0
- package/.next/standalone/node_modules/sharp/lib/channel.js +177 -0
- package/.next/standalone/node_modules/sharp/lib/colour.js +195 -0
- package/.next/standalone/node_modules/sharp/lib/composite.js +212 -0
- package/.next/standalone/node_modules/sharp/lib/constructor.js +499 -0
- package/.next/standalone/node_modules/sharp/lib/index.js +16 -0
- package/.next/standalone/node_modules/sharp/lib/input.js +809 -0
- package/.next/standalone/node_modules/sharp/lib/is.js +143 -0
- package/.next/standalone/node_modules/sharp/lib/libvips.js +207 -0
- package/.next/standalone/node_modules/sharp/lib/operation.js +1016 -0
- package/.next/standalone/node_modules/sharp/lib/output.js +1666 -0
- package/.next/standalone/node_modules/sharp/lib/resize.js +595 -0
- package/.next/standalone/node_modules/sharp/lib/sharp.js +121 -0
- package/.next/standalone/node_modules/sharp/lib/utility.js +291 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/comparator.js +143 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/range.js +557 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/classes/semver.js +333 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/cmp.js +54 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/coerce.js +62 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/compare.js +7 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/eq.js +5 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gt.js +5 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/gte.js +5 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lt.js +5 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/lte.js +5 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/neq.js +5 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/parse.js +18 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/functions/satisfies.js +12 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/constants.js +37 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/debug.js +11 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/identifiers.js +29 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/lrucache.js +42 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/parse-options.js +17 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/internal/re.js +223 -0
- package/.next/standalone/node_modules/sharp/node_modules/semver/package.json +78 -0
- package/.next/standalone/node_modules/sharp/package.json +202 -0
- package/.next/standalone/node_modules/styled-jsx/dist/index/index.js +499 -0
- package/.next/standalone/node_modules/styled-jsx/index.js +1 -0
- package/.next/standalone/node_modules/styled-jsx/package.json +132 -0
- package/.next/standalone/node_modules/styled-jsx/style.js +1 -0
- package/.next/standalone/package.json +94 -0
- package/.next/standalone/postcss.config.mjs +8 -0
- package/.next/standalone/proxy.ts +24 -0
- package/.next/standalone/public/exospheresmall-dark.png +0 -0
- package/.next/standalone/public/exospheresmall.png +0 -0
- package/.next/standalone/scripts/dev.ts +3 -0
- package/.next/standalone/scripts/install-telemetry.mjs +108 -0
- package/.next/standalone/scripts/launch.ts +67 -0
- package/.next/standalone/scripts/parse-script-args.ts +77 -0
- package/.next/standalone/scripts/postinstall.mjs +110 -0
- package/.next/standalone/scripts/preuninstall.mjs +131 -0
- package/.next/standalone/scripts/start.ts +3 -0
- package/.next/standalone/server.js +38 -0
- package/.next/standalone/src/hooks/builtin-policies.ts +1070 -0
- package/.next/standalone/src/hooks/custom-hooks-loader.ts +61 -0
- package/.next/standalone/src/hooks/custom-hooks-registry.ts +30 -0
- package/.next/standalone/src/hooks/handler.ts +175 -0
- package/.next/standalone/src/hooks/hook-activity-store.ts +344 -0
- package/.next/standalone/src/hooks/hook-logger.ts +133 -0
- package/.next/standalone/src/hooks/hook-telemetry.ts +43 -0
- package/.next/standalone/src/hooks/hooks-config.ts +121 -0
- package/.next/standalone/src/hooks/install-prompt.ts +357 -0
- package/.next/standalone/src/hooks/llm-client.ts +90 -0
- package/.next/standalone/src/hooks/loader-utils.ts +178 -0
- package/.next/standalone/src/hooks/manager.ts +619 -0
- package/.next/standalone/src/hooks/policy-evaluator.ts +171 -0
- package/.next/standalone/src/hooks/policy-helpers.ts +16 -0
- package/.next/standalone/src/hooks/policy-registry.ts +90 -0
- package/.next/standalone/src/hooks/policy-types.ts +77 -0
- package/.next/standalone/src/hooks/types.ts +54 -0
- package/.next/standalone/src/index.ts +19 -0
- package/.next/standalone/src/posthog-key.ts +5 -0
- package/.next/standalone/tailwind.config.ts +11 -0
- package/.next/standalone/tsconfig.json +42 -0
- package/.next/standalone/vitest.config.e2e.mts +21 -0
- package/.next/standalone/vitest.config.mts +20 -0
- package/LICENSE +42 -0
- package/README.md +247 -0
- package/bin/failproofai.mjs +94 -0
- package/lib/claude-config.ts +36 -0
- package/lib/client-telemetry.ts +37 -0
- package/lib/concurrency.ts +26 -0
- package/lib/date-filters.ts +123 -0
- package/lib/extract-subagent-ids.ts +21 -0
- package/lib/format-duration.ts +29 -0
- package/lib/log-entries.ts +460 -0
- package/lib/log-format.ts +56 -0
- package/lib/log-stats.ts +54 -0
- package/lib/logger.ts +70 -0
- package/lib/paths.ts +42 -0
- package/lib/projects.ts +181 -0
- package/lib/resolve-subagent-path.ts +36 -0
- package/lib/runtime-cache.ts +59 -0
- package/lib/telemetry-id.ts +97 -0
- package/lib/telemetry.ts +148 -0
- package/lib/url-filter-serializers.ts +111 -0
- package/lib/use-filter-state.ts +68 -0
- package/lib/use-url-params.ts +66 -0
- package/lib/utils/session-id.ts +4 -0
- package/lib/utils.ts +31 -0
- package/package.json +94 -0
- package/scripts/dev.ts +3 -0
- package/scripts/install-telemetry.mjs +108 -0
- package/scripts/launch.ts +67 -0
- package/scripts/parse-script-args.ts +77 -0
- package/scripts/postinstall.mjs +110 -0
- package/scripts/preuninstall.mjs +131 -0
- package/scripts/start.ts +3 -0
- package/src/hooks/builtin-policies.ts +1070 -0
- package/src/hooks/custom-hooks-loader.ts +61 -0
- package/src/hooks/custom-hooks-registry.ts +30 -0
- package/src/hooks/handler.ts +175 -0
- package/src/hooks/hook-activity-store.ts +344 -0
- package/src/hooks/hook-logger.ts +133 -0
- package/src/hooks/hook-telemetry.ts +43 -0
- package/src/hooks/hooks-config.ts +121 -0
- package/src/hooks/install-prompt.ts +357 -0
- package/src/hooks/llm-client.ts +90 -0
- package/src/hooks/loader-utils.ts +178 -0
- package/src/hooks/manager.ts +619 -0
- package/src/hooks/policy-evaluator.ts +171 -0
- package/src/hooks/policy-helpers.ts +16 -0
- package/src/hooks/policy-registry.ts +90 -0
- package/src/hooks/policy-types.ts +77 -0
- package/src/hooks/types.ts +54 -0
- package/src/index.ts +19 -0
- package/src/posthog-key.ts +5 -0
|
@@ -0,0 +1,1070 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in security policies for Claude Code hooks.
|
|
3
|
+
*/
|
|
4
|
+
import { resolve, join } from "node:path";
|
|
5
|
+
import { readFile, writeFile, stat, open } from "node:fs/promises";
|
|
6
|
+
import { execSync } from "node:child_process";
|
|
7
|
+
import { homedir } from "node:os";
|
|
8
|
+
import type { BuiltinPolicyDefinition, PolicyContext, PolicyResult, PolicyParamsSchema } from "./policy-types";
|
|
9
|
+
import { allow, deny, instruct } from "./policy-helpers";
|
|
10
|
+
import { registerPolicy } from "./policy-registry";
|
|
11
|
+
import { hookLogWarn } from "./hook-logger";
|
|
12
|
+
|
|
13
|
+
function isClaudeInternalPath(resolved: string): boolean {
|
|
14
|
+
const claudeDir = join(homedir(), ".claude");
|
|
15
|
+
return resolved === claudeDir || resolved.startsWith(claudeDir + "/");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function isClaudeSettingsFile(resolved: string): boolean {
|
|
19
|
+
return /[\\/]\.claude[\\/]settings(?:\.[^/\\]+)?\.json$/.test(resolved);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function getCommand(ctx: PolicyContext): string {
|
|
23
|
+
return (ctx.toolInput?.command as string) ?? "";
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function getFilePath(ctx: PolicyContext): string {
|
|
27
|
+
return (ctx.toolInput?.file_path as string) ?? "";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Parse a command string into argv tokens for safe pattern matching.
|
|
32
|
+
* Splits on whitespace and strips simple single/double quotes.
|
|
33
|
+
* Does not handle all shell syntax — sufficient for prefix-match allowlists.
|
|
34
|
+
*/
|
|
35
|
+
function parseArgvTokens(cmd: string): string[] {
|
|
36
|
+
return cmd.trim().split(/\s+/).map((t) => t.replace(/^['"]|['"]$/g, ""));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Shell operators that always act as command separators when whitespace-delimited.
|
|
40
|
+
const SHELL_OPERATORS = new Set(["&&", "||", "|", ";"]);
|
|
41
|
+
|
|
42
|
+
// Shell metacharacters that are unsafe when embedded inside a token. Any command
|
|
43
|
+
// whose argv contains one of these in a token is rejected before allowlist matching.
|
|
44
|
+
// This closes the bypass where operators are glued to a word (e.g. "nginx;evil" or
|
|
45
|
+
// "nginx&&evil") and would otherwise be invisible to the standalone-operator check.
|
|
46
|
+
// Note: | is intentionally excluded here because "foo|bar" is a valid grep/sed
|
|
47
|
+
// argument value; the standalone-operator check above already handles bare "|" tokens.
|
|
48
|
+
const SHELL_METACHAR_RE = /[;&<>`$()\\]/;
|
|
49
|
+
|
|
50
|
+
// -- Pre-compiled regex constants (hoisted to avoid per-call allocation) --
|
|
51
|
+
|
|
52
|
+
// sanitizeJwt
|
|
53
|
+
const JWT_RE = /eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/;
|
|
54
|
+
|
|
55
|
+
// sanitizeApiKeys
|
|
56
|
+
const API_KEY_PATTERNS: Array<[RegExp, string]> = [
|
|
57
|
+
[/sk-ant-[A-Za-z0-9\-_]{20,}/, "Anthropic API key"],
|
|
58
|
+
[/sk-proj-[A-Za-z0-9\-_]{20,}/, "OpenAI project API key"],
|
|
59
|
+
[/sk-[A-Za-z0-9]{20,}/, "OpenAI API key"],
|
|
60
|
+
[/ghp_[A-Za-z0-9]{36}/, "GitHub personal access token"],
|
|
61
|
+
[/github_pat_[A-Za-z0-9_]{82}/, "GitHub fine-grained token"],
|
|
62
|
+
[/AKIA[A-Z0-9]{16}/, "AWS access key ID"],
|
|
63
|
+
[/sk_live_[A-Za-z0-9]{24,}/, "Stripe live secret key"],
|
|
64
|
+
[/sk_test_[A-Za-z0-9]{24,}/, "Stripe test secret key"],
|
|
65
|
+
[/AIza[0-9A-Za-z\-_]{35}/, "Google API key"],
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
// sanitizeConnectionStrings
|
|
69
|
+
const CONNECTION_STRING_RE = /(?:postgresql|postgres|mysql|mongodb(?:\+srv)?|redis|amqps?|smtps?):\/\/[^@\s]+@/;
|
|
70
|
+
|
|
71
|
+
// sanitizePrivateKeyContent
|
|
72
|
+
const PRIVATE_KEY_RE = /-----BEGIN (?:[A-Z]+ )?PRIVATE KEY-----/;
|
|
73
|
+
|
|
74
|
+
// sanitizeBearerTokens
|
|
75
|
+
const BEARER_TOKEN_RE = /Authorization:\s*Bearer\s+[A-Za-z0-9\-._~+/]{20,}/i;
|
|
76
|
+
|
|
77
|
+
// warnDestructiveSql / warnSchemaAlteration
|
|
78
|
+
const SQL_TOOL_RE = /\b(?:psql|mysql|sqlite3|pgcli|clickhouse-client)\b/;
|
|
79
|
+
const DESTRUCTIVE_SQL_RE = /\b(?:DROP\s+(?:TABLE|DATABASE|SCHEMA)|TRUNCATE\b)/i;
|
|
80
|
+
const DELETE_NO_WHERE_RE = /\bDELETE\s+FROM\b/i;
|
|
81
|
+
const SQL_WHERE_RE = /\bWHERE\b/i;
|
|
82
|
+
const SCHEMA_ALTER_RE = /\bALTER\s+TABLE\b[\s\S]*\b(?:DROP\s+COLUMN|ADD\s+COLUMN|RENAME\s+(?:COLUMN|TO)|MODIFY\s+COLUMN)\b/i;
|
|
83
|
+
|
|
84
|
+
// warnPackagePublish
|
|
85
|
+
const PUBLISH_CMD_RE = /(?:npm\s+publish|bun\s+publish|pnpm\s+publish|yarn\s+npm\s+publish|twine\s+upload|poetry\s+publish|cargo\s+publish|gem\s+push)\b/;
|
|
86
|
+
|
|
87
|
+
// protectEnvVars
|
|
88
|
+
const ENV_PRINTENV_RE = /(?:^|\s|;|&&|\|\|)(?:env|printenv)(?:\s|$|;|&&|\|)/;
|
|
89
|
+
const ECHO_ENV_RE = /echo\s+.*\$[A-Za-z_]/;
|
|
90
|
+
const EXPORT_RE = /(?:^|\s|;|&&|\|\|)export\s+\w+/;
|
|
91
|
+
const PS_ENV_VAR_RE = /\$env:[A-Za-z_]/i;
|
|
92
|
+
const PS_CHILDITEM_ENV_RE = /(?:Get-ChildItem|dir|gci|ls)\s+Env:/i;
|
|
93
|
+
const DOTNET_GETENV_RE = /\[Environment\]::GetEnvironment/i;
|
|
94
|
+
const CMD_ECHO_ENV_RE = /echo\s+%[A-Za-z_]/i;
|
|
95
|
+
|
|
96
|
+
// blockEnvFiles
|
|
97
|
+
const ENV_FILE_PATH_RE = /(?:^|[\\/])\.env(?:\.|$)/;
|
|
98
|
+
const ENV_CMD_RE = /\.env(?:\b|\s|$|\.)/;
|
|
99
|
+
|
|
100
|
+
// blockSudo
|
|
101
|
+
const SUDO_RE = /(?:^|;|&&|\|\|)\s*sudo\s/;
|
|
102
|
+
const PS_ELEVATION_RE = /Start-Process\s+.*-Verb\s+RunAs/i;
|
|
103
|
+
const RUNAS_RE = /(?:^|;|&&|\|\|)\s*runas\s/i;
|
|
104
|
+
|
|
105
|
+
// blockCurlPipeSh
|
|
106
|
+
const CURL_PIPE_SH_RE = /(?:curl|wget)\s.*\|\s*(?:sh|bash|zsh)/;
|
|
107
|
+
const PS_WEB_PIPE_RE = /(?:Invoke-WebRequest|iwr|Invoke-RestMethod|irm)\s+.*\|\s*(?:Invoke-Expression|iex)/i;
|
|
108
|
+
|
|
109
|
+
// blockForcePush
|
|
110
|
+
const FORCE_PUSH_RE = /(?:--force|-f\b)/;
|
|
111
|
+
|
|
112
|
+
// blockSecretsWrite
|
|
113
|
+
const SECRET_FILE_RE = /\.(?:pem|key)$/;
|
|
114
|
+
const SECRET_FILE_ID_RSA_RE = /id_rsa/;
|
|
115
|
+
const SECRET_FILE_CREDENTIALS_RE = /credentials/;
|
|
116
|
+
|
|
117
|
+
// blockWorkOnMain
|
|
118
|
+
const GIT_COMMIT_MERGE_RE = /git\s+(?:commit|merge|rebase|cherry-pick)\b/;
|
|
119
|
+
|
|
120
|
+
// blockFailproofaiCommands
|
|
121
|
+
const FAILPROOFAI_CLI_RE = /(?:^|;|&&|\|\||\|)\s*failproofai(?:\s|$)/;
|
|
122
|
+
const FAILPROOFAI_UNINSTALL_RE = /(?:npm\s+(?:uninstall|remove|un|r)\s.*failproofai|bun\s+remove\s.*failproofai|yarn\s+global\s+remove\s+failproofai|pnpm\s+(?:remove|uninstall|un)\s.*failproofai)/;
|
|
123
|
+
|
|
124
|
+
// warnGitAmend
|
|
125
|
+
const GIT_AMEND_RE = /\bgit\s+commit\b.*--amend\b/;
|
|
126
|
+
|
|
127
|
+
// warnGitStashDrop
|
|
128
|
+
const GIT_STASH_DROP_RE = /\bgit\s+stash\s+(?:drop|clear)\b/;
|
|
129
|
+
|
|
130
|
+
// warnAllFilesStaged
|
|
131
|
+
const GIT_ADD_ALL_RE = /\bgit\s+add\s+(?:-A\b|--all\b|\.(?:\s|$|;|&&|\|\|))/;
|
|
132
|
+
|
|
133
|
+
// warnGlobalPackageInstall
|
|
134
|
+
const NPM_GLOBAL_RE = /\bnpm\s+(?:install|i)\b(?=.*(?:\s-g\b|--global\b))/;
|
|
135
|
+
const YARN_GLOBAL_RE = /\byarn\s+global\s+add\b/;
|
|
136
|
+
const PNPM_GLOBAL_RE = /\bpnpm\s+(?:add|install|i)\b(?=.*(?:\s-g\b|--global\b))/;
|
|
137
|
+
const BUN_GLOBAL_RE = /\bbun\s+(?:install|add)\b(?=.*(?:\s-g\b|--global\b))/;
|
|
138
|
+
const CARGO_INSTALL_RE = /\bcargo\s+install\b/;
|
|
139
|
+
const PIP_SYSTEM_RE = /\bpip(?:3)?\s+install\b(?=.*(?:--user\b|--break-system-packages\b))/;
|
|
140
|
+
|
|
141
|
+
// warnBackgroundProcess
|
|
142
|
+
const NOHUP_RE = /\bnohup\s+\S/;
|
|
143
|
+
const SCREEN_DETACH_RE = /\bscreen\s+-[A-Za-z]*d[A-Za-z]*\b/;
|
|
144
|
+
const TMUX_DETACH_RE = /\btmux\s+(?:new-session|new)\b[^|&;]*-d\b/;
|
|
145
|
+
const DISOWN_RE = /\bdisown\b/;
|
|
146
|
+
const BACKGROUND_AMPERSAND_RE = /(?<![&|])\s?&\s*(?:$|#|;)/;
|
|
147
|
+
|
|
148
|
+
// blockWorkOnMain: caches the current branch per cwd to avoid repeated execSync calls.
|
|
149
|
+
// Trade-off: if the user switches branches externally mid-session, the cache serves
|
|
150
|
+
// the stale value until the process restarts. This is acceptable since branch switches
|
|
151
|
+
// during an active Claude session are rare.
|
|
152
|
+
const gitBranchCache = new Map<string, string>();
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Check if a command matches an allow pattern using token-by-token comparison.
|
|
156
|
+
* The "*" token is a wildcard. Extra command tokens beyond the pattern are allowed,
|
|
157
|
+
* UNLESS any token is a standalone shell operator (&&, ||, |, ;) OR contains an
|
|
158
|
+
* embedded shell metacharacter — both cases are rejected to prevent bypass via
|
|
159
|
+
* appended sub-commands or glued operators (e.g. "nginx;" or "nginx;evil").
|
|
160
|
+
*/
|
|
161
|
+
function matchesAllowedPattern(cmd: string, pattern: string): boolean {
|
|
162
|
+
const cmdTokens = parseArgvTokens(cmd);
|
|
163
|
+
const patTokens = parseArgvTokens(pattern);
|
|
164
|
+
if (cmdTokens.length < patTokens.length) return false;
|
|
165
|
+
// Reject commands containing standalone shell-operator tokens
|
|
166
|
+
if (cmdTokens.some((tok) => SHELL_OPERATORS.has(tok))) return false;
|
|
167
|
+
// Reject any token containing embedded shell metacharacters
|
|
168
|
+
if (cmdTokens.some((tok) => SHELL_METACHAR_RE.test(tok))) return false;
|
|
169
|
+
return patTokens.every((tok, i) => tok === "*" || tok === cmdTokens[i]);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// -- Policy implementations --
|
|
173
|
+
|
|
174
|
+
function sanitizeJwt(ctx: PolicyContext): PolicyResult {
|
|
175
|
+
// PostToolUse: scrub JWT patterns from tool output
|
|
176
|
+
const output = JSON.stringify(ctx.payload);
|
|
177
|
+
if (JWT_RE.test(output)) {
|
|
178
|
+
return {
|
|
179
|
+
decision: "deny",
|
|
180
|
+
reason: "JWT token detected in tool output",
|
|
181
|
+
message: "[REDACTED: JWT token removed by failproofai]",
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return allow();
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function sanitizeApiKeys(ctx: PolicyContext): PolicyResult {
|
|
188
|
+
// PostToolUse: scrub common API key patterns from tool output
|
|
189
|
+
const output = JSON.stringify(ctx.payload);
|
|
190
|
+
for (const [pattern, label] of API_KEY_PATTERNS) {
|
|
191
|
+
if (pattern.test(output)) {
|
|
192
|
+
return {
|
|
193
|
+
decision: "deny",
|
|
194
|
+
reason: `${label} detected in tool output`,
|
|
195
|
+
message: `[REDACTED: ${label} removed by failproofai]`,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Check additional user-configured patterns
|
|
201
|
+
const additional = ((ctx.params?.additionalPatterns ?? []) as Array<{ regex: string; label: string }>);
|
|
202
|
+
for (const { regex, label } of additional) {
|
|
203
|
+
try {
|
|
204
|
+
if (new RegExp(regex).test(output)) {
|
|
205
|
+
return {
|
|
206
|
+
decision: "deny",
|
|
207
|
+
reason: `${label} detected in tool output`,
|
|
208
|
+
message: `[REDACTED: ${label} removed by failproofai]`,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
} catch {
|
|
212
|
+
hookLogWarn(`additionalPatterns: invalid regex "${regex}", skipping`);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return allow();
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function sanitizeConnectionStrings(ctx: PolicyContext): PolicyResult {
|
|
220
|
+
// PostToolUse: scrub database connection strings with embedded credentials
|
|
221
|
+
const output = JSON.stringify(ctx.payload);
|
|
222
|
+
if (CONNECTION_STRING_RE.test(output)) {
|
|
223
|
+
return {
|
|
224
|
+
decision: "deny",
|
|
225
|
+
reason: "Database connection string with credentials detected in tool output",
|
|
226
|
+
message: "[REDACTED: connection string removed by failproofai]",
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
return allow();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function sanitizePrivateKeyContent(ctx: PolicyContext): PolicyResult {
|
|
233
|
+
// PostToolUse: scrub PEM private key blocks from tool output
|
|
234
|
+
const output = JSON.stringify(ctx.payload);
|
|
235
|
+
if (PRIVATE_KEY_RE.test(output)) {
|
|
236
|
+
return {
|
|
237
|
+
decision: "deny",
|
|
238
|
+
reason: "Private key content detected in tool output",
|
|
239
|
+
message: "[REDACTED: private key content removed by failproofai]",
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
return allow();
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
function sanitizeBearerTokens(ctx: PolicyContext): PolicyResult {
|
|
246
|
+
// PostToolUse: scrub Authorization: Bearer tokens from tool output
|
|
247
|
+
const output = JSON.stringify(ctx.payload);
|
|
248
|
+
if (BEARER_TOKEN_RE.test(output)) {
|
|
249
|
+
return {
|
|
250
|
+
decision: "deny",
|
|
251
|
+
reason: "Bearer token detected in tool output",
|
|
252
|
+
message: "[REDACTED: Bearer token removed by failproofai]",
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
return allow();
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
function warnDestructiveSql(ctx: PolicyContext): PolicyResult {
|
|
259
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
260
|
+
const cmd = getCommand(ctx);
|
|
261
|
+
if (!SQL_TOOL_RE.test(cmd)) return allow();
|
|
262
|
+
|
|
263
|
+
// DROP or TRUNCATE always warns
|
|
264
|
+
if (DESTRUCTIVE_SQL_RE.test(cmd)) {
|
|
265
|
+
return instruct(
|
|
266
|
+
"STOP: This command contains destructive SQL (DROP/TRUNCATE/DELETE). Confirm with the user before executing.",
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// DELETE FROM without WHERE warns
|
|
271
|
+
if (DELETE_NO_WHERE_RE.test(cmd) && !SQL_WHERE_RE.test(cmd)) {
|
|
272
|
+
return instruct(
|
|
273
|
+
"STOP: This command contains destructive SQL (DROP/TRUNCATE/DELETE). Confirm with the user before executing.",
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
return allow();
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
function warnLargeFileWrite(ctx: PolicyContext): PolicyResult {
|
|
281
|
+
if (ctx.toolName !== "Write") return allow();
|
|
282
|
+
const content = ctx.toolInput?.content as string | undefined;
|
|
283
|
+
if (typeof content !== "string") return allow();
|
|
284
|
+
const thresholdKb = ((ctx.params?.thresholdKb ?? 1024) as number);
|
|
285
|
+
const thresholdBytes = thresholdKb * 1024;
|
|
286
|
+
if (content.length > thresholdBytes) {
|
|
287
|
+
return instruct(
|
|
288
|
+
`STOP: You are writing a file larger than ${thresholdKb}KB (${Math.round(content.length / 1024)}KB). This is unusually large. Confirm this is intentional before proceeding.`,
|
|
289
|
+
);
|
|
290
|
+
}
|
|
291
|
+
return allow();
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function warnPackagePublish(ctx: PolicyContext): PolicyResult {
|
|
295
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
296
|
+
const cmd = getCommand(ctx);
|
|
297
|
+
if (PUBLISH_CMD_RE.test(cmd)) {
|
|
298
|
+
return instruct(
|
|
299
|
+
"STOP: This command publishes a package to a public registry. Confirm with the user that this is intentional.",
|
|
300
|
+
);
|
|
301
|
+
}
|
|
302
|
+
return allow();
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function protectEnvVars(ctx: PolicyContext): PolicyResult {
|
|
306
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
307
|
+
const cmd = getCommand(ctx);
|
|
308
|
+
// Block: env, printenv, echo $VAR, export VAR=
|
|
309
|
+
if (ENV_PRINTENV_RE.test(cmd)) {
|
|
310
|
+
return deny("Command reads environment variables");
|
|
311
|
+
}
|
|
312
|
+
if (ECHO_ENV_RE.test(cmd)) {
|
|
313
|
+
return deny("Command echoes environment variable");
|
|
314
|
+
}
|
|
315
|
+
if (EXPORT_RE.test(cmd)) {
|
|
316
|
+
return deny("Command exports environment variable");
|
|
317
|
+
}
|
|
318
|
+
// PowerShell: $env:VAR
|
|
319
|
+
if (PS_ENV_VAR_RE.test(cmd)) {
|
|
320
|
+
return deny("Command reads environment variable via PowerShell");
|
|
321
|
+
}
|
|
322
|
+
// PowerShell: Get-ChildItem Env: / dir env: / gci env: / ls env:
|
|
323
|
+
if (PS_CHILDITEM_ENV_RE.test(cmd)) {
|
|
324
|
+
return deny("Command reads environment variables via PowerShell");
|
|
325
|
+
}
|
|
326
|
+
// PowerShell: [Environment]::GetEnvironmentVariable
|
|
327
|
+
if (DOTNET_GETENV_RE.test(cmd)) {
|
|
328
|
+
return deny("Command reads environment variable via .NET");
|
|
329
|
+
}
|
|
330
|
+
// cmd: echo %VAR%
|
|
331
|
+
if (CMD_ECHO_ENV_RE.test(cmd)) {
|
|
332
|
+
return deny("Command echoes environment variable via cmd");
|
|
333
|
+
}
|
|
334
|
+
return allow();
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function blockEnvFiles(ctx: PolicyContext): PolicyResult {
|
|
338
|
+
const cmd = getCommand(ctx);
|
|
339
|
+
const filePath = getFilePath(ctx);
|
|
340
|
+
|
|
341
|
+
// Check file_path for Read/Write tools (match both / and \ path separators)
|
|
342
|
+
if (filePath && ENV_FILE_PATH_RE.test(filePath)) {
|
|
343
|
+
return deny("Access to .env file blocked");
|
|
344
|
+
}
|
|
345
|
+
// Check Bash commands referencing .env files
|
|
346
|
+
if (ctx.toolName === "Bash" && ENV_CMD_RE.test(cmd)) {
|
|
347
|
+
return deny("Command references .env file");
|
|
348
|
+
}
|
|
349
|
+
return allow();
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
function blockSudo(ctx: PolicyContext): PolicyResult {
|
|
353
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
354
|
+
const cmd = getCommand(ctx).trimStart();
|
|
355
|
+
if (SUDO_RE.test(cmd) || cmd.startsWith("sudo ")) {
|
|
356
|
+
// Check allowPatterns — match against parsed tokens, not raw string
|
|
357
|
+
const allowPatterns = ((ctx.params?.allowPatterns ?? []) as string[]);
|
|
358
|
+
if (allowPatterns.some((p) => matchesAllowedPattern(cmd, p))) return allow();
|
|
359
|
+
return deny("sudo commands are blocked");
|
|
360
|
+
}
|
|
361
|
+
// PowerShell: Start-Process -Verb RunAs (elevation)
|
|
362
|
+
if (PS_ELEVATION_RE.test(cmd)) {
|
|
363
|
+
return deny("Elevated process launch is blocked");
|
|
364
|
+
}
|
|
365
|
+
// Windows: runas command
|
|
366
|
+
if (RUNAS_RE.test(cmd)) {
|
|
367
|
+
return deny("runas elevation is blocked");
|
|
368
|
+
}
|
|
369
|
+
return allow();
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
function blockCurlPipeSh(ctx: PolicyContext): PolicyResult {
|
|
373
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
374
|
+
const cmd = getCommand(ctx);
|
|
375
|
+
if (CURL_PIPE_SH_RE.test(cmd)) {
|
|
376
|
+
return deny("Piping downloads to shell is blocked");
|
|
377
|
+
}
|
|
378
|
+
// PowerShell: iwr | iex, irm | iex, Invoke-WebRequest | Invoke-Expression
|
|
379
|
+
if (PS_WEB_PIPE_RE.test(cmd)) {
|
|
380
|
+
return deny("Piping downloads to Invoke-Expression is blocked");
|
|
381
|
+
}
|
|
382
|
+
return allow();
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
function extractGitPushArgs(cmd: string): string[] {
|
|
386
|
+
return cmd
|
|
387
|
+
.split(/&&|\|\||[|;\n]/)
|
|
388
|
+
.map((s) => s.trim())
|
|
389
|
+
.filter((s) => /^git\s+push\s/.test(s))
|
|
390
|
+
.map((s) => s.replace(/^git\s+push\s+/, ""));
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
function blockPushMaster(ctx: PolicyContext): PolicyResult {
|
|
394
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
395
|
+
const protectedBranches = ((ctx.params?.protectedBranches ?? ["main", "master"]) as string[]);
|
|
396
|
+
if (protectedBranches.length === 0) return allow();
|
|
397
|
+
const args = extractGitPushArgs(getCommand(ctx));
|
|
398
|
+
const branchPattern = new RegExp(`\\b(?:${protectedBranches.map((b) => b.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})\\b`);
|
|
399
|
+
if (args.some((a) => branchPattern.test(a))) {
|
|
400
|
+
return deny(`Pushing to ${protectedBranches.join("/")} is blocked`);
|
|
401
|
+
}
|
|
402
|
+
return allow();
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Check whether all *recursive* rm path targets in a command are under an allowlisted path.
|
|
407
|
+
* Splits on shell operators first so that `/tmp` appearing in an unrelated
|
|
408
|
+
* sub-command (e.g. `echo /tmp && rm -rf /`) does not trigger a false allow.
|
|
409
|
+
* Uses path-boundary comparison so `/tmp` does not cover `/tmp2`.
|
|
410
|
+
* Non-recursive rm segments (no -r/-R flag) are skipped — they pose no catastrophic risk.
|
|
411
|
+
* Quoted paths with spaces are handled via a segment-level regex fallback.
|
|
412
|
+
*/
|
|
413
|
+
function rmTargetIsAllowed(cmd: string, allowPaths: string[]): boolean {
|
|
414
|
+
if (allowPaths.length === 0) return false;
|
|
415
|
+
const segments = cmd
|
|
416
|
+
.split(/&&|\|\||[|;\n]/)
|
|
417
|
+
.map((s) => s.trim())
|
|
418
|
+
.filter((s) => /\brm\b/.test(s));
|
|
419
|
+
if (segments.length === 0) return false;
|
|
420
|
+
for (const seg of segments) {
|
|
421
|
+
const tokens = parseArgvTokens(seg);
|
|
422
|
+
const rmIdx = tokens.findIndex((t) => t === "rm");
|
|
423
|
+
if (rmIdx < 0) continue;
|
|
424
|
+
// Only validate recursive rm segments — non-recursive rm has no catastrophic-deletion risk
|
|
425
|
+
const flagTokens = tokens.slice(rmIdx + 1).filter((t) => /^-[^-]/.test(t));
|
|
426
|
+
if (!/r/i.test(flagTokens.join(""))) continue;
|
|
427
|
+
const pathArgs = tokens.slice(rmIdx + 1).filter((t) => !t.startsWith("-"));
|
|
428
|
+
for (const target of pathArgs) {
|
|
429
|
+
const normalized = target.replace(/\/\*$/, "").replace(/\/+$/, "") || "/";
|
|
430
|
+
const covered = allowPaths.some((p) => {
|
|
431
|
+
const np = p.replace(/\/+$/, "") || "/";
|
|
432
|
+
return normalized === np || normalized.startsWith(np + "/");
|
|
433
|
+
});
|
|
434
|
+
if (!covered) {
|
|
435
|
+
// Fallback: check the raw segment for quoted paths that contain spaces
|
|
436
|
+
// (parseArgvTokens splits on whitespace, so "/tmp/my dir" becomes two tokens)
|
|
437
|
+
const segCovered = allowPaths.some((p) => {
|
|
438
|
+
const escaped = p.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
439
|
+
return new RegExp(`${escaped}(?:[/"'\\s/*]|$)`).test(seg);
|
|
440
|
+
});
|
|
441
|
+
if (!segCovered) return false;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
return true;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
function blockRmRf(ctx: PolicyContext): PolicyResult {
|
|
449
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
450
|
+
const cmd = getCommand(ctx);
|
|
451
|
+
const hasDestructivePath = /(?:\/\s*$|\/\*|~)/.test(cmd);
|
|
452
|
+
|
|
453
|
+
// Combined flags in one token: rm -rf /, rm -fr /
|
|
454
|
+
if (hasDestructivePath && (
|
|
455
|
+
/rm\s+-[^\s]*r[^\s]*f[^\s]*/.test(cmd) ||
|
|
456
|
+
/rm\s+-[^\s]*f[^\s]*r[^\s]*/.test(cmd)
|
|
457
|
+
)) {
|
|
458
|
+
const allowPaths = ((ctx.params?.allowPaths ?? []) as string[]);
|
|
459
|
+
if (rmTargetIsAllowed(cmd, allowPaths)) return allow();
|
|
460
|
+
return deny("Catastrophic deletion blocked");
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// Separated flags: rm -r -f /, rm -f -r /, rm -r -v -f /, etc.
|
|
464
|
+
if (hasDestructivePath && /\brm\b/.test(cmd)) {
|
|
465
|
+
const tokens = parseArgvTokens(cmd);
|
|
466
|
+
const shortFlags = tokens.filter((t) => /^-[^-]/.test(t)).join("");
|
|
467
|
+
if (/r/i.test(shortFlags) && /f/.test(shortFlags)) {
|
|
468
|
+
const allowPaths = ((ctx.params?.allowPaths ?? []) as string[]);
|
|
469
|
+
if (rmTargetIsAllowed(cmd, allowPaths)) return allow();
|
|
470
|
+
return deny("Catastrophic deletion blocked");
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
// PowerShell: Remove-Item -Recurse -Force on root/drive
|
|
474
|
+
if (/Remove-Item\s+.*-Recurse.*-Force.*(?:[A-Z]:\\(?:\s|$)|\\\*)/i.test(cmd)) {
|
|
475
|
+
return deny("Catastrophic deletion blocked");
|
|
476
|
+
}
|
|
477
|
+
// cmd: rd /s /q or rmdir /s /q on drive root
|
|
478
|
+
if (/(?:rd|rmdir)\s+\/s\s+\/q\s+[A-Z]:\\/i.test(cmd)) {
|
|
479
|
+
return deny("Catastrophic deletion blocked");
|
|
480
|
+
}
|
|
481
|
+
return allow();
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
function blockForcePush(ctx: PolicyContext): PolicyResult {
|
|
485
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
486
|
+
const args = extractGitPushArgs(getCommand(ctx));
|
|
487
|
+
if (args.some((a) => FORCE_PUSH_RE.test(a))) {
|
|
488
|
+
return deny("Force-pushing is blocked");
|
|
489
|
+
}
|
|
490
|
+
return allow();
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
function blockSecretsWrite(ctx: PolicyContext): PolicyResult {
|
|
494
|
+
if (ctx.toolName !== "Write") return allow();
|
|
495
|
+
const filePath = getFilePath(ctx);
|
|
496
|
+
if (SECRET_FILE_RE.test(filePath) || SECRET_FILE_ID_RSA_RE.test(filePath) || SECRET_FILE_CREDENTIALS_RE.test(filePath)) {
|
|
497
|
+
return deny("Writing secret key files is blocked");
|
|
498
|
+
}
|
|
499
|
+
const additionalPatterns = ((ctx.params?.additionalPatterns ?? []) as string[]);
|
|
500
|
+
for (const pattern of additionalPatterns) {
|
|
501
|
+
if (filePath.includes(pattern)) {
|
|
502
|
+
return deny(`Writing blocked file pattern: ${pattern}`);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
return allow();
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
/** Read-like commands that access file system contents. */
|
|
509
|
+
const READ_LIKE_CMDS =
|
|
510
|
+
/(?:^|;|&&|\|\||\|)\s*(?:ls|find|cat|head|tail|less|more|wc|file|stat|tree|du)\s/;
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* Extract absolute paths from a Bash command string.
|
|
514
|
+
* Scans quoted strings only in the first pipeline segment (before the first
|
|
515
|
+
* bare pipe) and only when the quoted content has no glob or regex metacharacters.
|
|
516
|
+
* This catches `cat "/etc/passwd"` while avoiding false positives from grep
|
|
517
|
+
* patterns and find glob patterns that appear in later pipeline stages.
|
|
518
|
+
* Unquoted absolute paths are extracted from the whole command as before.
|
|
519
|
+
*/
|
|
520
|
+
function extractAbsolutePaths(command: string): string[] {
|
|
521
|
+
const paths: string[] = [];
|
|
522
|
+
const pathRe = /(?<![a-zA-Z0-9_.\-~\\])(?:~\/[^\s;|&"'()\[\]{}]*|~(?=\s|$|[;|&"'()\[\]{}])|\/[^\s;|&"'()\[\]{}]*)/g;
|
|
523
|
+
|
|
524
|
+
function addPaths(s: string): void {
|
|
525
|
+
pathRe.lastIndex = 0;
|
|
526
|
+
let m: RegExpExecArray | null;
|
|
527
|
+
while ((m = pathRe.exec(s)) !== null) {
|
|
528
|
+
let p = m[0];
|
|
529
|
+
if (p === "~") p = homedir();
|
|
530
|
+
else if (p.startsWith("~/")) p = join(homedir(), p.slice(2));
|
|
531
|
+
paths.push(p);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// Find the index of the first bare pipe (not inside quotes) to limit quoted extraction.
|
|
536
|
+
let firstBarePipe = command.length;
|
|
537
|
+
let inDouble = false, inSingle = false;
|
|
538
|
+
for (let i = 0; i < command.length; i++) {
|
|
539
|
+
const c = command[i];
|
|
540
|
+
if (c === '"' && !inSingle) inDouble = !inDouble;
|
|
541
|
+
else if (c === "'" && !inDouble) inSingle = !inSingle;
|
|
542
|
+
else if (c === "|" && !inDouble && !inSingle) { firstBarePipe = i; break; }
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
// Extract paths from quoted strings in the FIRST pipeline segment only,
|
|
546
|
+
// and only when the content has no glob/regex metacharacters.
|
|
547
|
+
const firstSegment = command.slice(0, firstBarePipe);
|
|
548
|
+
const quotedRe = /"([^"]*)"|'([^']*)'/g;
|
|
549
|
+
let qm: RegExpExecArray | null;
|
|
550
|
+
while ((qm = quotedRe.exec(firstSegment)) !== null) {
|
|
551
|
+
const content = qm[1] ?? qm[2] ?? "";
|
|
552
|
+
// Skip patterns that contain glob or common regex metacharacters
|
|
553
|
+
if (/[*?\[\]^$+()\\]/.test(content)) continue;
|
|
554
|
+
addPaths(content);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
// Extract from unquoted portions of the whole command (existing behaviour).
|
|
558
|
+
const stripped = command
|
|
559
|
+
.replace(/"[^"]*"/g, (m) => " ".repeat(m.length))
|
|
560
|
+
.replace(/'[^']*'/g, (m) => " ".repeat(m.length));
|
|
561
|
+
addPaths(stripped);
|
|
562
|
+
|
|
563
|
+
return paths;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
function blockReadOutsideCwd(ctx: PolicyContext): PolicyResult {
|
|
567
|
+
const cwd = ctx.session?.cwd;
|
|
568
|
+
if (!cwd) return allow(); // Can't enforce without cwd
|
|
569
|
+
|
|
570
|
+
const allowPaths = ((ctx.params?.allowPaths ?? []) as string[]);
|
|
571
|
+
|
|
572
|
+
// For Bash tool: check read-like commands for absolute paths outside cwd
|
|
573
|
+
if (ctx.toolName === "Bash") {
|
|
574
|
+
const cmd = getCommand(ctx);
|
|
575
|
+
if (!READ_LIKE_CMDS.test(cmd)) return allow();
|
|
576
|
+
|
|
577
|
+
const paths = extractAbsolutePaths(cmd);
|
|
578
|
+
const cwdWithSep = cwd.endsWith("/") ? cwd : cwd + "/";
|
|
579
|
+
for (const p of paths) {
|
|
580
|
+
const resolved = resolve(cwd, p);
|
|
581
|
+
if (isClaudeSettingsFile(resolved)) {
|
|
582
|
+
return deny(`Reading Claude settings file blocked: ${resolved}`);
|
|
583
|
+
}
|
|
584
|
+
if (isClaudeInternalPath(resolved)) continue; // Whitelist ~/.claude/
|
|
585
|
+
if (resolved === "/dev/null") continue; // Harmless special file
|
|
586
|
+
if (resolved !== cwd && !resolved.startsWith(cwdWithSep)) {
|
|
587
|
+
if (allowPaths.some((ap) => resolved === ap || resolved.startsWith(ap.endsWith("/") ? ap : ap + "/"))) continue;
|
|
588
|
+
return deny(`Bash read outside project directory blocked: ${resolved}`);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
return allow();
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
// For Read/Glob/Grep: existing file_path / path check
|
|
595
|
+
const filePath = getFilePath(ctx);
|
|
596
|
+
const searchPath = (ctx.toolInput?.path as string) ?? "";
|
|
597
|
+
|
|
598
|
+
const target = filePath || searchPath;
|
|
599
|
+
if (!target) return allow();
|
|
600
|
+
|
|
601
|
+
const resolved = resolve(cwd, target);
|
|
602
|
+
|
|
603
|
+
// Block settings files in any .claude directory before whitelisting
|
|
604
|
+
if (isClaudeSettingsFile(resolved)) {
|
|
605
|
+
return deny(`Reading Claude settings file blocked: ${resolved}`);
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
// Whitelist ~/.claude/ — Claude Code's own config, plans, memory, and settings
|
|
609
|
+
if (isClaudeInternalPath(resolved)) return allow();
|
|
610
|
+
|
|
611
|
+
// Whitelist /dev/null — harmless special file commonly used in shell commands
|
|
612
|
+
if (resolved === "/dev/null") return allow();
|
|
613
|
+
|
|
614
|
+
const cwdWithSep = cwd.endsWith("/") ? cwd : cwd + "/";
|
|
615
|
+
if (resolved !== cwd && !resolved.startsWith(cwdWithSep)) {
|
|
616
|
+
if (allowPaths.some((ap) => resolved === ap || resolved.startsWith(ap.endsWith("/") ? ap : ap + "/"))) return allow();
|
|
617
|
+
return deny(`Access outside project directory blocked: ${resolved}`);
|
|
618
|
+
}
|
|
619
|
+
return allow();
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
function blockWorkOnMain(ctx: PolicyContext): PolicyResult {
|
|
623
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
624
|
+
const cmd = getCommand(ctx);
|
|
625
|
+
if (!GIT_COMMIT_MERGE_RE.test(cmd)) return allow();
|
|
626
|
+
|
|
627
|
+
const cwd = ctx.session?.cwd;
|
|
628
|
+
if (!cwd) return allow();
|
|
629
|
+
|
|
630
|
+
try {
|
|
631
|
+
let branch = gitBranchCache.get(cwd);
|
|
632
|
+
if (branch === undefined) {
|
|
633
|
+
branch = execSync("git rev-parse --abbrev-ref HEAD", {
|
|
634
|
+
cwd,
|
|
635
|
+
encoding: "utf8",
|
|
636
|
+
timeout: 3000,
|
|
637
|
+
}).trim();
|
|
638
|
+
gitBranchCache.set(cwd, branch);
|
|
639
|
+
}
|
|
640
|
+
const protectedBranches = ((ctx.params?.protectedBranches ?? ["main", "master"]) as string[]);
|
|
641
|
+
if (protectedBranches.includes(branch)) {
|
|
642
|
+
return deny(
|
|
643
|
+
`Git ${cmd.match(/git\s+(\S+)/)?.[1] ?? "operation"} on ${branch} is blocked. Create a feature branch first.`,
|
|
644
|
+
);
|
|
645
|
+
}
|
|
646
|
+
} catch {
|
|
647
|
+
return allow();
|
|
648
|
+
}
|
|
649
|
+
return allow();
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
function blockFailproofaiCommands(ctx: PolicyContext): PolicyResult {
|
|
653
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
654
|
+
const cmd = getCommand(ctx);
|
|
655
|
+
|
|
656
|
+
// Block direct failproofai CLI invocations
|
|
657
|
+
if (FAILPROOFAI_CLI_RE.test(cmd)) {
|
|
658
|
+
return deny("Running failproofai CLI commands is blocked");
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
// Block package-manager uninstallation of failproofai
|
|
662
|
+
if (FAILPROOFAI_UNINSTALL_RE.test(cmd)) {
|
|
663
|
+
return deny("Uninstalling failproofai is blocked");
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
return allow();
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
// Maximum size of the per-session tool-call sidecar before we stop updating it.
|
|
670
|
+
// If exceeded, repeated-call detection degrades gracefully (allows through) rather
|
|
671
|
+
// than growing the file unboundedly.
|
|
672
|
+
const TOOL_CALL_TRACKER_MAX_BYTES = 65_536; // 64 KB
|
|
673
|
+
|
|
674
|
+
async function warnRepeatedToolCalls(ctx: PolicyContext): Promise<PolicyResult> {
|
|
675
|
+
const THRESHOLD = 3;
|
|
676
|
+
const transcriptPath = ctx.session?.transcriptPath;
|
|
677
|
+
if (!transcriptPath || !ctx.toolName || !ctx.toolInput) return allow();
|
|
678
|
+
|
|
679
|
+
// Sidecar file tracks { fingerprint: count } — O(1) per call vs O(transcript) per call.
|
|
680
|
+
const trackerPath = `${transcriptPath}.tool-calls.json`;
|
|
681
|
+
const fingerprint = JSON.stringify({ tool: ctx.toolName, input: ctx.toolInput });
|
|
682
|
+
|
|
683
|
+
let counts: Record<string, number> = {};
|
|
684
|
+
try {
|
|
685
|
+
const raw = await readFile(trackerPath, "utf8");
|
|
686
|
+
counts = JSON.parse(raw) as Record<string, number>;
|
|
687
|
+
} catch { /* first call or unreadable — start fresh */ }
|
|
688
|
+
|
|
689
|
+
const prevCount = counts[fingerprint] ?? 0;
|
|
690
|
+
if (prevCount >= THRESHOLD) {
|
|
691
|
+
return instruct(
|
|
692
|
+
`STOP: You have already called ${ctx.toolName} ${prevCount} times with identical parameters. This is wasteful and unproductive. Do NOT repeat this call — use a different approach or ask the user for clarification.`,
|
|
693
|
+
);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
counts[fingerprint] = prevCount + 1;
|
|
697
|
+
try {
|
|
698
|
+
const serialized = JSON.stringify(counts);
|
|
699
|
+
if (serialized.length <= TOOL_CALL_TRACKER_MAX_BYTES) {
|
|
700
|
+
await writeFile(trackerPath, serialized, "utf8");
|
|
701
|
+
}
|
|
702
|
+
} catch { /* non-fatal */ }
|
|
703
|
+
|
|
704
|
+
return allow();
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
function warnGitAmend(ctx: PolicyContext): PolicyResult {
|
|
708
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
709
|
+
const cmd = getCommand(ctx);
|
|
710
|
+
if (GIT_AMEND_RE.test(cmd)) {
|
|
711
|
+
return instruct(
|
|
712
|
+
"STOP: This command amends the last commit, which rewrites git history. If this commit has already been pushed to a shared branch, this will cause divergence for other contributors. Confirm with the user before executing.",
|
|
713
|
+
);
|
|
714
|
+
}
|
|
715
|
+
return allow();
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
function warnGitStashDrop(ctx: PolicyContext): PolicyResult {
|
|
719
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
720
|
+
const cmd = getCommand(ctx);
|
|
721
|
+
if (GIT_STASH_DROP_RE.test(cmd)) {
|
|
722
|
+
return instruct(
|
|
723
|
+
"STOP: This command permanently deletes stashed changes (git stash drop/clear). Stash entries cannot be recovered after deletion. Confirm with the user before executing.",
|
|
724
|
+
);
|
|
725
|
+
}
|
|
726
|
+
return allow();
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
function warnAllFilesStaged(ctx: PolicyContext): PolicyResult {
|
|
730
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
731
|
+
const cmd = getCommand(ctx);
|
|
732
|
+
if (GIT_ADD_ALL_RE.test(cmd)) {
|
|
733
|
+
return instruct(
|
|
734
|
+
"STOP: This command stages all files in the working tree (git add -A / --all / .). This may inadvertently include build artifacts, generated files, or sensitive files not covered by .gitignore. Confirm with the user before executing.",
|
|
735
|
+
);
|
|
736
|
+
}
|
|
737
|
+
return allow();
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
function warnSchemaAlteration(ctx: PolicyContext): PolicyResult {
|
|
741
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
742
|
+
const cmd = getCommand(ctx);
|
|
743
|
+
if (!SQL_TOOL_RE.test(cmd)) return allow();
|
|
744
|
+
if (SCHEMA_ALTER_RE.test(cmd)) {
|
|
745
|
+
return instruct(
|
|
746
|
+
"STOP: This command contains a schema-altering SQL statement (ALTER TABLE with column or rename operation). Schema changes on production databases are irreversible or disruptive. Confirm with the user before executing.",
|
|
747
|
+
);
|
|
748
|
+
}
|
|
749
|
+
return allow();
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
function warnGlobalPackageInstall(ctx: PolicyContext): PolicyResult {
|
|
753
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
754
|
+
const cmd = getCommand(ctx);
|
|
755
|
+
const isGlobal =
|
|
756
|
+
NPM_GLOBAL_RE.test(cmd) ||
|
|
757
|
+
YARN_GLOBAL_RE.test(cmd) ||
|
|
758
|
+
PNPM_GLOBAL_RE.test(cmd) ||
|
|
759
|
+
BUN_GLOBAL_RE.test(cmd) ||
|
|
760
|
+
CARGO_INSTALL_RE.test(cmd) ||
|
|
761
|
+
// Bare 'pip install' respects the active venv when one is present;
|
|
762
|
+
// only flag explicit system-level flags (--user, --break-system-packages).
|
|
763
|
+
PIP_SYSTEM_RE.test(cmd);
|
|
764
|
+
if (isGlobal) {
|
|
765
|
+
return instruct(
|
|
766
|
+
"STOP: This command installs a package globally, which modifies the system-wide environment outside the project. This can conflict with other projects or system tools. Confirm with the user before executing.",
|
|
767
|
+
);
|
|
768
|
+
}
|
|
769
|
+
return allow();
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
function warnBackgroundProcess(ctx: PolicyContext): PolicyResult {
|
|
773
|
+
if (ctx.toolName !== "Bash") return allow();
|
|
774
|
+
const cmd = getCommand(ctx);
|
|
775
|
+
const isBackground =
|
|
776
|
+
NOHUP_RE.test(cmd) ||
|
|
777
|
+
SCREEN_DETACH_RE.test(cmd) ||
|
|
778
|
+
TMUX_DETACH_RE.test(cmd) ||
|
|
779
|
+
DISOWN_RE.test(cmd) ||
|
|
780
|
+
BACKGROUND_AMPERSAND_RE.test(cmd);
|
|
781
|
+
if (isBackground) {
|
|
782
|
+
return instruct(
|
|
783
|
+
"STOP: This command starts a background or detached process (nohup, screen -d, tmux -d, or trailing &). Background processes persist after Claude's session and may be difficult to track or stop. Confirm with the user before executing.",
|
|
784
|
+
);
|
|
785
|
+
}
|
|
786
|
+
return allow();
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
// -- Registry --
|
|
790
|
+
|
|
791
|
+
export const BUILTIN_POLICIES: BuiltinPolicyDefinition[] = [
|
|
792
|
+
{
|
|
793
|
+
name: "sanitize-jwt",
|
|
794
|
+
description: "Stop Claude from reading JWTs in tool responses",
|
|
795
|
+
fn: sanitizeJwt,
|
|
796
|
+
match: { events: ["PostToolUse"] },
|
|
797
|
+
defaultEnabled: true,
|
|
798
|
+
category: "Sanitize",
|
|
799
|
+
},
|
|
800
|
+
{
|
|
801
|
+
name: "sanitize-api-keys",
|
|
802
|
+
description: "Stop Claude from reading API keys (OpenAI, Anthropic, GitHub, AWS, Stripe, Google) in tool responses",
|
|
803
|
+
fn: sanitizeApiKeys,
|
|
804
|
+
match: { events: ["PostToolUse"] },
|
|
805
|
+
defaultEnabled: true,
|
|
806
|
+
category: "Sanitize",
|
|
807
|
+
params: {
|
|
808
|
+
additionalPatterns: {
|
|
809
|
+
type: "pattern[]",
|
|
810
|
+
description: "Additional API key patterns to scrub, each with { regex, label }",
|
|
811
|
+
default: [],
|
|
812
|
+
},
|
|
813
|
+
} satisfies PolicyParamsSchema,
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
name: "sanitize-connection-strings",
|
|
817
|
+
description: "Stop Claude from reading database connection strings with embedded credentials in tool responses",
|
|
818
|
+
fn: sanitizeConnectionStrings,
|
|
819
|
+
match: { events: ["PostToolUse"] },
|
|
820
|
+
defaultEnabled: true,
|
|
821
|
+
category: "Sanitize",
|
|
822
|
+
},
|
|
823
|
+
{
|
|
824
|
+
name: "sanitize-private-key-content",
|
|
825
|
+
description: "Stop Claude from reading PEM private key content in tool responses",
|
|
826
|
+
fn: sanitizePrivateKeyContent,
|
|
827
|
+
match: { events: ["PostToolUse"] },
|
|
828
|
+
defaultEnabled: true,
|
|
829
|
+
category: "Sanitize",
|
|
830
|
+
},
|
|
831
|
+
{
|
|
832
|
+
name: "sanitize-bearer-tokens",
|
|
833
|
+
description: "Stop Claude from reading Authorization Bearer tokens in tool responses",
|
|
834
|
+
fn: sanitizeBearerTokens,
|
|
835
|
+
match: { events: ["PostToolUse"] },
|
|
836
|
+
defaultEnabled: true,
|
|
837
|
+
category: "Sanitize",
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
name: "protect-env-vars",
|
|
841
|
+
description: "Prevent commands that read environment variables",
|
|
842
|
+
fn: protectEnvVars,
|
|
843
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
844
|
+
defaultEnabled: true,
|
|
845
|
+
category: "Environment",
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
name: "block-env-files",
|
|
849
|
+
description: "Block reading/writing .env files",
|
|
850
|
+
fn: blockEnvFiles,
|
|
851
|
+
match: { events: ["PreToolUse"] },
|
|
852
|
+
defaultEnabled: true,
|
|
853
|
+
category: "Environment",
|
|
854
|
+
},
|
|
855
|
+
{
|
|
856
|
+
name: "block-read-outside-cwd",
|
|
857
|
+
description: "Block file reads outside the session working directory",
|
|
858
|
+
fn: blockReadOutsideCwd,
|
|
859
|
+
match: { events: ["PreToolUse"], toolNames: ["Read", "Glob", "Grep", "Bash"] },
|
|
860
|
+
defaultEnabled: false,
|
|
861
|
+
category: "Environment",
|
|
862
|
+
params: {
|
|
863
|
+
allowPaths: {
|
|
864
|
+
type: "string[]",
|
|
865
|
+
description: "Absolute paths outside cwd that are allowed to be read",
|
|
866
|
+
default: [],
|
|
867
|
+
},
|
|
868
|
+
} satisfies PolicyParamsSchema,
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
name: "block-sudo",
|
|
872
|
+
description: "Block sudo commands",
|
|
873
|
+
fn: blockSudo,
|
|
874
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
875
|
+
defaultEnabled: true,
|
|
876
|
+
category: "Dangerous Commands",
|
|
877
|
+
params: {
|
|
878
|
+
allowPatterns: {
|
|
879
|
+
type: "string[]",
|
|
880
|
+
description: "Sudo command patterns to allow, matched token-by-token (e.g. 'sudo systemctl status')",
|
|
881
|
+
default: [],
|
|
882
|
+
},
|
|
883
|
+
} satisfies PolicyParamsSchema,
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
name: "block-curl-pipe-sh",
|
|
887
|
+
description: "Block piping downloads to shell",
|
|
888
|
+
fn: blockCurlPipeSh,
|
|
889
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
890
|
+
defaultEnabled: true,
|
|
891
|
+
category: "Dangerous Commands",
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
name: "block-rm-rf",
|
|
895
|
+
description: "Prevent catastrophic deletions",
|
|
896
|
+
fn: blockRmRf,
|
|
897
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
898
|
+
defaultEnabled: false,
|
|
899
|
+
category: "Dangerous Commands",
|
|
900
|
+
params: {
|
|
901
|
+
allowPaths: {
|
|
902
|
+
type: "string[]",
|
|
903
|
+
description: "Paths that are allowed to be recursively deleted",
|
|
904
|
+
default: [],
|
|
905
|
+
},
|
|
906
|
+
} satisfies PolicyParamsSchema,
|
|
907
|
+
},
|
|
908
|
+
{
|
|
909
|
+
name: "block-failproofai-commands",
|
|
910
|
+
description: "Block failproofai CLI commands and uninstallation",
|
|
911
|
+
fn: blockFailproofaiCommands,
|
|
912
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
913
|
+
defaultEnabled: true,
|
|
914
|
+
category: "Dangerous Commands",
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
name: "block-secrets-write",
|
|
918
|
+
description: "Block writing secret key files",
|
|
919
|
+
fn: blockSecretsWrite,
|
|
920
|
+
match: { events: ["PreToolUse"], toolNames: ["Write"] },
|
|
921
|
+
defaultEnabled: false,
|
|
922
|
+
category: "Dangerous Commands",
|
|
923
|
+
params: {
|
|
924
|
+
additionalPatterns: {
|
|
925
|
+
type: "string[]",
|
|
926
|
+
description: "Additional filename patterns (substrings) to block",
|
|
927
|
+
default: [],
|
|
928
|
+
},
|
|
929
|
+
} satisfies PolicyParamsSchema,
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
name: "block-push-master",
|
|
933
|
+
description: "Block pushing to main/master",
|
|
934
|
+
fn: blockPushMaster,
|
|
935
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
936
|
+
defaultEnabled: true,
|
|
937
|
+
category: "Git",
|
|
938
|
+
params: {
|
|
939
|
+
protectedBranches: {
|
|
940
|
+
type: "string[]",
|
|
941
|
+
description: "Branch names to protect from direct pushes",
|
|
942
|
+
default: ["main", "master"],
|
|
943
|
+
},
|
|
944
|
+
} satisfies PolicyParamsSchema,
|
|
945
|
+
},
|
|
946
|
+
{
|
|
947
|
+
name: "block-force-push",
|
|
948
|
+
description: "Prevent force-pushing to any branch",
|
|
949
|
+
fn: blockForcePush,
|
|
950
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
951
|
+
defaultEnabled: false,
|
|
952
|
+
category: "Git",
|
|
953
|
+
},
|
|
954
|
+
{
|
|
955
|
+
name: "block-work-on-main",
|
|
956
|
+
description: "Block git commits and merges on main/master branch",
|
|
957
|
+
fn: blockWorkOnMain,
|
|
958
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
959
|
+
defaultEnabled: false,
|
|
960
|
+
category: "Git",
|
|
961
|
+
params: {
|
|
962
|
+
protectedBranches: {
|
|
963
|
+
type: "string[]",
|
|
964
|
+
description: "Branch names where commits/merges are blocked",
|
|
965
|
+
default: ["main", "master"],
|
|
966
|
+
},
|
|
967
|
+
} satisfies PolicyParamsSchema,
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
name: "warn-git-amend",
|
|
971
|
+
description: "Warns before amending git commits, which rewrites history",
|
|
972
|
+
fn: warnGitAmend,
|
|
973
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
974
|
+
defaultEnabled: false,
|
|
975
|
+
category: "Git",
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
name: "warn-git-stash-drop",
|
|
979
|
+
description: "Warns before permanently deleting stashed changes",
|
|
980
|
+
fn: warnGitStashDrop,
|
|
981
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
982
|
+
defaultEnabled: false,
|
|
983
|
+
category: "Git",
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
name: "warn-all-files-staged",
|
|
987
|
+
description: "Warns before staging all working tree files with git add -A / . / --all",
|
|
988
|
+
fn: warnAllFilesStaged,
|
|
989
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
990
|
+
defaultEnabled: false,
|
|
991
|
+
category: "Git",
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
name: "warn-destructive-sql",
|
|
995
|
+
description: "Warn before executing destructive SQL (DROP/TRUNCATE/DELETE without WHERE) via database clients",
|
|
996
|
+
fn: warnDestructiveSql,
|
|
997
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
998
|
+
defaultEnabled: false,
|
|
999
|
+
category: "Database",
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
name: "warn-schema-alteration",
|
|
1003
|
+
description: "Warns before SQL schema changes (ALTER TABLE with column or rename operations)",
|
|
1004
|
+
fn: warnSchemaAlteration,
|
|
1005
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
1006
|
+
defaultEnabled: false,
|
|
1007
|
+
category: "Database",
|
|
1008
|
+
},
|
|
1009
|
+
{
|
|
1010
|
+
name: "warn-package-publish",
|
|
1011
|
+
description: "Warn before publishing packages to public registries (npm, PyPI, crates.io, RubyGems, etc.)",
|
|
1012
|
+
fn: warnPackagePublish,
|
|
1013
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
1014
|
+
defaultEnabled: false,
|
|
1015
|
+
category: "Packages & System",
|
|
1016
|
+
},
|
|
1017
|
+
{
|
|
1018
|
+
name: "warn-global-package-install",
|
|
1019
|
+
description: "Warns before installing packages globally (npm -g, cargo install, etc.)",
|
|
1020
|
+
fn: warnGlobalPackageInstall,
|
|
1021
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
1022
|
+
defaultEnabled: false,
|
|
1023
|
+
category: "Packages & System",
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
name: "warn-large-file-write",
|
|
1027
|
+
description: "Warn before writing files larger than 1MB (configurable via thresholdKb param)",
|
|
1028
|
+
fn: warnLargeFileWrite,
|
|
1029
|
+
match: { events: ["PreToolUse"], toolNames: ["Write"] },
|
|
1030
|
+
defaultEnabled: false,
|
|
1031
|
+
category: "Packages & System",
|
|
1032
|
+
params: {
|
|
1033
|
+
thresholdKb: {
|
|
1034
|
+
type: "number",
|
|
1035
|
+
description: "File size threshold in KB above which a warning is issued",
|
|
1036
|
+
default: 1024,
|
|
1037
|
+
},
|
|
1038
|
+
} satisfies PolicyParamsSchema,
|
|
1039
|
+
},
|
|
1040
|
+
{
|
|
1041
|
+
name: "warn-background-process",
|
|
1042
|
+
description: "Warns before starting detached or background processes",
|
|
1043
|
+
fn: warnBackgroundProcess,
|
|
1044
|
+
match: { events: ["PreToolUse"], toolNames: ["Bash"] },
|
|
1045
|
+
defaultEnabled: false,
|
|
1046
|
+
category: "Packages & System",
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
name: "warn-repeated-tool-calls",
|
|
1050
|
+
description: "Warn when the same tool is called 3+ times with identical parameters",
|
|
1051
|
+
fn: warnRepeatedToolCalls,
|
|
1052
|
+
match: { events: ["PreToolUse"] },
|
|
1053
|
+
defaultEnabled: false,
|
|
1054
|
+
category: "AI Behavior",
|
|
1055
|
+
},
|
|
1056
|
+
];
|
|
1057
|
+
|
|
1058
|
+
export function registerBuiltinPolicies(enabledNames: string[]): void {
|
|
1059
|
+
const enabledSet = new Set(enabledNames);
|
|
1060
|
+
for (const policy of BUILTIN_POLICIES) {
|
|
1061
|
+
if (enabledSet.has(policy.name)) {
|
|
1062
|
+
registerPolicy(policy.name, policy.description, policy.fn, policy.match);
|
|
1063
|
+
}
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
/** Clears the git branch cache. Exposed for test isolation only. */
|
|
1068
|
+
export function clearGitBranchCache(): void {
|
|
1069
|
+
gitBranchCache.clear();
|
|
1070
|
+
}
|