@claudeye/linux-x64 1.0.0-beta.6
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/assets/public/exospheresmall-dark.png +0 -0
- package/assets/public/exospheresmall.png +0 -0
- package/assets/standalone/.next/BUILD_ID +1 -0
- package/assets/standalone/.next/app-path-routes-manifest.json +16 -0
- package/assets/standalone/.next/build-manifest.json +21 -0
- package/assets/standalone/.next/package.json +1 -0
- package/assets/standalone/.next/prerender-manifest.json +114 -0
- package/assets/standalone/.next/required-server-files.json +321 -0
- package/assets/standalone/.next/routes-manifest.json +139 -0
- package/assets/standalone/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/_global-error/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/assets/standalone/.next/server/app/_global-error/page.js +10 -0
- package/assets/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/_global-error.html +2 -0
- package/assets/standalone/.next/server/app/_global-error.meta +15 -0
- package/assets/standalone/.next/server/app/_global-error.rsc +12 -0
- package/assets/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
- package/assets/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +12 -0
- package/assets/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/assets/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +4 -0
- package/assets/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/assets/standalone/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/_not-found/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/_not-found/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +20 -0
- package/assets/standalone/.next/server/app/_not-found/page.js +19 -0
- package/assets/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/_not-found.html +30 -0
- package/assets/standalone/.next/server/app/_not-found.meta +16 -0
- package/assets/standalone/.next/server/app/_not-found.rsc +23 -0
- package/assets/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +23 -0
- package/assets/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
- package/assets/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +14 -0
- package/assets/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
- package/assets/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +4 -0
- package/assets/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/assets/standalone/.next/server/app/api/completed-history/route/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/api/completed-history/route/build-manifest.json +11 -0
- package/assets/standalone/.next/server/app/api/completed-history/route/server-reference-manifest.json +4 -0
- package/assets/standalone/.next/server/app/api/completed-history/route.js +9 -0
- package/assets/standalone/.next/server/app/api/completed-history/route_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/api/download/[project]/[session]/route/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/api/download/[project]/[session]/route/build-manifest.json +11 -0
- package/assets/standalone/.next/server/app/api/download/[project]/[session]/route/server-reference-manifest.json +4 -0
- package/assets/standalone/.next/server/app/api/download/[project]/[session]/route.js +7 -0
- package/assets/standalone/.next/server/app/api/download/[project]/[session]/route_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/api/queue-item/route/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/api/queue-item/route/build-manifest.json +11 -0
- package/assets/standalone/.next/server/app/api/queue-item/route/server-reference-manifest.json +4 -0
- package/assets/standalone/.next/server/app/api/queue-item/route.js +10 -0
- package/assets/standalone/.next/server/app/api/queue-item/route_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/api/queue-status/route/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/api/queue-status/route/build-manifest.json +11 -0
- package/assets/standalone/.next/server/app/api/queue-status/route/server-reference-manifest.json +4 -0
- package/assets/standalone/.next/server/app/api/queue-status/route.js +9 -0
- package/assets/standalone/.next/server/app/api/queue-status/route_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/dashboard/[viewName]/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/dashboard/[viewName]/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/dashboard/[viewName]/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/dashboard/[viewName]/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/dashboard/[viewName]/page/server-reference-manifest.json +65 -0
- package/assets/standalone/.next/server/app/dashboard/[viewName]/page.js +27 -0
- package/assets/standalone/.next/server/app/dashboard/[viewName]/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/dashboard/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/dashboard/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/dashboard/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/dashboard/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/dashboard/page/server-reference-manifest.json +65 -0
- package/assets/standalone/.next/server/app/dashboard/page.js +25 -0
- package/assets/standalone/.next/server/app/dashboard/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/icon.png/route/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/icon.png/route/build-manifest.json +11 -0
- package/assets/standalone/.next/server/app/icon.png/route.js +8 -0
- package/assets/standalone/.next/server/app/icon.png.body +0 -0
- package/assets/standalone/.next/server/app/icon.png.meta +1 -0
- package/assets/standalone/.next/server/app/login/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/login/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/login/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/login/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/login/page/server-reference-manifest.json +35 -0
- package/assets/standalone/.next/server/app/login/page.js +21 -0
- package/assets/standalone/.next/server/app/login/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/login.html +30 -0
- package/assets/standalone/.next/server/app/login.meta +15 -0
- package/assets/standalone/.next/server/app/login.rsc +24 -0
- package/assets/standalone/.next/server/app/login.segments/_full.segment.rsc +24 -0
- package/assets/standalone/.next/server/app/login.segments/_head.segment.rsc +6 -0
- package/assets/standalone/.next/server/app/login.segments/_index.segment.rsc +14 -0
- package/assets/standalone/.next/server/app/login.segments/_tree.segment.rsc +2 -0
- package/assets/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +9 -0
- package/assets/standalone/.next/server/app/login.segments/login.segment.rsc +4 -0
- package/assets/standalone/.next/server/app/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/page/server-reference-manifest.json +20 -0
- package/assets/standalone/.next/server/app/page.js +21 -0
- package/assets/standalone/.next/server/app/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/project/[name]/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/project/[name]/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/project/[name]/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/project/[name]/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +20 -0
- package/assets/standalone/.next/server/app/project/[name]/page.js +24 -0
- package/assets/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +9 -0
- package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +125 -0
- package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +27 -0
- package/assets/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app/queue/page/app-paths-manifest.json +3 -0
- package/assets/standalone/.next/server/app/queue/page/build-manifest.json +18 -0
- package/assets/standalone/.next/server/app/queue/page/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/app/queue/page/react-loadable-manifest.json +1 -0
- package/assets/standalone/.next/server/app/queue/page/server-reference-manifest.json +50 -0
- package/assets/standalone/.next/server/app/queue/page.js +23 -0
- package/assets/standalone/.next/server/app/queue/page_client-reference-manifest.js +2 -0
- package/assets/standalone/.next/server/app-paths-manifest.json +16 -0
- package/assets/standalone/.next/server/chunks/[externals]_next_dist_86eb7852._.js +3 -0
- package/assets/standalone/.next/server/chunks/[externals]_next_dist_db0236a7._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__2074634c._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__32353857._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__57118d1a._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__8af5473b._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__93f96cbe._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__a0230ba0._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__a53c6c2f._.js +3 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__b18c2f99._.js +4 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__bf0c3d33._.js +28 -0
- package/assets/standalone/.next/server/chunks/[root-of-the-server]__d7355d04._.js +18 -0
- package/assets/standalone/.next/server/chunks/[turbopack]_runtime.js +795 -0
- package/assets/standalone/.next/server/chunks/_5ab69e50._.js +3 -0
- package/assets/standalone/.next/server/chunks/_63727770._.js +3 -0
- package/assets/standalone/.next/server/chunks/_6a9d92e6._.js +3 -0
- package/assets/standalone/.next/server/chunks/_7cb7a702._.js +3 -0
- package/assets/standalone/.next/server/chunks/_d3c87a9f._.js +4 -0
- package/assets/standalone/.next/server/chunks/_fb07f1d4._.js +4 -0
- package/assets/standalone/.next/server/chunks/_next-internal_server_app_api_completed-history_route_actions_0de2026b.js +3 -0
- package/assets/standalone/.next/server/chunks/_next-internal_server_app_api_queue-item_route_actions_cbc26b12.js +3 -0
- package/assets/standalone/.next/server/chunks/_next-internal_server_app_api_queue-status_route_actions_6b153b6b.js +3 -0
- package/assets/standalone/.next/server/chunks/_next-internal_server_app_icon_png_route_actions_fa3562e2.js +3 -0
- package/assets/standalone/.next/server/chunks/ce889_server_app_api_download_[project]_[session]_route_actions_bbdd823f.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_6cff0ca5._.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_74f62736._.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_auth_ts_22c348a0._.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_auth_ts_cfe39263._.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_eval-queue_ts_32d171f8._.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_eval-queue_ts_642b3543._.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_evals_33da2596._.js +3 -0
- package/assets/standalone/.next/server/chunks/lib_evals_8f3357ca._.js +3 -0
- package/assets/standalone/.next/server/chunks/node_modules_next_286d3fa3._.js +6 -0
- package/assets/standalone/.next/server/chunks/node_modules_next_dist_10532d00._.js +6 -0
- package/assets/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_64175717.js +3 -0
- package/assets/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_7a66d362.js +3 -0
- package/assets/standalone/.next/server/chunks/node_modules_next_f5199d09._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__0530a7f6._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b2008e0._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__0b4b7267._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__1690ee0d._.js +10 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__35a929f8._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__3bc7ad0a._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__4532b0f3._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__645dade4._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__6a70107b._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__7595cbf0._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__798114ce._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__95fd3969._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__9833974c._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__a457c799._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__cb11b5eb._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__cf373db0._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__da7d7793._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__e2e52c6e._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__eee26df8._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[root-of-the-server]__f758248a._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/[turbopack]_runtime.js +795 -0
- package/assets/standalone/.next/server/chunks/ssr/_134e1a0e._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_1d335924._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/_1e78350c._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/_200ed8e0._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/_22a08fac._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_265df3ed._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/_27192124._.js +32 -0
- package/assets/standalone/.next/server/chunks/ssr/_34abf048._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_3e6c3cad._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_3f1ddd0f._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_40b9779b._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_472a5ae2._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_4b5e7c6a._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_76ab933f._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/_87e025a1._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/_a13bff7c._.js +5 -0
- package/assets/standalone/.next/server/chunks/ssr/_ab8d6b5e._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_bcadf6ce._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_cce5033e._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_d7141734._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_d982b289._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_dec9649b._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_f7ec0663._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/_fd9b1ff7._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_75761787.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_1b1faab9._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_1f418324._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_2b7e6da0._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_actions_compute-dashboard_ts_fc151dbb._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_b23818c3._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_dashboard_[viewName]_error_tsx_1abd8d36._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_dashboard_[viewName]_loading_tsx_22dfcb19._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_dashboard_error_tsx_9bf3f9ca._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_dashboard_loading_tsx_05176847._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_e744e06a._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_error_tsx_5275429f._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_fc7a5b13._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_loading_tsx_b05711b0._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_login_page_tsx_ccc0019b._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_project_[name]_error_tsx_34bf44cf._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_project_[name]_loading_tsx_cdac5755._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_project_[name]_session_[sessionId]_error_tsx_89602adf._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_project_[name]_session_[sessionId]_loading_tsx_2afb91a2._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/app_queue_queue-client_tsx_45f040f7._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/components_navbar_tsx_e9e361f1._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/lib_cache_index_ts_35dfbe77._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/lib_eval-queue_ts_e2258485._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/lib_utils_ts_2428e286._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_154d37b3._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_99977b66._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_08570d7f._.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_274ac3eb._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_2df23979._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_65e60196._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_981dc6eb._.js +6 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_9774470f._.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_45780354.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_ece394eb.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_15817684.js +3 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_e3d6f561.js +4 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_dist_esm_eedfc1fd._.js +6 -0
- package/assets/standalone/.next/server/chunks/ssr/node_modules_next_f2865b38._.js +6 -0
- package/assets/standalone/.next/server/functions-config-manifest.json +14 -0
- package/assets/standalone/.next/server/instrumentation.js +4 -0
- package/assets/standalone/.next/server/middleware-build-manifest.js +22 -0
- package/assets/standalone/.next/server/middleware-manifest.json +6 -0
- package/assets/standalone/.next/server/middleware.js +5 -0
- package/assets/standalone/.next/server/next-font-manifest.js +1 -0
- package/assets/standalone/.next/server/next-font-manifest.json +6 -0
- package/assets/standalone/.next/server/pages/404.html +30 -0
- package/assets/standalone/.next/server/pages/500.html +2 -0
- package/assets/standalone/.next/server/pages-manifest.json +4 -0
- package/assets/standalone/.next/server/server-reference-manifest.js +1 -0
- package/assets/standalone/.next/server/server-reference-manifest.json +286 -0
- package/assets/standalone/.next/static/13xAqFfyzq5c7ZCSmzH2c/_buildManifest.js +11 -0
- package/assets/standalone/.next/static/13xAqFfyzq5c7ZCSmzH2c/_clientMiddlewareManifest.json +6 -0
- package/assets/standalone/.next/static/13xAqFfyzq5c7ZCSmzH2c/_ssgManifest.js +1 -0
- package/assets/standalone/.next/static/chunks/05525d53710bbee3.js +1 -0
- package/assets/standalone/.next/static/chunks/0fc2a7130f591324.js +1 -0
- package/assets/standalone/.next/static/chunks/37a97314f1b17b22.js +1 -0
- package/assets/standalone/.next/static/chunks/45475654848dd556.js +1 -0
- package/assets/standalone/.next/static/chunks/6049e484c84c341e.js +1 -0
- package/assets/standalone/.next/static/chunks/7a046386767828e7.js +4 -0
- package/assets/standalone/.next/static/chunks/7fd5fd158118e843.js +3 -0
- package/assets/standalone/.next/static/chunks/84a96b6d1f18f7b2.js +1 -0
- package/assets/standalone/.next/static/chunks/9609f2e5c7c76a3e.js +1 -0
- package/assets/standalone/.next/static/chunks/97c295191089a1c2.js +1 -0
- package/assets/standalone/.next/static/chunks/a6dad97d9634a72d.js +1 -0
- package/assets/standalone/.next/static/chunks/aee6c7720838f8a2.js +1 -0
- package/assets/standalone/.next/static/chunks/b7a9e6ef231e2f28.js +1 -0
- package/assets/standalone/.next/static/chunks/c070cdf14f593154.js +1 -0
- package/assets/standalone/.next/static/chunks/cb4c7d89be14d280.js +1 -0
- package/assets/standalone/.next/static/chunks/d2be314c3ece3fbe.js +1 -0
- package/assets/standalone/.next/static/chunks/d61413cf4f8738b1.js +1 -0
- package/assets/standalone/.next/static/chunks/dbd7b157081058a6.js +1 -0
- package/assets/standalone/.next/static/chunks/e4aca2c4ff14a715.js +1 -0
- package/assets/standalone/.next/static/chunks/e62e0e2c8b367c21.css +1 -0
- package/assets/standalone/.next/static/chunks/ed79e3f8aab4a1ea.js +2 -0
- package/assets/standalone/.next/static/chunks/ed89f0fc8882380f.js +1 -0
- package/assets/standalone/.next/static/chunks/f091501564eb2ea3.js +4 -0
- package/assets/standalone/.next/static/chunks/ff1a16fafef87110.js +1 -0
- package/assets/standalone/.next/static/chunks/turbopack-3c0c6df5293bf0da.js +4 -0
- package/assets/standalone/.next/static/media/icon.112bf269.png +0 -0
- package/assets/standalone/CONTRIBUTING.md +84 -0
- package/assets/standalone/LICENSE +42 -0
- package/assets/standalone/README.md +2111 -0
- package/assets/standalone/node_modules/@next/env/dist/index.js +1 -0
- package/assets/standalone/node_modules/@next/env/package.json +36 -0
- package/assets/standalone/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +6 -0
- package/assets/standalone/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +38 -0
- package/assets/standalone/node_modules/@swc/helpers/package.json +471 -0
- package/assets/standalone/node_modules/client-only/index.js +0 -0
- package/assets/standalone/node_modules/client-only/package.json +19 -0
- package/assets/standalone/node_modules/next/dist/build/adapter/build-complete.js +993 -0
- package/assets/standalone/node_modules/next/dist/build/after-production-compile.js +95 -0
- package/assets/standalone/node_modules/next/dist/build/analysis/extract-const-value.js +205 -0
- package/assets/standalone/node_modules/next/dist/build/analysis/get-page-static-info.js +601 -0
- package/assets/standalone/node_modules/next/dist/build/analysis/parse-module.js +20 -0
- package/assets/standalone/node_modules/next/dist/build/analyze/index.js +242 -0
- package/assets/standalone/node_modules/next/dist/build/babel/loader/get-config.js +429 -0
- package/assets/standalone/node_modules/next/dist/build/babel/loader/index.js +56 -0
- package/assets/standalone/node_modules/next/dist/build/babel/loader/transform.js +103 -0
- package/assets/standalone/node_modules/next/dist/build/babel/loader/util.js +20 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/commonjs.js +42 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/jsx-pragma.js +74 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/next-font-unsupported.js +36 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/next-page-config.js +104 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/next-page-disallow-re-export-all-exports.js +29 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/next-ssg-transform.js +345 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/optimize-hook-destructuring.js +60 -0
- package/assets/standalone/node_modules/next/dist/build/babel/plugins/react-loadable-plugin.js +145 -0
- package/assets/standalone/node_modules/next/dist/build/babel/preset.js +250 -0
- package/assets/standalone/node_modules/next/dist/build/build-context.js +58 -0
- package/assets/standalone/node_modules/next/dist/build/collect-build-traces.js +536 -0
- package/assets/standalone/node_modules/next/dist/build/compiler.js +88 -0
- package/assets/standalone/node_modules/next/dist/build/create-compiler-aliases.js +436 -0
- package/assets/standalone/node_modules/next/dist/build/define-env.js +237 -0
- package/assets/standalone/node_modules/next/dist/build/duration-to-string.js +99 -0
- package/assets/standalone/node_modules/next/dist/build/entries.js +798 -0
- package/assets/standalone/node_modules/next/dist/build/generate-build-id.js +31 -0
- package/assets/standalone/node_modules/next/dist/build/generate-routes-manifest.js +91 -0
- package/assets/standalone/node_modules/next/dist/build/get-babel-config-file.js +35 -0
- package/assets/standalone/node_modules/next/dist/build/get-babel-loader-config.js +109 -0
- package/assets/standalone/node_modules/next/dist/build/get-static-info-including-layouts.js +81 -0
- package/assets/standalone/node_modules/next/dist/build/handle-entrypoints.js +176 -0
- package/assets/standalone/node_modules/next/dist/build/handle-externals.js +290 -0
- package/assets/standalone/node_modules/next/dist/build/index.js +2683 -0
- package/assets/standalone/node_modules/next/dist/build/is-writeable.js +26 -0
- package/assets/standalone/node_modules/next/dist/build/jest/__mocks__/empty.js +10 -0
- package/assets/standalone/node_modules/next/dist/build/jest/__mocks__/fileMock.js +15 -0
- package/assets/standalone/node_modules/next/dist/build/jest/__mocks__/nextFontMock.js +20 -0
- package/assets/standalone/node_modules/next/dist/build/jest/__mocks__/styleMock.js +10 -0
- package/assets/standalone/node_modules/next/dist/build/jest/jest.js +227 -0
- package/assets/standalone/node_modules/next/dist/build/jest/object-proxy.js +50 -0
- package/assets/standalone/node_modules/next/dist/build/load-entrypoint.js +30 -0
- package/assets/standalone/node_modules/next/dist/build/load-jsconfig.js +162 -0
- package/assets/standalone/node_modules/next/dist/build/lockfile.js +160 -0
- package/assets/standalone/node_modules/next/dist/build/manifests/formatter/format-manifest.js +19 -0
- package/assets/standalone/node_modules/next/dist/build/next-config-ts/require-hook.js +85 -0
- package/assets/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +172 -0
- package/assets/standalone/node_modules/next/dist/build/next-dir-paths.js +37 -0
- package/assets/standalone/node_modules/next/dist/build/normalize-catchall-routes.js +76 -0
- package/assets/standalone/node_modules/next/dist/build/output/format.js +84 -0
- package/assets/standalone/node_modules/next/dist/build/output/index.js +186 -0
- package/assets/standalone/node_modules/next/dist/build/output/log.js +135 -0
- package/assets/standalone/node_modules/next/dist/build/output/store.js +204 -0
- package/assets/standalone/node_modules/next/dist/build/page-extensions-type.js +6 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/fetch/index.js +6 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/fetch/whatwg-fetch.js +7 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/object-assign.js +6 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/object.assign/auto.js +4 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/object.assign/implementation.js +4 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/object.assign/index.js +19 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/object.assign/polyfill.js +6 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/object.assign/shim.js +6 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/polyfill-module.js +1 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/polyfill-nomodule.js +1 -0
- package/assets/standalone/node_modules/next/dist/build/polyfills/process.js +5 -0
- package/assets/standalone/node_modules/next/dist/build/preview-key-utils.js +91 -0
- package/assets/standalone/node_modules/next/dist/build/progress.js +151 -0
- package/assets/standalone/node_modules/next/dist/build/rendering-mode.js +26 -0
- package/assets/standalone/node_modules/next/dist/build/segment-config/app/app-segment-config.js +145 -0
- package/assets/standalone/node_modules/next/dist/build/segment-config/app/app-segments.js +137 -0
- package/assets/standalone/node_modules/next/dist/build/segment-config/app/collect-root-param-keys.js +52 -0
- package/assets/standalone/node_modules/next/dist/build/segment-config/middleware/middleware-config.js +121 -0
- package/assets/standalone/node_modules/next/dist/build/segment-config/pages/pages-segment-config.js +62 -0
- package/assets/standalone/node_modules/next/dist/build/sort-by-page-exts.js +30 -0
- package/assets/standalone/node_modules/next/dist/build/spinner.js +138 -0
- package/assets/standalone/node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js +137 -0
- package/assets/standalone/node_modules/next/dist/build/static-paths/app.js +682 -0
- package/assets/standalone/node_modules/next/dist/build/static-paths/pages.js +169 -0
- package/assets/standalone/node_modules/next/dist/build/static-paths/types.js +6 -0
- package/assets/standalone/node_modules/next/dist/build/static-paths/utils.js +119 -0
- package/assets/standalone/node_modules/next/dist/build/swc/helpers.js +15 -0
- package/assets/standalone/node_modules/next/dist/build/swc/index.js +1271 -0
- package/assets/standalone/node_modules/next/dist/build/swc/install-bindings.js +30 -0
- package/assets/standalone/node_modules/next/dist/build/swc/jest-transformer.js +75 -0
- package/assets/standalone/node_modules/next/dist/build/swc/options.js +386 -0
- package/assets/standalone/node_modules/next/dist/build/swc/types.js +6 -0
- package/assets/standalone/node_modules/next/dist/build/templates/app-page.js +1073 -0
- package/assets/standalone/node_modules/next/dist/build/templates/app-route.js +420 -0
- package/assets/standalone/node_modules/next/dist/build/templates/edge-app-route.js +85 -0
- package/assets/standalone/node_modules/next/dist/build/templates/edge-ssr-app.js +311 -0
- package/assets/standalone/node_modules/next/dist/build/templates/edge-ssr.js +335 -0
- package/assets/standalone/node_modules/next/dist/build/templates/edge-wrapper.js +24 -0
- package/assets/standalone/node_modules/next/dist/build/templates/helpers.js +36 -0
- package/assets/standalone/node_modules/next/dist/build/templates/middleware.js +115 -0
- package/assets/standalone/node_modules/next/dist/build/templates/pages-api.js +194 -0
- package/assets/standalone/node_modules/next/dist/build/templates/pages-edge-api.js +39 -0
- package/assets/standalone/node_modules/next/dist/build/templates/pages.js +155 -0
- package/assets/standalone/node_modules/next/dist/build/turbopack-analyze/index.js +116 -0
- package/assets/standalone/node_modules/next/dist/build/turbopack-build/impl.js +244 -0
- package/assets/standalone/node_modules/next/dist/build/turbopack-build/index.js +85 -0
- package/assets/standalone/node_modules/next/dist/build/turborepo-access-trace/env.js +29 -0
- package/assets/standalone/node_modules/next/dist/build/turborepo-access-trace/helpers.js +104 -0
- package/assets/standalone/node_modules/next/dist/build/turborepo-access-trace/index.js +30 -0
- package/assets/standalone/node_modules/next/dist/build/turborepo-access-trace/result.js +51 -0
- package/assets/standalone/node_modules/next/dist/build/turborepo-access-trace/tcp.js +41 -0
- package/assets/standalone/node_modules/next/dist/build/turborepo-access-trace/types.js +8 -0
- package/assets/standalone/node_modules/next/dist/build/type-check.js +151 -0
- package/assets/standalone/node_modules/next/dist/build/utils.js +1261 -0
- package/assets/standalone/node_modules/next/dist/build/validate-app-paths.js +242 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/alias/react-dom-server-experimental.js +32 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/alias/react-dom-server.js +32 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/cache-invalidation.js +91 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/base.js +82 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/index.js +562 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/client.js +49 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/file-resolve.js +21 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/getCssModuleLocalIdent.js +37 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/global.js +65 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/index.js +22 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/modules.js +86 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/loaders/next-font.js +62 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/messages.js +45 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/css/plugins.js +190 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/images/index.js +42 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/blocks/images/messages.js +16 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/helpers.js +78 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/index.js +46 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/config/utils.js +13 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/CssSyntaxError.js +32 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/camelcase.js +93 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js +287 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/index.js +36 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-icss-parser.js +105 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-import-parser.js +220 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-url-parser.js +307 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js +83 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/getUrl.js +23 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/css-loader/src/utils.js +459 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/devtool/devtool-style-inject.js +129 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/empty-loader.js +14 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/error-loader.js +36 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/get-module-build-info.js +15 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/codegen.js +156 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/index.js +27 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/interface.js +17 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/loader.js +429 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/minify.js +94 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/utils.js +58 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/metadata/discover.js +122 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/metadata/resolve-route-data.js +171 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/metadata/types.js +7 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/modularize-import-loader.js +39 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-app-loader/create-app-route-code.js +65 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js +765 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-barrel-loader.js +268 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader.js +37 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-edge-app-route-loader/index.js +51 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-edge-function-loader.js +52 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-edge-ssr-loader/index.js +93 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-error-browser-binary-loader.js +21 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-action-entry-loader.js +32 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js +45 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-client-module-loader.js +49 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-css-loader.js +56 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-client-wrapper.js +33 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-loader/action-validate.js +27 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-loader/cache-wrapper.js +13 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js +211 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js +14 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-loader/server-reference.js +13 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-loader/track-dynamic-import.js +13 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-flight-server-reference-proxy-loader.js +29 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-font-loader/index.js +133 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-font-loader/postcss-next-font.js +169 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-image-loader/blur.js +73 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-image-loader/index.js +80 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-invalid-import-error-loader.js +28 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-metadata-image-loader.js +158 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js +342 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-middleware-asset-loader.js +46 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js +59 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-middleware-wasm-loader.js +46 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-root-params-loader.js +164 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js +141 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-style-loader/index.js +220 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoLinkTag.js +61 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/injectStylesIntoStyleTag.js +221 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-style-loader/runtime/isEqualLocals.js +27 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/next-swc-loader.js +241 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/Error.js +40 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/Warning.js +35 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js +125 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/utils.js +86 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/index.js +101 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/file-protocol.js +78 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/join-function.js +190 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/postcss.js +92 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/value-processor.js +97 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/loaders/utils.js +100 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin-utils.js +79 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin.js +183 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/copy-file-plugin.js +67 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/css-chunking-plugin.js +277 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/css-minimizer-plugin.js +92 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/devtools-ignore-list-plugin.js +78 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/eval-source-map-dev-tool-plugin.js +191 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/flight-client-entry-plugin.js +793 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.js +420 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/force-complete-runtime.js +42 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/jsconfig-paths-plugin.js +219 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/memory-with-gc-cache-plugin.js +114 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/middleware-plugin.js +614 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/mini-css-extract-plugin.js +24 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/minify-webpack-plugin/src/index.js +188 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.js +120 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/next-trace-entrypoints-plugin.js +542 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/next-types-plugin/index.js +428 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/next-types-plugin/shared.js +14 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/nextjs-require-cache-hot-reloader.js +57 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/optional-peer-dependency-resolve-plugin.js +45 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.js +146 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/profiling-plugin.js +282 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/react-loadable-plugin.js +169 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/rspack-flight-client-entry-plugin.js +97 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/rspack-profiling-plugin.js +62 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/slow-module-detection-plugin.js +190 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.js +62 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.js +188 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/update-telemetry-loader-context-from-swc.js +28 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.js +43 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/getModuleTrace.js +89 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js +43 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parse-dynamic-code-evaluation-error.js +19 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseBabel.js +29 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseCss.js +29 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextAppLoaderError.js +26 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextFontError.js +33 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextInvalidImportError.js +26 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js +166 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseScss.js +42 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/simpleWebpackError.js +18 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/webpackModuleError.js +138 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/stringify-request.js +15 -0
- package/assets/standalone/node_modules/next/dist/build/webpack/utils.js +109 -0
- package/assets/standalone/node_modules/next/dist/build/webpack-build/impl.js +381 -0
- package/assets/standalone/node_modules/next/dist/build/webpack-build/index.js +179 -0
- package/assets/standalone/node_modules/next/dist/build/webpack-config-rules/resolve.js +55 -0
- package/assets/standalone/node_modules/next/dist/build/webpack-config.js +2343 -0
- package/assets/standalone/node_modules/next/dist/build/worker.js +35 -0
- package/assets/standalone/node_modules/next/dist/build/write-build-id.js +19 -0
- package/assets/standalone/node_modules/next/dist/cli/next-test.js +169 -0
- package/assets/standalone/node_modules/next/dist/client/add-base-path.js +24 -0
- package/assets/standalone/node_modules/next/dist/client/app-build-id.js +49 -0
- package/assets/standalone/node_modules/next/dist/client/app-call-server.js +34 -0
- package/assets/standalone/node_modules/next/dist/client/app-find-source-map-url.js +38 -0
- package/assets/standalone/node_modules/next/dist/client/assign-location.js +29 -0
- package/assets/standalone/node_modules/next/dist/client/components/app-router-announcer.js +78 -0
- package/assets/standalone/node_modules/next/dist/client/components/app-router-headers.js +128 -0
- package/assets/standalone/node_modules/next/dist/client/components/app-router-instance.js +319 -0
- package/assets/standalone/node_modules/next/dist/client/components/app-router-utils.js +62 -0
- package/assets/standalone/node_modules/next/dist/client/components/app-router.js +495 -0
- package/assets/standalone/node_modules/next/dist/client/components/builtin/default.js +35 -0
- package/assets/standalone/node_modules/next/dist/client/components/builtin/global-error.js +82 -0
- package/assets/standalone/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js +52 -0
- package/assets/standalone/node_modules/next/dist/client/components/error-boundary.js +134 -0
- package/assets/standalone/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js +86 -0
- package/assets/standalone/node_modules/next/dist/client/components/errors/root-error-boundary.js +41 -0
- package/assets/standalone/node_modules/next/dist/client/components/forbidden.js +48 -0
- package/assets/standalone/node_modules/next/dist/client/components/handle-isr-error.js +31 -0
- package/assets/standalone/node_modules/next/dist/client/components/hooks-server-context.js +42 -0
- package/assets/standalone/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js +125 -0
- package/assets/standalone/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js +72 -0
- package/assets/standalone/node_modules/next/dist/client/components/is-next-router-error.js +23 -0
- package/assets/standalone/node_modules/next/dist/client/components/links.js +292 -0
- package/assets/standalone/node_modules/next/dist/client/components/match-segments.js +32 -0
- package/assets/standalone/node_modules/next/dist/client/components/nav-failure-handler.js +61 -0
- package/assets/standalone/node_modules/next/dist/client/components/navigation-devtools.js +126 -0
- package/assets/standalone/node_modules/next/dist/client/components/navigation-untracked.js +65 -0
- package/assets/standalone/node_modules/next/dist/client/components/navigation.js +198 -0
- package/assets/standalone/node_modules/next/dist/client/components/navigation.react-server.js +72 -0
- package/assets/standalone/node_modules/next/dist/client/components/not-found.js +42 -0
- package/assets/standalone/node_modules/next/dist/client/components/readonly-url-search-params.js +41 -0
- package/assets/standalone/node_modules/next/dist/client/components/redirect-boundary.js +107 -0
- package/assets/standalone/node_modules/next/dist/client/components/redirect-error.js +52 -0
- package/assets/standalone/node_modules/next/dist/client/components/redirect-status-code.js +24 -0
- package/assets/standalone/node_modules/next/dist/client/components/redirect.js +91 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +128 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js +21 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +59 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js +32 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +340 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/handle-mutable.js +66 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +51 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +1129 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +64 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js +38 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js +23 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +168 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +68 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +78 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +292 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +56 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js +61 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer.js +66 -0
- package/assets/standalone/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js +60 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/cache-key.js +28 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/cache-map.js +305 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/cache.js +1432 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/lru.js +145 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/navigation.js +459 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/prefetch.js +31 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/scheduler.js +1150 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/types.js +69 -0
- package/assets/standalone/node_modules/next/dist/client/components/segment-cache/vary-path.js +216 -0
- package/assets/standalone/node_modules/next/dist/client/components/static-generation-bailout.js +42 -0
- package/assets/standalone/node_modules/next/dist/client/components/unauthorized.js +49 -0
- package/assets/standalone/node_modules/next/dist/client/components/unrecognized-action-error.js +39 -0
- package/assets/standalone/node_modules/next/dist/client/components/unresolved-thenable.js +23 -0
- package/assets/standalone/node_modules/next/dist/client/components/unstable-rethrow.browser.js +28 -0
- package/assets/standalone/node_modules/next/dist/client/components/unstable-rethrow.js +25 -0
- package/assets/standalone/node_modules/next/dist/client/components/unstable-rethrow.server.js +32 -0
- package/assets/standalone/node_modules/next/dist/client/components/use-action-queue.js +102 -0
- package/assets/standalone/node_modules/next/dist/client/dev/debug-channel.js +72 -0
- package/assets/standalone/node_modules/next/dist/client/flight-data-helpers.js +219 -0
- package/assets/standalone/node_modules/next/dist/client/has-base-path.js +23 -0
- package/assets/standalone/node_modules/next/dist/client/lib/console.js +177 -0
- package/assets/standalone/node_modules/next/dist/client/normalize-trailing-slash.js +36 -0
- package/assets/standalone/node_modules/next/dist/client/remove-base-path.js +32 -0
- package/assets/standalone/node_modules/next/dist/client/route-params.js +230 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js +339 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/cookies/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/ponyfill/index.js +46 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/ponyfill/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/abort-controller.js.text.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/console.js.text.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/events.js.text.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/index.js +5 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js +18713 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/stream.js +44 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/timers.js.text.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/url.js.text.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@hapi/accept/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@hapi/accept/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@napi-rs/triples/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@napi-rs/triples/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@opentelemetry/api/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/@opentelemetry/api/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/async-retry/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/async-retry/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/async-sema/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/async-sema/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/babel/code-frame.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/babel/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/babel-code-frame/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/babel-code-frame/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/busboy/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/busboy/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/bytes/index.js +8 -0
- package/assets/standalone/node_modules/next/dist/compiled/bytes/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/ci-info/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/ci-info/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/commander/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/commander/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/comment-json/index.js +7 -0
- package/assets/standalone/node_modules/next/dist/compiled/comment-json/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/compression/index.js +58 -0
- package/assets/standalone/node_modules/next/dist/compiled/compression/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/conf/index.js +15 -0
- package/assets/standalone/node_modules/next/dist/compiled/conf/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/content-disposition/index.js +6 -0
- package/assets/standalone/node_modules/next/dist/compiled/content-disposition/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/cookie/index.js +7 -0
- package/assets/standalone/node_modules/next/dist/compiled/cookie/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/cross-spawn/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/cross-spawn/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/debug/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/debug/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/edge-runtime/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/edge-runtime/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/find-up/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/find-up/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/fresh/index.js +8 -0
- package/assets/standalone/node_modules/next/dist/compiled/fresh/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/http-proxy/index.js +34 -0
- package/assets/standalone/node_modules/next/dist/compiled/http-proxy/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/image-detector/detector.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/image-size/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/image-size/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/ipaddr.js/ipaddr.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/ipaddr.js/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/is-animated/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/is-animated/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/is-docker/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/is-docker/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/is-wsl/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/is-wsl/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/jsonwebtoken/index.js +11 -0
- package/assets/standalone/node_modules/next/dist/compiled/jsonwebtoken/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/nanoid/index.cjs +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/nanoid/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +24 -0
- package/assets/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +24 -0
- package/assets/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +6 -0
- package/assets/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +20 -0
- package/assets/standalone/node_modules/next/dist/compiled/p-limit/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/p-limit/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/p-queue/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/p-queue/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/path-browserify/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/path-browserify/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/path-to-regexp/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/path-to-regexp/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/picomatch/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/picomatch/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/react-is/cjs/react-is.development.js +133 -0
- package/assets/standalone/node_modules/next/dist/compiled/react-is/cjs/react-is.production.js +130 -0
- package/assets/standalone/node_modules/next/dist/compiled/react-is/index.js +7 -0
- package/assets/standalone/node_modules/next/dist/compiled/react-is/package.json +26 -0
- package/assets/standalone/node_modules/next/dist/compiled/regenerator-runtime/package.json +19 -0
- package/assets/standalone/node_modules/next/dist/compiled/regenerator-runtime/runtime.js +729 -0
- package/assets/standalone/node_modules/next/dist/compiled/semver/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/semver/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/send/index.js +70 -0
- package/assets/standalone/node_modules/next/dist/compiled/send/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/source-map/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/source-map/source-map.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/stacktrace-parser/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/string-hash/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/string-hash/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/strip-ansi/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/strip-ansi/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/superstruct/index.cjs +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/superstruct/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/tar/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/tar/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/text-table/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/text-table/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/watchpack/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/watchpack/watchpack.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/ws/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/ws/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/zod/index.cjs +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/zod/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/zod-validation-error/index.js +1 -0
- package/assets/standalone/node_modules/next/dist/compiled/zod-validation-error/package.json +1 -0
- package/assets/standalone/node_modules/next/dist/experimental/testmode/context.js +57 -0
- package/assets/standalone/node_modules/next/dist/experimental/testmode/fetch.js +142 -0
- package/assets/standalone/node_modules/next/dist/experimental/testmode/httpget.js +26 -0
- package/assets/standalone/node_modules/next/dist/experimental/testmode/server-edge.js +32 -0
- package/assets/standalone/node_modules/next/dist/experimental/testmode/server.js +62 -0
- package/assets/standalone/node_modules/next/dist/export/helpers/create-incremental-cache.js +61 -0
- package/assets/standalone/node_modules/next/dist/lib/batcher.js +65 -0
- package/assets/standalone/node_modules/next/dist/lib/build-custom-route.js +46 -0
- package/assets/standalone/node_modules/next/dist/lib/bundler.js +97 -0
- package/assets/standalone/node_modules/next/dist/lib/client-and-server-references.js +54 -0
- package/assets/standalone/node_modules/next/dist/lib/coalesced-function.js +39 -0
- package/assets/standalone/node_modules/next/dist/lib/compile-error.js +14 -0
- package/assets/standalone/node_modules/next/dist/lib/constants.js +405 -0
- package/assets/standalone/node_modules/next/dist/lib/create-client-router-filter.js +67 -0
- package/assets/standalone/node_modules/next/dist/lib/default-transpiled-packages.json +1 -0
- package/assets/standalone/node_modules/next/dist/lib/detached-promise.js +32 -0
- package/assets/standalone/node_modules/next/dist/lib/detect-typo.js +51 -0
- package/assets/standalone/node_modules/next/dist/lib/download-swc.js +183 -0
- package/assets/standalone/node_modules/next/dist/lib/error-telemetry-utils.js +42 -0
- package/assets/standalone/node_modules/next/dist/lib/fallback.js +100 -0
- package/assets/standalone/node_modules/next/dist/lib/fatal-error.js +14 -0
- package/assets/standalone/node_modules/next/dist/lib/file-exists.js +53 -0
- package/assets/standalone/node_modules/next/dist/lib/find-config.js +102 -0
- package/assets/standalone/node_modules/next/dist/lib/find-pages-dir.js +65 -0
- package/assets/standalone/node_modules/next/dist/lib/find-root.js +122 -0
- package/assets/standalone/node_modules/next/dist/lib/format-cli-help-output.js +84 -0
- package/assets/standalone/node_modules/next/dist/lib/format-dynamic-import-path.js +24 -0
- package/assets/standalone/node_modules/next/dist/lib/format-server-error.js +74 -0
- package/assets/standalone/node_modules/next/dist/lib/framework/boundary-components.js +62 -0
- package/assets/standalone/node_modules/next/dist/lib/framework/boundary-constants.js +36 -0
- package/assets/standalone/node_modules/next/dist/lib/fs/rename.js +87 -0
- package/assets/standalone/node_modules/next/dist/lib/fs/write-atomic.js +28 -0
- package/assets/standalone/node_modules/next/dist/lib/generate-interception-routes-rewrites.js +69 -0
- package/assets/standalone/node_modules/next/dist/lib/get-files-in-dir.js +33 -0
- package/assets/standalone/node_modules/next/dist/lib/get-network-host.js +44 -0
- package/assets/standalone/node_modules/next/dist/lib/get-package-version.js +118 -0
- package/assets/standalone/node_modules/next/dist/lib/get-project-dir.js +51 -0
- package/assets/standalone/node_modules/next/dist/lib/has-necessary-dependencies.js +49 -0
- package/assets/standalone/node_modules/next/dist/lib/helpers/get-cache-directory.js +66 -0
- package/assets/standalone/node_modules/next/dist/lib/helpers/get-npx-command.js +29 -0
- package/assets/standalone/node_modules/next/dist/lib/helpers/get-online.js +50 -0
- package/assets/standalone/node_modules/next/dist/lib/helpers/get-pkg-manager.js +63 -0
- package/assets/standalone/node_modules/next/dist/lib/helpers/get-registry.js +45 -0
- package/assets/standalone/node_modules/next/dist/lib/helpers/get-reserved-port.js +116 -0
- package/assets/standalone/node_modules/next/dist/lib/helpers/install.js +83 -0
- package/assets/standalone/node_modules/next/dist/lib/import-next-warning.js +50 -0
- package/assets/standalone/node_modules/next/dist/lib/inline-static-env.js +112 -0
- package/assets/standalone/node_modules/next/dist/lib/install-dependencies.js +40 -0
- package/assets/standalone/node_modules/next/dist/lib/interop-default.js +15 -0
- package/assets/standalone/node_modules/next/dist/lib/is-api-route.js +15 -0
- package/assets/standalone/node_modules/next/dist/lib/is-app-page-route.js +15 -0
- package/assets/standalone/node_modules/next/dist/lib/is-app-route-route.js +15 -0
- package/assets/standalone/node_modules/next/dist/lib/is-edge-runtime.js +16 -0
- package/assets/standalone/node_modules/next/dist/lib/is-error.js +78 -0
- package/assets/standalone/node_modules/next/dist/lib/is-internal-component.js +36 -0
- package/assets/standalone/node_modules/next/dist/lib/is-serializable-props.js +106 -0
- package/assets/standalone/node_modules/next/dist/lib/known-edge-safe-packages.json +1 -0
- package/assets/standalone/node_modules/next/dist/lib/load-custom-routes.js +550 -0
- package/assets/standalone/node_modules/next/dist/lib/memory/gc-observer.js +53 -0
- package/assets/standalone/node_modules/next/dist/lib/memory/shutdown.js +29 -0
- package/assets/standalone/node_modules/next/dist/lib/memory/startup.js +47 -0
- package/assets/standalone/node_modules/next/dist/lib/memory/trace.js +109 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/constants.js +40 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/default-metadata.js +82 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/generate/alternate.js +55 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/generate/basic.js +307 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/generate/icon-mark.js +22 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/generate/icons.js +64 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/generate/meta.js +123 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/generate/opengraph.js +478 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/generate/utils.js +52 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/get-metadata-route.js +114 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/is-metadata-route.js +221 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/metadata-context.js +18 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/metadata.js +243 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/resolve-metadata.js +859 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js +232 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js +56 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js +199 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-title.js +40 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-url.js +135 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/alternative-urls-types.js +7 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/extra-types.js +9 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/icons.js +6 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/manifest-types.js +6 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/metadata-interface.js +18 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/metadata-types.js +10 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/opengraph-types.js +6 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/resolvers.js +6 -0
- package/assets/standalone/node_modules/next/dist/lib/metadata/types/twitter-types.js +7 -0
- package/assets/standalone/node_modules/next/dist/lib/mime-type.js +20 -0
- package/assets/standalone/node_modules/next/dist/lib/mkcert.js +204 -0
- package/assets/standalone/node_modules/next/dist/lib/multi-file-writer.js +75 -0
- package/assets/standalone/node_modules/next/dist/lib/needs-experimental-react.js +16 -0
- package/assets/standalone/node_modules/next/dist/lib/non-nullable.js +15 -0
- package/assets/standalone/node_modules/next/dist/lib/normalize-path.js +21 -0
- package/assets/standalone/node_modules/next/dist/lib/oxford-comma-list.js +15 -0
- package/assets/standalone/node_modules/next/dist/lib/page-types.js +18 -0
- package/assets/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +185 -0
- package/assets/standalone/node_modules/next/dist/lib/pick.js +19 -0
- package/assets/standalone/node_modules/next/dist/lib/picocolors.js +177 -0
- package/assets/standalone/node_modules/next/dist/lib/pretty-bytes.js +74 -0
- package/assets/standalone/node_modules/next/dist/lib/realpath.js +20 -0
- package/assets/standalone/node_modules/next/dist/lib/recursive-copy.js +76 -0
- package/assets/standalone/node_modules/next/dist/lib/recursive-delete.js +137 -0
- package/assets/standalone/node_modules/next/dist/lib/recursive-readdir.js +124 -0
- package/assets/standalone/node_modules/next/dist/lib/redirect-status.js +46 -0
- package/assets/standalone/node_modules/next/dist/lib/require-instrumentation-client.js +26 -0
- package/assets/standalone/node_modules/next/dist/lib/resolve-build-paths.js +149 -0
- package/assets/standalone/node_modules/next/dist/lib/resolve-from.js +65 -0
- package/assets/standalone/node_modules/next/dist/lib/route-pattern-normalizer.js +107 -0
- package/assets/standalone/node_modules/next/dist/lib/scheduler.js +64 -0
- package/assets/standalone/node_modules/next/dist/lib/semver-noop.js +18 -0
- package/assets/standalone/node_modules/next/dist/lib/server-external-packages.jsonc +103 -0
- package/assets/standalone/node_modules/next/dist/lib/setup-exception-listeners.js +11 -0
- package/assets/standalone/node_modules/next/dist/lib/static-env.js +92 -0
- package/assets/standalone/node_modules/next/dist/lib/try-to-parse-path.js +68 -0
- package/assets/standalone/node_modules/next/dist/lib/turbopack-warning.js +186 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/diagnosticFormatter.js +240 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +73 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/getTypeScriptIntent.js +52 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/missingDependencyError.js +27 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/runTypeCheck.js +151 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/type-paths.js +56 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +65 -0
- package/assets/standalone/node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js +394 -0
- package/assets/standalone/node_modules/next/dist/lib/url.js +75 -0
- package/assets/standalone/node_modules/next/dist/lib/verify-partytown-setup.js +115 -0
- package/assets/standalone/node_modules/next/dist/lib/verify-root-layout.js +165 -0
- package/assets/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +178 -0
- package/assets/standalone/node_modules/next/dist/lib/wait.js +19 -0
- package/assets/standalone/node_modules/next/dist/lib/with-promise-cache.js +24 -0
- package/assets/standalone/node_modules/next/dist/lib/worker.js +223 -0
- package/assets/standalone/node_modules/next/dist/next-devtools/server/shared.js +61 -0
- package/assets/standalone/node_modules/next/dist/server/ReactDOMServerPages.js +16 -0
- package/assets/standalone/node_modules/next/dist/server/accept-header.js +132 -0
- package/assets/standalone/node_modules/next/dist/server/after/after-context.js +140 -0
- package/assets/standalone/node_modules/next/dist/server/after/after.js +26 -0
- package/assets/standalone/node_modules/next/dist/server/after/awaiter.js +74 -0
- package/assets/standalone/node_modules/next/dist/server/after/builtin-request-context.js +38 -0
- package/assets/standalone/node_modules/next/dist/server/after/index.js +21 -0
- package/assets/standalone/node_modules/next/dist/server/after/run-with-after.js +35 -0
- package/assets/standalone/node_modules/next/dist/server/api-utils/get-cookie-parser.js +22 -0
- package/assets/standalone/node_modules/next/dist/server/api-utils/index.js +201 -0
- package/assets/standalone/node_modules/next/dist/server/api-utils/node/api-resolver.js +395 -0
- package/assets/standalone/node_modules/next/dist/server/api-utils/node/parse-body.js +79 -0
- package/assets/standalone/node_modules/next/dist/server/api-utils/node/try-get-preview-data.js +86 -0
- package/assets/standalone/node_modules/next/dist/server/api-utils/web.js +17 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/action-async-storage-instance.js +14 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/action-async-storage.external.js +13 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/action-handler.js +952 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/after-task-async-storage-instance.js +14 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/after-task-async-storage.external.js +13 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +249 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/app-render-render-utils.js +112 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/app-render-scheduling.js +188 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/app-render.js +3526 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +76 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/cache-signal.js +181 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/collect-segment-data.js +276 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/console-async-storage-instance.js +14 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/console-async-storage.external.js +13 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/create-component-styles-and-scripts.js +33 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/create-component-tree.js +754 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/create-error-handler.js +187 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +76 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/csrf-protection.js +75 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js +14 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js +13 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +828 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/encryption-utils-server.js +114 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/encryption-utils.js +93 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/encryption.js +238 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/entry-base.js +237 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/flight-render-result.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/get-asset-query-string.js +29 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/get-css-inlined-link-tags.js +49 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/get-layer-assets.js +65 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/get-preloadable-fonts.js +39 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/get-script-nonce-from-header.js +44 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js +25 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/has-loading-component-in-tree.js +19 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/interop-default.js +17 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/make-get-server-inserted-html.js +92 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/manifests-singleton.js +257 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/module-loading/track-dynamic-import.js +57 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js +32 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js +66 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/parse-and-validate-flight-router-state.js +49 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/postponed-state.js +156 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/prospective-render-utils.js +73 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/react-large-shell-error.js +17 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/react-server.node.js +39 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/render-css-resource.js +52 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/required-scripts.js +76 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/rsc/postpone.js +18 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/rsc/preloads.js +74 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/rsc/taint.js +79 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/segment-explorer-path.js +103 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/server-inserted-html.js +77 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/staged-rendering.js +273 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/staged-validation.js +32 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/strip-flight-headers.js +18 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/types.js +59 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/use-flight-response.js +212 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +185 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/work-async-storage-instance.js +14 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/work-async-storage.external.js +13 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js +14 -0
- package/assets/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +252 -0
- package/assets/standalone/node_modules/next/dist/server/async-storage/draft-mode-provider.js +62 -0
- package/assets/standalone/node_modules/next/dist/server/async-storage/request-store.js +144 -0
- package/assets/standalone/node_modules/next/dist/server/async-storage/with-store.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/async-storage/work-store.js +94 -0
- package/assets/standalone/node_modules/next/dist/server/base-http/helpers.js +36 -0
- package/assets/standalone/node_modules/next/dist/server/base-http/index.js +54 -0
- package/assets/standalone/node_modules/next/dist/server/base-http/node.js +147 -0
- package/assets/standalone/node_modules/next/dist/server/base-http/web.js +124 -0
- package/assets/standalone/node_modules/next/dist/server/base-server.js +1862 -0
- package/assets/standalone/node_modules/next/dist/server/body-streams.js +114 -0
- package/assets/standalone/node_modules/next/dist/server/cache-dir.js +26 -0
- package/assets/standalone/node_modules/next/dist/server/capsize-font-metrics.json +181516 -0
- package/assets/standalone/node_modules/next/dist/server/ci-info.js +41 -0
- package/assets/standalone/node_modules/next/dist/server/client-component-renderer-logger.js +70 -0
- package/assets/standalone/node_modules/next/dist/server/config-schema.js +632 -0
- package/assets/standalone/node_modules/next/dist/server/config-shared.js +319 -0
- package/assets/standalone/node_modules/next/dist/server/config-utils.js +185 -0
- package/assets/standalone/node_modules/next/dist/server/config.js +1474 -0
- package/assets/standalone/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js +96 -0
- package/assets/standalone/node_modules/next/dist/server/crypto-utils.js +70 -0
- package/assets/standalone/node_modules/next/dist/server/dev/browser-logs/file-logger.js +183 -0
- package/assets/standalone/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +512 -0
- package/assets/standalone/node_modules/next/dist/server/dev/browser-logs/source-map.js +225 -0
- package/assets/standalone/node_modules/next/dist/server/dev/debug-channel.js +87 -0
- package/assets/standalone/node_modules/next/dist/server/dev/dev-indicator-server-state.js +15 -0
- package/assets/standalone/node_modules/next/dist/server/dev/get-source-map-from-file.js +100 -0
- package/assets/standalone/node_modules/next/dist/server/dev/hot-middleware.js +274 -0
- package/assets/standalone/node_modules/next/dist/server/dev/hot-reloader-rspack.js +171 -0
- package/assets/standalone/node_modules/next/dist/server/dev/hot-reloader-shared-utils.js +56 -0
- package/assets/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1247 -0
- package/assets/standalone/node_modules/next/dist/server/dev/hot-reloader-types.js +58 -0
- package/assets/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1382 -0
- package/assets/standalone/node_modules/next/dist/server/dev/log-requests.js +141 -0
- package/assets/standalone/node_modules/next/dist/server/dev/messages.js +74 -0
- package/assets/standalone/node_modules/next/dist/server/dev/middleware-turbopack.js +393 -0
- package/assets/standalone/node_modules/next/dist/server/dev/middleware-webpack.js +473 -0
- package/assets/standalone/node_modules/next/dist/server/dev/node-stack-frames.js +72 -0
- package/assets/standalone/node_modules/next/dist/server/dev/on-demand-entry-handler.js +704 -0
- package/assets/standalone/node_modules/next/dist/server/dev/parse-version-info.js +108 -0
- package/assets/standalone/node_modules/next/dist/server/dev/require-cache.js +49 -0
- package/assets/standalone/node_modules/next/dist/server/dev/serialized-errors.js +67 -0
- package/assets/standalone/node_modules/next/dist/server/dev/static-paths-worker.js +103 -0
- package/assets/standalone/node_modules/next/dist/server/dev/turbopack-utils.js +696 -0
- package/assets/standalone/node_modules/next/dist/server/dynamic-rendering-utils.js +86 -0
- package/assets/standalone/node_modules/next/dist/server/font-utils.js +43 -0
- package/assets/standalone/node_modules/next/dist/server/get-app-route-from-entrypoint.js +30 -0
- package/assets/standalone/node_modules/next/dist/server/get-page-files.js +23 -0
- package/assets/standalone/node_modules/next/dist/server/get-route-from-entrypoint.js +35 -0
- package/assets/standalone/node_modules/next/dist/server/htmlescape.js +37 -0
- package/assets/standalone/node_modules/next/dist/server/image-optimizer.js +1090 -0
- package/assets/standalone/node_modules/next/dist/server/instrumentation/types.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/instrumentation/utils.js +21 -0
- package/assets/standalone/node_modules/next/dist/server/internal-utils.js +39 -0
- package/assets/standalone/node_modules/next/dist/server/is-private-ip.js +36 -0
- package/assets/standalone/node_modules/next/dist/server/lib/app-dir-module.js +59 -0
- package/assets/standalone/node_modules/next/dist/server/lib/app-info-log.js +154 -0
- package/assets/standalone/node_modules/next/dist/server/lib/async-callback-set.js +29 -0
- package/assets/standalone/node_modules/next/dist/server/lib/cache-control.js +22 -0
- package/assets/standalone/node_modules/next/dist/server/lib/cache-handlers/default.external.js +18 -0
- package/assets/standalone/node_modules/next/dist/server/lib/cache-handlers/default.js +160 -0
- package/assets/standalone/node_modules/next/dist/server/lib/cache-handlers/types.js +8 -0
- package/assets/standalone/node_modules/next/dist/server/lib/chrome-devtools-workspace.js +116 -0
- package/assets/standalone/node_modules/next/dist/server/lib/clone-response.js +77 -0
- package/assets/standalone/node_modules/next/dist/server/lib/cpu-profile.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/lib/decode-query-path-parameter.js +26 -0
- package/assets/standalone/node_modules/next/dist/server/lib/dedupe-fetch.js +163 -0
- package/assets/standalone/node_modules/next/dist/server/lib/dev-bundler-service.js +95 -0
- package/assets/standalone/node_modules/next/dist/server/lib/etag.js +56 -0
- package/assets/standalone/node_modules/next/dist/server/lib/experimental/create-env-definitions.js +48 -0
- package/assets/standalone/node_modules/next/dist/server/lib/experimental/ppr.js +47 -0
- package/assets/standalone/node_modules/next/dist/server/lib/find-page-file.js +127 -0
- package/assets/standalone/node_modules/next/dist/server/lib/fix-mojibake.js +25 -0
- package/assets/standalone/node_modules/next/dist/server/lib/format-hostname.js +16 -0
- package/assets/standalone/node_modules/next/dist/server/lib/i18n-provider.js +129 -0
- package/assets/standalone/node_modules/next/dist/server/lib/implicit-tags.js +77 -0
- package/assets/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +333 -0
- package/assets/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +479 -0
- package/assets/standalone/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +40 -0
- package/assets/standalone/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +73 -0
- package/assets/standalone/node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js +55 -0
- package/assets/standalone/node_modules/next/dist/server/lib/is-ipv6.js +41 -0
- package/assets/standalone/node_modules/next/dist/server/lib/lazy-result.js +46 -0
- package/assets/standalone/node_modules/next/dist/server/lib/lru-cache.js +183 -0
- package/assets/standalone/node_modules/next/dist/server/lib/match-next-data-pathname.js +18 -0
- package/assets/standalone/node_modules/next/dist/server/lib/mock-request.js +416 -0
- package/assets/standalone/node_modules/next/dist/server/lib/module-loader/module-loader.js +8 -0
- package/assets/standalone/node_modules/next/dist/server/lib/module-loader/node-module-loader.js +25 -0
- package/assets/standalone/node_modules/next/dist/server/lib/module-loader/route-module-loader.js +26 -0
- package/assets/standalone/node_modules/next/dist/server/lib/node-fs-methods.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/lib/parse-stack.js +46 -0
- package/assets/standalone/node_modules/next/dist/server/lib/patch-fetch.js +945 -0
- package/assets/standalone/node_modules/next/dist/server/lib/patch-set-header.js +38 -0
- package/assets/standalone/node_modules/next/dist/server/lib/render-server.js +152 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-server.js +672 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site.js +76 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/build-data-route.js +48 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.js +50 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/cache-life-type-utils.js +211 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/decode-path-params.js +42 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/filesystem.js +590 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +89 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js +96 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/is-postpone.js +16 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/proxy-request.js +118 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +608 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +286 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/router-server-context.js +26 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/typegen.js +613 -0
- package/assets/standalone/node_modules/next/dist/server/lib/router-utils/types.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/lib/server-action-request-meta.js +53 -0
- package/assets/standalone/node_modules/next/dist/server/lib/server-ipc/utils.js +80 -0
- package/assets/standalone/node_modules/next/dist/server/lib/source-maps.js +196 -0
- package/assets/standalone/node_modules/next/dist/server/lib/start-server.js +460 -0
- package/assets/standalone/node_modules/next/dist/server/lib/streaming-metadata.js +38 -0
- package/assets/standalone/node_modules/next/dist/server/lib/to-route.js +37 -0
- package/assets/standalone/node_modules/next/dist/server/lib/trace/constants.js +203 -0
- package/assets/standalone/node_modules/next/dist/server/lib/trace/tracer.js +270 -0
- package/assets/standalone/node_modules/next/dist/server/lib/trace/utils.js +16 -0
- package/assets/standalone/node_modules/next/dist/server/lib/types.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/lib/utils.js +249 -0
- package/assets/standalone/node_modules/next/dist/server/lib/worker-utils.js +36 -0
- package/assets/standalone/node_modules/next/dist/server/load-components.js +177 -0
- package/assets/standalone/node_modules/next/dist/server/load-default-error-components.js +41 -0
- package/assets/standalone/node_modules/next/dist/server/load-manifest.external.js +97 -0
- package/assets/standalone/node_modules/next/dist/server/match-bundle.js +25 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/get-mcp-middleware.js +49 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/get-or-create-mcp-server.js +41 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/mcp-telemetry-tracker.js +82 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/get-errors.js +107 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/get-logs.js +61 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/get-page-metadata.js +180 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/get-project-metadata.js +55 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/get-routes.js +171 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/get-server-action-by-id.js +113 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/next-instance-error-state.js +31 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/utils/browser-communication.js +90 -0
- package/assets/standalone/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +147 -0
- package/assets/standalone/node_modules/next/dist/server/next-server.js +1459 -0
- package/assets/standalone/node_modules/next/dist/server/next-typescript.js +13 -0
- package/assets/standalone/node_modules/next/dist/server/next.js +452 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-baseline.js +25 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +246 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/console-exit.js +49 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/console-file.js +56 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/date.js +52 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/error-inspect.js +8 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +570 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/global-behaviors.js +33 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/node-crypto.js +103 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/random.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.js +489 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/utils.js +186 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment-extensions/web-crypto.js +45 -0
- package/assets/standalone/node_modules/next/dist/server/node-environment.js +19 -0
- package/assets/standalone/node_modules/next/dist/server/node-polyfill-crypto.js +21 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/absolute-filename-normalizer.js +33 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/app/app-bundle-path-normalizer.js +54 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/app/app-filename-normalizer.js +22 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/app/app-page-normalizer.js +40 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/app/app-pathname-normalizer.js +55 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/app/index.js +42 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/pages/index.js +44 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-bundle-path-normalizer.js +55 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-filename-normalizer.js +22 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-page-normalizer.js +19 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-pathname-normalizer.js +19 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/locale-route-normalizer.js +26 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/normalizer.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/normalizers.js +23 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/prefixing-normalizer.js +26 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/request/base-path.js +25 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/request/next-data.js +38 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/request/pathname-normalizer.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/request/prefix.js +39 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/request/rsc.js +19 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.js +32 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/request/suffix.js +27 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/underscore-normalizer.js +17 -0
- package/assets/standalone/node_modules/next/dist/server/normalizers/wrap-normalizer-fn.js +17 -0
- package/assets/standalone/node_modules/next/dist/server/og/image-response.js +53 -0
- package/assets/standalone/node_modules/next/dist/server/patch-error-inspect.js +436 -0
- package/assets/standalone/node_modules/next/dist/server/pipe-readable.js +140 -0
- package/assets/standalone/node_modules/next/dist/server/post-process.js +39 -0
- package/assets/standalone/node_modules/next/dist/server/render-result.js +195 -0
- package/assets/standalone/node_modules/next/dist/server/render.js +1138 -0
- package/assets/standalone/node_modules/next/dist/server/request/connection.js +111 -0
- package/assets/standalone/node_modules/next/dist/server/request/cookies.js +220 -0
- package/assets/standalone/node_modules/next/dist/server/request/draft-mode.js +207 -0
- package/assets/standalone/node_modules/next/dist/server/request/fallback-params.js +69 -0
- package/assets/standalone/node_modules/next/dist/server/request/headers.js +219 -0
- package/assets/standalone/node_modules/next/dist/server/request/params.js +415 -0
- package/assets/standalone/node_modules/next/dist/server/request/pathname.js +104 -0
- package/assets/standalone/node_modules/next/dist/server/request/root-params.js +157 -0
- package/assets/standalone/node_modules/next/dist/server/request/search-params.js +432 -0
- package/assets/standalone/node_modules/next/dist/server/request/utils.js +51 -0
- package/assets/standalone/node_modules/next/dist/server/request-meta.js +55 -0
- package/assets/standalone/node_modules/next/dist/server/require-hook.js +71 -0
- package/assets/standalone/node_modules/next/dist/server/require.js +109 -0
- package/assets/standalone/node_modules/next/dist/server/response-cache/index.js +311 -0
- package/assets/standalone/node_modules/next/dist/server/response-cache/types.js +41 -0
- package/assets/standalone/node_modules/next/dist/server/response-cache/utils.js +103 -0
- package/assets/standalone/node_modules/next/dist/server/response-cache/web.js +101 -0
- package/assets/standalone/node_modules/next/dist/server/resume-data-cache/cache-store.js +84 -0
- package/assets/standalone/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +115 -0
- package/assets/standalone/node_modules/next/dist/server/revalidation-utils.js +152 -0
- package/assets/standalone/node_modules/next/dist/server/route-definitions/app-page-route-definition.js +16 -0
- package/assets/standalone/node_modules/next/dist/server/route-definitions/app-route-route-definition.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-definitions/locale-route-definition.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-definitions/pages-api-route-definition.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-definitions/pages-route-definition.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-definitions/route-definition.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-kind.js +32 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-managers/default-route-matcher-manager.js +239 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-managers/dev-route-matcher-manager.js +120 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +55 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/app-route-route-matcher-provider.js +43 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +90 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-route-route-matcher-provider.js +112 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-api-route-matcher-provider.js +77 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-route-matcher-provider.js +77 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/file-cache-route-matcher-provider.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/batched-file-reader.js +106 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/default-file-reader.js +42 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/file-reader.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/cached-route-matcher-provider.js +30 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/manifest-loader.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/node-manifest-loader.js +34 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/server-manifest-loader.js +20 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/manifest-route-matcher-provider.js +21 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/pages-api-route-matcher-provider.js +55 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/pages-route-matcher-provider.js +64 -0
- package/assets/standalone/node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matchers/app-page-route-matcher.js +18 -0
- package/assets/standalone/node_modules/next/dist/server/route-matchers/app-route-route-matcher.js +15 -0
- package/assets/standalone/node_modules/next/dist/server/route-matchers/locale-route-matcher.js +68 -0
- package/assets/standalone/node_modules/next/dist/server/route-matchers/pages-api-route-matcher.js +30 -0
- package/assets/standalone/node_modules/next/dist/server/route-matchers/pages-route-matcher.js +30 -0
- package/assets/standalone/node_modules/next/dist/server/route-matchers/route-matcher.js +54 -0
- package/assets/standalone/node_modules/next/dist/server/route-matches/app-page-route-match.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matches/app-route-route-match.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matches/locale-route-match.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matches/pages-api-route-match.js +16 -0
- package/assets/standalone/node_modules/next/dist/server/route-matches/pages-route-match.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-matches/route-match.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +48 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/module.compiled.js +36 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/module.js +132 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/module.render.js +24 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.js +87 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/image-config-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/router-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.js +140 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-server.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-static.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.js +125 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom-server.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/auto-implement-methods.js +85 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/clean-url.js +24 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/get-pathname-from-absolute-path.js +29 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/is-static-gen-enabled.js +15 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/parsed-url-query-to-params.js +20 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/module.compiled.js +36 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/module.js +889 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/app-route/shared-modules.js +56 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/checks.js +45 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/builtin/_error.js +100 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/module.compiled.js +20 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/module.js +92 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/module.render.js +24 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +522 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/app-router-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.js +102 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/head-manager-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/hooks-client-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/html-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/image-config-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/router-context.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/server-inserted-html.js +4 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js +20 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/pages-api/module.js +58 -0
- package/assets/standalone/node_modules/next/dist/server/route-modules/route-module.js +597 -0
- package/assets/standalone/node_modules/next/dist/server/runtime-reacts.external.js +46 -0
- package/assets/standalone/node_modules/next/dist/server/send-payload.js +88 -0
- package/assets/standalone/node_modules/next/dist/server/send-response.js +70 -0
- package/assets/standalone/node_modules/next/dist/server/serve-static.js +66 -0
- package/assets/standalone/node_modules/next/dist/server/server-route-utils.js +30 -0
- package/assets/standalone/node_modules/next/dist/server/server-utils.js +323 -0
- package/assets/standalone/node_modules/next/dist/server/setup-http-agent-env.js +31 -0
- package/assets/standalone/node_modules/next/dist/server/stream-utils/encoded-tags.js +114 -0
- package/assets/standalone/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +737 -0
- package/assets/standalone/node_modules/next/dist/server/stream-utils/uint8array-helpers.js +69 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/constant.js +97 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/index.js +199 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/rules/client-boundary.js +97 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/rules/config.js +501 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/rules/entry.js +149 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/rules/error.js +38 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/rules/metadata.js +234 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/rules/server-boundary.js +115 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/rules/server.js +79 -0
- package/assets/standalone/node_modules/next/dist/server/typescript/utils.js +212 -0
- package/assets/standalone/node_modules/next/dist/server/use-cache/cache-life.js +161 -0
- package/assets/standalone/node_modules/next/dist/server/use-cache/cache-tag.js +50 -0
- package/assets/standalone/node_modules/next/dist/server/use-cache/constants.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/use-cache/handlers.js +121 -0
- package/assets/standalone/node_modules/next/dist/server/use-cache/use-cache-errors.js +36 -0
- package/assets/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1336 -0
- package/assets/standalone/node_modules/next/dist/server/utils.js +73 -0
- package/assets/standalone/node_modules/next/dist/server/web/adapter.js +388 -0
- package/assets/standalone/node_modules/next/dist/server/web/edge-route-module-wrapper.js +122 -0
- package/assets/standalone/node_modules/next/dist/server/web/error.js +54 -0
- package/assets/standalone/node_modules/next/dist/server/web/exports/index.js +56 -0
- package/assets/standalone/node_modules/next/dist/server/web/get-edge-preview-props.js +23 -0
- package/assets/standalone/node_modules/next/dist/server/web/globals.js +128 -0
- package/assets/standalone/node_modules/next/dist/server/web/http.js +39 -0
- package/assets/standalone/node_modules/next/dist/server/web/internal-edge-wait-until.js +64 -0
- package/assets/standalone/node_modules/next/dist/server/web/next-url.js +195 -0
- package/assets/standalone/node_modules/next/dist/server/web/sandbox/context.js +462 -0
- package/assets/standalone/node_modules/next/dist/server/web/sandbox/fetch-inline-assets.js +35 -0
- package/assets/standalone/node_modules/next/dist/server/web/sandbox/index.js +28 -0
- package/assets/standalone/node_modules/next/dist/server/web/sandbox/resource-managers.js +88 -0
- package/assets/standalone/node_modules/next/dist/server/web/sandbox/sandbox.js +134 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/adapters/headers.js +192 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js +142 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js +30 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js +211 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/cookies.js +29 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/fetch-event.js +98 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/image-response.js +22 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/request.js +99 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/response.js +136 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/revalidate.js +206 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/unstable-cache.js +284 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/unstable-no-store.js +49 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/url-pattern.js +14 -0
- package/assets/standalone/node_modules/next/dist/server/web/spec-extension/user-agent.js +46 -0
- package/assets/standalone/node_modules/next/dist/server/web/types.js +6 -0
- package/assets/standalone/node_modules/next/dist/server/web/utils.js +151 -0
- package/assets/standalone/node_modules/next/dist/server/web/web-on-close.js +87 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/action-revalidation-kind.js +31 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js +50 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/app-router-types.js +27 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/constants.js +448 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/deep-freeze.js +30 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/deployment-id.js +36 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/dset.js +34 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/encode-uri-path.js +15 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/entry-constants.js +36 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/error-source.js +36 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +39 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/errors/constants.js +19 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/errors/empty-generate-static-params-error.js +24 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/errors/hard-deprecated-config-error.js +20 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/escape-regexp.js +22 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/get-hostname.js +23 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/hash.js +42 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js +18 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/head.js +163 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js +60 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/html-context.shared-runtime.js +40 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js +25 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/i18n/get-locale-redirect.js +59 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js +54 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/image-blur-svg.js +22 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js +19 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/image-config.js +75 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/invariant-error.js +18 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/is-internal.js +39 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/is-plain-object.js +42 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/is-thenable.js +20 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/isomorphic/path.js +14 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js +37 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/loadable-context.shared-runtime.js +19 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/loadable.shared-runtime.js +246 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/magic-identifier.js +218 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/match-local-pattern.js +46 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/match-remote-pattern.js +63 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/modern-browserslist-target.js +15 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/no-fallback-error.external.js +18 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/normalized-asset-prefix.js +28 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/absolute-path-to-page.js +26 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js +18 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js +18 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/get-page-paths.js +40 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/normalize-data-path.js +23 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/normalize-page-path.js +26 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js +19 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/page-path/remove-page-path-tail.js +20 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/promise-with-resolvers.js +26 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/adapters.js +136 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/routes/app.js +122 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/add-locale.js +28 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js +20 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js +20 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +51 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/as-path-to-search-params.js +17 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js +24 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js +16 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js +27 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/format-url.js +111 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +167 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js +52 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/get-route-from-asset-path.js +25 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/get-segment-param.js +90 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/html-bots.js +17 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/index.js +30 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js +33 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/interception-routes.js +108 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/is-bot.js +57 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js +26 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.js +31 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js +29 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/parse-path.js +33 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +36 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/parse-url.js +32 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js +20 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/path-match.js +49 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js +292 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/querystring.js +79 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/relativize-url.js +40 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js +39 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js +21 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js +116 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/route-match-utils.js +113 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/route-matcher.js +45 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/route-regex.js +256 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js +244 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/router-context.shared-runtime.js +18 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/segment-cache/output-export-prefetch-encoding.js +52 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js +99 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/segment.js +102 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.js +35 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/server-reference-info.js +52 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/side-effect.js +63 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/size-limit.js +35 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/turbopack/internal-error.js +53 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/turbopack/utils.js +279 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/utils/warn-once.js +22 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/utils.js +207 -0
- package/assets/standalone/node_modules/next/dist/shared/lib/zod.js +101 -0
- package/assets/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +89 -0
- package/assets/standalone/node_modules/next/dist/telemetry/detached-flush.js +56 -0
- package/assets/standalone/node_modules/next/dist/telemetry/events/build.js +174 -0
- package/assets/standalone/node_modules/next/dist/telemetry/events/index.js +41 -0
- package/assets/standalone/node_modules/next/dist/telemetry/events/plugins.js +51 -0
- package/assets/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +55 -0
- package/assets/standalone/node_modules/next/dist/telemetry/events/version.js +66 -0
- package/assets/standalone/node_modules/next/dist/telemetry/flush-telemetry.js +19 -0
- package/assets/standalone/node_modules/next/dist/telemetry/post-telemetry-payload.js +48 -0
- package/assets/standalone/node_modules/next/dist/telemetry/project-id.js +48 -0
- package/assets/standalone/node_modules/next/dist/telemetry/storage.js +301 -0
- package/assets/standalone/node_modules/next/dist/trace/index.js +54 -0
- package/assets/standalone/node_modules/next/dist/trace/report/index.js +37 -0
- package/assets/standalone/node_modules/next/dist/trace/report/to-json-build.js +137 -0
- package/assets/standalone/node_modules/next/dist/trace/report/to-json.js +151 -0
- package/assets/standalone/node_modules/next/dist/trace/report/to-telemetry.js +36 -0
- package/assets/standalone/node_modules/next/dist/trace/shared.js +39 -0
- package/assets/standalone/node_modules/next/dist/trace/trace.js +197 -0
- package/assets/standalone/node_modules/next/package.json +380 -0
- package/assets/standalone/node_modules/react/cjs/react-compiler-runtime.production.js +16 -0
- package/assets/standalone/node_modules/react/cjs/react-jsx-dev-runtime.production.js +14 -0
- package/assets/standalone/node_modules/react/cjs/react-jsx-runtime.production.js +34 -0
- package/assets/standalone/node_modules/react/cjs/react.production.js +542 -0
- package/assets/standalone/node_modules/react/compiler-runtime.js +14 -0
- package/assets/standalone/node_modules/react/index.js +7 -0
- package/assets/standalone/node_modules/react/jsx-dev-runtime.js +7 -0
- package/assets/standalone/node_modules/react/jsx-runtime.js +7 -0
- package/assets/standalone/node_modules/react/package.json +51 -0
- package/assets/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +6603 -0
- package/assets/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +6692 -0
- package/assets/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +7410 -0
- package/assets/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +7512 -0
- package/assets/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +7707 -0
- package/assets/standalone/node_modules/react-dom/cjs/react-dom.production.js +210 -0
- package/assets/standalone/node_modules/react-dom/index.js +38 -0
- package/assets/standalone/node_modules/react-dom/package.json +117 -0
- package/assets/standalone/node_modules/react-dom/server.browser.js +16 -0
- package/assets/standalone/node_modules/react-dom/server.edge.js +17 -0
- package/assets/standalone/node_modules/react-dom/server.node.js +18 -0
- package/assets/standalone/node_modules/react-dom/static.node.js +14 -0
- package/assets/standalone/node_modules/styled-jsx/dist/index/index.js +499 -0
- package/assets/standalone/node_modules/styled-jsx/index.js +1 -0
- package/assets/standalone/node_modules/styled-jsx/package.json +132 -0
- package/assets/standalone/node_modules/styled-jsx/style.js +1 -0
- package/assets/standalone/package.json +93 -0
- package/assets/standalone/public/exospheresmall-dark.png +0 -0
- package/assets/standalone/public/exospheresmall.png +0 -0
- package/assets/standalone/server.js +38 -0
- package/bin/claudeye +0 -0
- package/package.json +21 -0
|
@@ -0,0 +1,2111 @@
|
|
|
1
|
+
```
|
|
2
|
+
____ _ _
|
|
3
|
+
/ ___| | __ _ _ _ __| | ___ _ _ ___
|
|
4
|
+
| | | |/ _` | | | |/ _` |/ _ \ | | |/ _ \
|
|
5
|
+
| |___| | (_| | |_| | (_| | __/ |_| | __/
|
|
6
|
+
\____|_|\__,_|\__,_|\__,_|\___|\__, |\___|
|
|
7
|
+
|___/
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
# Claudeye: Watchtower for Claude Code and Claude Agents SDK
|
|
11
|
+
|
|
12
|
+
**Uncover** what your agents did.
|
|
13
|
+
**Understand** where they struggle.
|
|
14
|
+
**Utilize** insights to improve.
|
|
15
|
+
|
|
16
|
+
[](https://www.npmjs.com/package/claudeye)
|
|
17
|
+
[](https://www.npmjs.com/package/claudeye)
|
|
18
|
+
[](https://nodejs.org)
|
|
19
|
+
[](https://www.typescriptlang.org/)
|
|
20
|
+
[](https://discord.com/invite/zT92CAgvkj)
|
|
21
|
+
|
|
22
|
+
## Table of Contents
|
|
23
|
+
|
|
24
|
+
- [What is Claudeye?](#what-is-claudeye)
|
|
25
|
+
- [Quick Start](#quick-start)
|
|
26
|
+
- [Why Claudeye?](#why-claudeye)
|
|
27
|
+
- [Features](#features)
|
|
28
|
+
- [CLI Reference](#cli-reference)
|
|
29
|
+
- [Custom Evals & Enrichments](#custom-evals--enrichments)
|
|
30
|
+
- [API Reference](#api-reference)
|
|
31
|
+
- [`createApp()`](#createapp)
|
|
32
|
+
- [`app.condition(fn)`](#appconditionfn)
|
|
33
|
+
- [`app.queueCondition(fn, options?)`](#appqueueconditionfn-options)
|
|
34
|
+
- [`app.eval(name, fn, options?)`](#appevalname-fn-options)
|
|
35
|
+
- [`app.enrich(name, fn, options?)`](#appenrichname-fn-options)
|
|
36
|
+
- [`app.action(name, fn, options?)`](#appactionname-fn-options)
|
|
37
|
+
- [`app.alert(name, fn, options?)`](#appalertname-fn-options)
|
|
38
|
+
- [`app.dashboard.view(name, options?)`](#appdashboardviewname-options)
|
|
39
|
+
- [`app.dashboard.filter(name, fn, options?)`](#appdashboardfiltername-fn-options)
|
|
40
|
+
- [`app.dashboard.filter({ preBuilt })`](#appdashboardfilter-prebuilt-)
|
|
41
|
+
- [`app.dashboard.aggregate(name, definition, options?)`](#appdashboardaggregatename-definition-options)
|
|
42
|
+
- [`app.auth(options)`](#appauthoptions)
|
|
43
|
+
- [`app.listen(port?, options?)`](#applistenport-options)
|
|
44
|
+
- [Subagent Scope](#subagent-scope)
|
|
45
|
+
- [Evaluation Order](#evaluation-order)
|
|
46
|
+
- [UI Behavior](#ui-behavior)
|
|
47
|
+
- [Types](#types)
|
|
48
|
+
- [Examples](#examples)
|
|
49
|
+
- [Basic Evals & Enrichments](#example-basic-evals--enrichments)
|
|
50
|
+
- [Dashboard Filters](#example-dashboard-filters)
|
|
51
|
+
- [Multi-View Dashboard](#example-multi-view-dashboard)
|
|
52
|
+
- [Eval Score Filters (cachedOnly)](#example-eval-score-filters-cachedonly)
|
|
53
|
+
- [Actions](#example-actions)
|
|
54
|
+
- [Alerts](#example-alerts)
|
|
55
|
+
- [Minimal Filters Only](#example-minimal-filters-only)
|
|
56
|
+
- [Background Queue Processing](#background-queue-processing)
|
|
57
|
+
- [Caching](#caching)
|
|
58
|
+
- [Authentication](#authentication)
|
|
59
|
+
- [Deployment with PM2](#deployment-with-pm2)
|
|
60
|
+
- [How It Works](#how-it-works)
|
|
61
|
+
- [Community](#community)
|
|
62
|
+
- [License](#license)
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## What is Claudeye?
|
|
67
|
+
|
|
68
|
+
One command. Full visibility into every Claude agent session.
|
|
69
|
+
|
|
70
|
+
Claudeye lets you replay agent executions, grade them with custom evals, and surface exactly where reliability breaks down, across both Claude Code and the Agents SDK. Deploy it locally or on your infrastructure. No setup, no config, just `claudeye` and you're in.
|
|
71
|
+
|
|
72
|
+
## Quick Start
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npm install -g claudeye && claudeye
|
|
76
|
+
# or: bun install -g claudeye && claudeye
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Opens your browser at `localhost:8020`. Reads from `~/.claude/projects` by default.
|
|
80
|
+
|
|
81
|
+
Works with [Claude Code](https://docs.anthropic.com/en/docs/claude-code) sessions and [Claude Agents SDK](https://github.com/anthropics/anthropic-sdk-python) logs.
|
|
82
|
+
|
|
83
|
+
> **Note:** Claudeye is distributed as a compiled native binary per platform. When you install `claudeye`, npm automatically pulls the correct platform-specific package (`@claudeye/linux-x64`, `@claudeye/darwin-arm64`, etc.) as an optional dependency. Node.js >= 20.9.0 must be available on PATH for the dashboard server.
|
|
84
|
+
|
|
85
|
+
## Why Claudeye?
|
|
86
|
+
|
|
87
|
+
| Feature | Claudeye | Langfuse | Dev-Agent-Lens | ccusage | Raw JSONL |
|
|
88
|
+
|---------|:--------:|:--------:|:--------------:|:-------:|:---------:|
|
|
89
|
+
| Local-first (no cloud) | **Yes** | Self-host option | Proxy required | Yes | Yes |
|
|
90
|
+
| Session replay | **Yes** | Traces only | Traces only | No | Manual |
|
|
91
|
+
| Custom evals | **Yes** | Limited | No | No | No |
|
|
92
|
+
| Subagent expansion | **Yes** | No | No | No | No |
|
|
93
|
+
| Zero config | **Yes** | Setup required | Proxy setup | Yes | N/A |
|
|
94
|
+
| Visual dashboard | **Yes** | Yes | Yes (Phoenix) | CLI only | No |
|
|
95
|
+
|
|
96
|
+
## Features
|
|
97
|
+
|
|
98
|
+
### Uncover
|
|
99
|
+
|
|
100
|
+
- **Projects & sessions browser** - filter by date range or keyword, paginated and sorted newest-first
|
|
101
|
+
- **Full execution trace viewer** - every message, tool call, thinking block, and system event
|
|
102
|
+
- **Nested subagent logs** - expand to see subagent executions inline, pre-loaded with the session
|
|
103
|
+
- **Virtual scrolling** - handles sessions with thousands of entries without performance issues
|
|
104
|
+
|
|
105
|
+
### Understand
|
|
106
|
+
|
|
107
|
+
- **Session stats bar** - turns, tool calls, subagents, duration, and models at a glance
|
|
108
|
+
- **Custom evals** - grade sessions with pass/fail results and 0-1 scores
|
|
109
|
+
- **Per-eval recompute** - re-run a single eval without reprocessing all others
|
|
110
|
+
- **Conditional evals** - gate evals globally or per-item, with session/subagent scope control
|
|
111
|
+
|
|
112
|
+
### Utilize
|
|
113
|
+
|
|
114
|
+
- **Custom enrichments** - compute metadata (token counts, quality signals, labels) as key-value pairs
|
|
115
|
+
- **Custom actions** - on-demand tasks triggered from the dashboard via `app.action()` — generate summaries, export metrics, or run side-effects with full access to eval and enrichment results
|
|
116
|
+
- **Alerts** - register callbacks via `app.alert()` that fire after all evals and enrichments complete (Slack webhooks, CI notifications, logging)
|
|
117
|
+
- **Dashboard views & filters** - organize filters into named views, each with focused filter tiles (boolean toggles, range sliders, multi-select dropdowns) and a filterable sessions table
|
|
118
|
+
- **Dashboard aggregates** - define cross-session summary tables with `app.dashboard.aggregate()`, using `{ collect, reduce }` for full control over output
|
|
119
|
+
- **Unified queue** - all evals and enrichments (session, subagent, UI, background) go through a single priority queue with bounded concurrency, live tracking at `/queue`
|
|
120
|
+
- **JSONL export** - download raw session logs
|
|
121
|
+
- **Auto-refresh** - monitor live sessions at 5s, 10s, or 30s intervals
|
|
122
|
+
- **Light/dark theme** - with system preference detection
|
|
123
|
+
|
|
124
|
+
## CLI Reference
|
|
125
|
+
|
|
126
|
+
| Flag | Description | Default |
|
|
127
|
+
|------|-------------|---------|
|
|
128
|
+
| `--projects-path, -p <path>` | Path to Claude projects directory | `~/.claude/projects` |
|
|
129
|
+
| `--port <number>` | Port to bind | `8020` |
|
|
130
|
+
| `--host <address>` | Host to bind (`0.0.0.0` for LAN) | `localhost` |
|
|
131
|
+
| `--evals <path>` | Path to evals/enrichments file | - |
|
|
132
|
+
| `--auth-user <user:pass>` | Add an auth user (repeatable) | - |
|
|
133
|
+
| `--cache-path <path>` | Custom cache directory | `~/.claudeye/cache` |
|
|
134
|
+
| `--cache-clear` | Clear all cached results and exit | - |
|
|
135
|
+
| `--no-open` | Don't auto-open the browser | - |
|
|
136
|
+
| `--queue-interval <secs>` | Background scan interval in seconds | disabled |
|
|
137
|
+
| `--queue-concurrency <num>` | Max parallel items per batch | `2` |
|
|
138
|
+
| `--queue-history-ttl <secs>` | Seconds to keep completed items | `3600` |
|
|
139
|
+
| `--max-queue-items <num>` | Max items to enqueue per scan (0=unlimited) | `500` |
|
|
140
|
+
| `--logging <level>` | Log level: `info`, `warn`, `error` | `warn` |
|
|
141
|
+
| `-h, --help` | Show help | - |
|
|
142
|
+
|
|
143
|
+
### CLI Examples
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
# Custom projects path
|
|
147
|
+
claudeye --projects-path /path/to/projects
|
|
148
|
+
|
|
149
|
+
# Different port, no browser
|
|
150
|
+
claudeye --port 3000 --no-open
|
|
151
|
+
|
|
152
|
+
# LAN access
|
|
153
|
+
claudeye --host 0.0.0.0
|
|
154
|
+
|
|
155
|
+
# Load custom evals and enrichments
|
|
156
|
+
claudeye --evals ./my-evals.js
|
|
157
|
+
|
|
158
|
+
# Password-protect the dashboard
|
|
159
|
+
claudeye --auth-user admin:secret
|
|
160
|
+
|
|
161
|
+
# Multiple auth users
|
|
162
|
+
claudeye --auth-user admin:secret --auth-user viewer:readonly
|
|
163
|
+
|
|
164
|
+
# Clear cached results
|
|
165
|
+
claudeye --cache-clear
|
|
166
|
+
|
|
167
|
+
# Enable background queue processing (scan every 60 seconds)
|
|
168
|
+
claudeye --evals ./my-evals.js --queue-interval 60
|
|
169
|
+
|
|
170
|
+
# Background processing with higher concurrency
|
|
171
|
+
claudeye --evals ./my-evals.js --queue-interval 30 --queue-concurrency 5
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Custom Evals & Enrichments
|
|
175
|
+
|
|
176
|
+
Define evals and enrichments in a single JS file and load with `--evals`:
|
|
177
|
+
|
|
178
|
+
```js
|
|
179
|
+
import { createApp } from 'claudeye';
|
|
180
|
+
|
|
181
|
+
const app = createApp();
|
|
182
|
+
|
|
183
|
+
// Evals: grade your sessions
|
|
184
|
+
app.eval('under-50-turns', ({ stats }) => ({
|
|
185
|
+
pass: stats.turnCount <= 50,
|
|
186
|
+
score: Math.max(0, 1 - stats.turnCount / 100),
|
|
187
|
+
message: `${stats.turnCount} turn(s)`,
|
|
188
|
+
}));
|
|
189
|
+
|
|
190
|
+
app.eval('tool-success', ({ entries }) => {
|
|
191
|
+
const results = entries.filter(e => e.type === 'tool_result');
|
|
192
|
+
const errors = results.filter(e => e.is_error);
|
|
193
|
+
const rate = results.length ? 1 - errors.length / results.length : 1;
|
|
194
|
+
return { pass: rate >= 0.9, score: rate };
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
// Enrichments: add metadata to sessions
|
|
198
|
+
app.enrich('session-summary', ({ entries, stats }) => ({
|
|
199
|
+
'Total Tokens': entries.reduce((s, e) => s + (e.usage?.total_tokens || 0), 0),
|
|
200
|
+
'Primary Model': stats.models[0] || 'unknown',
|
|
201
|
+
'Tool Calls': stats.toolCallCount,
|
|
202
|
+
}));
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
claudeye --evals ./my-evals.js
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## API Reference
|
|
212
|
+
|
|
213
|
+
> **Distribution note (v1.0.0+):** Claudeye is distributed as a compiled native binary. The `claudeye` npm package is a thin JS wrapper that proxies `createApp()` calls to the binary via JSON IPC. User-defined functions (eval closures, enrich callbacks, etc.) remain in your Node.js process — they are never serialized into the binary. The public API surface is identical to previous versions; no code changes are required.
|
|
214
|
+
|
|
215
|
+
### `createApp()`
|
|
216
|
+
|
|
217
|
+
Returns a `ClaudeyeApp` instance. All methods are chainable.
|
|
218
|
+
|
|
219
|
+
```ts
|
|
220
|
+
import { createApp } from 'claudeye';
|
|
221
|
+
const app = createApp();
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
### `app.condition(fn)`
|
|
227
|
+
|
|
228
|
+
Set a global condition that gates all evals, enrichments, and actions. Calling this multiple times replaces the previous condition.
|
|
229
|
+
|
|
230
|
+
```ts
|
|
231
|
+
app.condition(({ entries, stats, projectName, sessionId }) => boolean | Promise<boolean>);
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
If the global condition returns `false` (or throws), every registered eval, enrichment, and action is skipped.
|
|
235
|
+
|
|
236
|
+
#### Examples
|
|
237
|
+
|
|
238
|
+
```js
|
|
239
|
+
// Only run for sessions with actual content
|
|
240
|
+
app.condition(({ entries }) => entries.length > 0);
|
|
241
|
+
|
|
242
|
+
// Only run for non-test projects
|
|
243
|
+
app.condition(({ projectName }) => !projectName.includes('test'));
|
|
244
|
+
|
|
245
|
+
// Only run for sessions longer than 5 turns
|
|
246
|
+
app.condition(({ stats }) => stats.turnCount >= 5);
|
|
247
|
+
|
|
248
|
+
// Async condition
|
|
249
|
+
app.condition(async ({ sessionId }) => {
|
|
250
|
+
// You could check an external service, database, etc.
|
|
251
|
+
return sessionId !== 'skip-this-one';
|
|
252
|
+
});
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
#### Combining Global and Per-Item Conditions
|
|
256
|
+
|
|
257
|
+
Global and per-item conditions stack. The global condition runs first; if it passes, per-item conditions are checked individually:
|
|
258
|
+
|
|
259
|
+
```js
|
|
260
|
+
const app = createApp();
|
|
261
|
+
|
|
262
|
+
// Global: skip everything for empty sessions
|
|
263
|
+
app.condition(({ entries }) => entries.length > 0);
|
|
264
|
+
|
|
265
|
+
// Per-eval: only check turn count for sessions with tool calls
|
|
266
|
+
app.eval('efficient-tools',
|
|
267
|
+
({ stats }) => ({
|
|
268
|
+
pass: stats.toolCallCount <= stats.turnCount * 2,
|
|
269
|
+
score: Math.max(0, 1 - (stats.toolCallCount / (stats.turnCount * 4))),
|
|
270
|
+
}),
|
|
271
|
+
{ condition: ({ stats }) => stats.toolCallCount > 0 }
|
|
272
|
+
);
|
|
273
|
+
|
|
274
|
+
// Per-enrichment: only compute model info for sessions that used a model
|
|
275
|
+
app.enrich('model-info',
|
|
276
|
+
({ stats }) => ({
|
|
277
|
+
'Primary Model': stats.models[0] || 'unknown',
|
|
278
|
+
'Model Count': stats.models.length,
|
|
279
|
+
}),
|
|
280
|
+
{ condition: ({ stats }) => stats.models.length > 0 }
|
|
281
|
+
);
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
> **Note:** Calling `app.condition()` multiple times replaces the previous condition. Only the last one is active. The global condition applies to both evals and enrichments; there's no way to set separate global conditions for each.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
### `app.queueCondition(fn, options?)`
|
|
289
|
+
|
|
290
|
+
Set a condition that gates **background queue processing**. This is separate from `app.condition()` — it only affects the background scanner (`scanAndEnqueue`), not UI-triggered runs.
|
|
291
|
+
|
|
292
|
+
```ts
|
|
293
|
+
app.queueCondition(fn: ConditionFunction, options?: QueueConditionOptions): ClaudeyeApp;
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
If the queue condition returns `false` (or throws), the session is skipped entirely — no evals or enrichments are enqueued for that session during background scanning.
|
|
297
|
+
|
|
298
|
+
#### Options
|
|
299
|
+
|
|
300
|
+
| Option | Type | Default | Description |
|
|
301
|
+
|--------|------|---------|-------------|
|
|
302
|
+
| `cacheable` | `boolean` | `false` | When `true`, condition results are cached per-session with hash-based invalidation. When `false` (default), the condition is evaluated fresh every scan cycle. |
|
|
303
|
+
|
|
304
|
+
#### Caching
|
|
305
|
+
|
|
306
|
+
By default (`cacheable: false`), the condition is re-evaluated every scan cycle. This is safe for time-dependent or external-state-dependent conditions (e.g., business hours, feature flags).
|
|
307
|
+
|
|
308
|
+
When `cacheable: true`, condition results are cached per-session. The cache auto-invalidates when:
|
|
309
|
+
- The **session file changes** (new content → different `contentHash`)
|
|
310
|
+
- The **condition function is edited** (different `conditionCodeHash` via `fn.toString()` → SHA-256)
|
|
311
|
+
|
|
312
|
+
Use `cacheable: true` only when the condition depends solely on session data.
|
|
313
|
+
|
|
314
|
+
Log parsing is **lazy** — only triggered when the condition is actually evaluated (every cycle when non-cacheable, or on cache miss when cacheable). The parsed session data comes from `getCachedSessionLog()` which is itself LRU-cached in memory.
|
|
315
|
+
|
|
316
|
+
#### Examples
|
|
317
|
+
|
|
318
|
+
```js
|
|
319
|
+
// Only process sessions with actual content (evaluated fresh every cycle)
|
|
320
|
+
app.queueCondition(({ entries }) => entries.length > 5);
|
|
321
|
+
|
|
322
|
+
// Only process sessions from specific projects (safe to cache — depends only on session data)
|
|
323
|
+
app.queueCondition(({ projectName }) => projectName.startsWith('production'), { cacheable: true });
|
|
324
|
+
|
|
325
|
+
// Time-dependent condition — must not be cached
|
|
326
|
+
app.queueCondition(() => {
|
|
327
|
+
const hour = new Date().getHours();
|
|
328
|
+
return hour >= 9 && hour < 17; // business hours only
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
// Skip sessions that are too short to be meaningful (safe to cache)
|
|
332
|
+
app.queueCondition(({ stats }) => stats.turnCount >= 3, { cacheable: true });
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
#### Difference from `app.condition()`
|
|
336
|
+
|
|
337
|
+
| | `app.condition()` | `app.queueCondition()` |
|
|
338
|
+
|---|---|---|
|
|
339
|
+
| **Scope** | Gates all evals/enrichments/actions | Gates background queue only |
|
|
340
|
+
| **Affects UI runs** | Yes | No |
|
|
341
|
+
| **Affects background scanner** | No | Yes |
|
|
342
|
+
| **Caching** | No (re-evaluated each run) | Opt-in via `{ cacheable: true }` |
|
|
343
|
+
|
|
344
|
+
Both can be set simultaneously. `app.queueCondition()` acts as a pre-filter for the background scanner; sessions that pass then go through the normal `app.condition()` check when individual items execute.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
### `app.eval(name, fn, options?)`
|
|
349
|
+
|
|
350
|
+
Register an eval function. Evals grade sessions with a pass/fail result and an optional 0-1 score.
|
|
351
|
+
|
|
352
|
+
- **`name`** - unique string identifier for the eval
|
|
353
|
+
- **`fn`** - function receiving an `EvalContext` and returning an `EvalResult`
|
|
354
|
+
- **`options.condition`** - optional condition function to gate this eval
|
|
355
|
+
- **`options.scope`** - `'session'` (default), `'subagent'`, or `'both'`
|
|
356
|
+
- **`options.subagentType`** - only run for subagents of this type (e.g. `'Explore'`)
|
|
357
|
+
|
|
358
|
+
If a per-eval condition returns `false`, the eval is marked as **skipped** in the results panel. If the condition throws, the eval is marked as **errored** with the message `Condition error: <message>`.
|
|
359
|
+
|
|
360
|
+
#### `EvalResult`
|
|
361
|
+
|
|
362
|
+
```ts
|
|
363
|
+
interface EvalResult {
|
|
364
|
+
pass: boolean; // Did the eval pass?
|
|
365
|
+
score?: number; // 0-1, clamped automatically (default: 1.0)
|
|
366
|
+
message?: string; // Shown in the UI
|
|
367
|
+
metadata?: Record<string, unknown>; // Arbitrary data
|
|
368
|
+
}
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
#### Examples
|
|
372
|
+
|
|
373
|
+
```js
|
|
374
|
+
// Simple: check if session stayed under a turn budget
|
|
375
|
+
app.eval('under-50-turns', ({ stats }) => ({
|
|
376
|
+
pass: stats.turnCount <= 50,
|
|
377
|
+
score: Math.max(0, 1 - stats.turnCount / 100),
|
|
378
|
+
message: `${stats.turnCount} turn(s)`,
|
|
379
|
+
}));
|
|
380
|
+
|
|
381
|
+
// Check tool success rate
|
|
382
|
+
app.eval('tool-success-rate', ({ entries }) => {
|
|
383
|
+
const toolResults = entries.filter(e =>
|
|
384
|
+
e.type === 'user' &&
|
|
385
|
+
Array.isArray(e.message?.content) &&
|
|
386
|
+
e.message.content.some(b => b.type === 'tool_result')
|
|
387
|
+
);
|
|
388
|
+
const errors = toolResults.filter(e =>
|
|
389
|
+
e.message?.content?.some(b => b.is_error === true)
|
|
390
|
+
);
|
|
391
|
+
const rate = toolResults.length > 0
|
|
392
|
+
? 1 - (errors.length / toolResults.length)
|
|
393
|
+
: 1;
|
|
394
|
+
return {
|
|
395
|
+
pass: rate >= 0.9,
|
|
396
|
+
score: rate,
|
|
397
|
+
message: `${errors.length}/${toolResults.length} tool errors`,
|
|
398
|
+
};
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
// Check that the session ended with a text response
|
|
402
|
+
app.eval('has-completion', ({ entries }) => {
|
|
403
|
+
const lastAssistant = [...entries].reverse().find(e => e.type === 'assistant');
|
|
404
|
+
const hasText = lastAssistant?.message?.content?.some?.(b => b.type === 'text');
|
|
405
|
+
return {
|
|
406
|
+
pass: !!hasText,
|
|
407
|
+
score: hasText ? 1.0 : 0,
|
|
408
|
+
message: hasText ? 'Session completed with text response' : 'No final text response',
|
|
409
|
+
};
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
// With a per-eval condition: only run for longer sessions
|
|
413
|
+
app.eval('under-budget',
|
|
414
|
+
({ stats }) => ({
|
|
415
|
+
pass: stats.turnCount <= 30,
|
|
416
|
+
score: Math.max(0, 1 - stats.turnCount / 60),
|
|
417
|
+
message: `${stats.turnCount} turns`,
|
|
418
|
+
}),
|
|
419
|
+
{ condition: ({ stats }) => stats.turnCount >= 5 }
|
|
420
|
+
);
|
|
421
|
+
|
|
422
|
+
// Subagent-scoped eval
|
|
423
|
+
app.eval('explore-depth', ({ entries, source }) => {
|
|
424
|
+
const myEntries = entries.filter(e => e._source === source);
|
|
425
|
+
return {
|
|
426
|
+
pass: myEntries.length > 5,
|
|
427
|
+
score: Math.min(myEntries.length / 20, 1),
|
|
428
|
+
};
|
|
429
|
+
}, { scope: 'subagent', subagentType: 'Explore' });
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
### `app.enrich(name, fn, options?)`
|
|
435
|
+
|
|
436
|
+
Register an enricher function. Enrichments compute key-value metadata displayed in the dashboard.
|
|
437
|
+
|
|
438
|
+
- **`name`** - unique string identifier for the enricher
|
|
439
|
+
- **`fn`** - function receiving an `EvalContext` and returning a `Record<string, string | number | boolean>`
|
|
440
|
+
- **`options.condition`** - optional condition function to gate this enricher
|
|
441
|
+
- **`options.scope`** - `'session'` (default), `'subagent'`, or `'both'`
|
|
442
|
+
- **`options.subagentType`** - only run for subagents of this type (e.g. `'Explore'`)
|
|
443
|
+
|
|
444
|
+
#### `EnrichmentResult`
|
|
445
|
+
|
|
446
|
+
```ts
|
|
447
|
+
// Enrichers return a flat key-value map
|
|
448
|
+
type EnrichmentResult = Record<string, string | number | boolean>;
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
#### Examples
|
|
452
|
+
|
|
453
|
+
```js
|
|
454
|
+
// Session overview
|
|
455
|
+
app.enrich('overview', ({ stats }) => ({
|
|
456
|
+
'Turns': stats.turnCount,
|
|
457
|
+
'Tool Calls': stats.toolCallCount,
|
|
458
|
+
'Duration': stats.duration,
|
|
459
|
+
'Models': stats.models.join(', ') || 'none',
|
|
460
|
+
}));
|
|
461
|
+
|
|
462
|
+
// Token and cost breakdown
|
|
463
|
+
app.enrich('token-usage', ({ entries }) => {
|
|
464
|
+
const inputTokens = entries.reduce((s, e) => s + (e.usage?.input_tokens || 0), 0);
|
|
465
|
+
const outputTokens = entries.reduce((s, e) => s + (e.usage?.output_tokens || 0), 0);
|
|
466
|
+
return {
|
|
467
|
+
'Input Tokens': inputTokens,
|
|
468
|
+
'Output Tokens': outputTokens,
|
|
469
|
+
'Total Tokens': inputTokens + outputTokens,
|
|
470
|
+
'Est. Cost': `$${((inputTokens * 0.003 + outputTokens * 0.015) / 1000).toFixed(4)}`,
|
|
471
|
+
};
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
// Error analysis (only when errors exist)
|
|
475
|
+
app.enrich('error-analysis',
|
|
476
|
+
({ entries }) => {
|
|
477
|
+
const errors = entries.filter(e => e.is_error === true);
|
|
478
|
+
return {
|
|
479
|
+
'Total Errors': errors.length,
|
|
480
|
+
'Error Rate': `${((errors.length / entries.length) * 100).toFixed(1)}%`,
|
|
481
|
+
};
|
|
482
|
+
},
|
|
483
|
+
{ condition: ({ entries }) => entries.some(e => e.is_error === true) }
|
|
484
|
+
);
|
|
485
|
+
|
|
486
|
+
// Subagent info (only when subagents were spawned)
|
|
487
|
+
app.enrich('subagent-info',
|
|
488
|
+
({ entries, stats }) => {
|
|
489
|
+
const subagentEntries = entries.filter(e => e.type === 'assistant' && e.parentUuid);
|
|
490
|
+
return {
|
|
491
|
+
'Subagent Count': stats.subagentCount,
|
|
492
|
+
'Subagent Entries': subagentEntries.length,
|
|
493
|
+
};
|
|
494
|
+
},
|
|
495
|
+
{ condition: ({ stats }) => stats.subagentCount > 0 }
|
|
496
|
+
);
|
|
497
|
+
|
|
498
|
+
// Advanced metrics (async condition)
|
|
499
|
+
app.enrich('advanced-metrics',
|
|
500
|
+
({ entries }) => ({
|
|
501
|
+
'Entry Count': entries.length,
|
|
502
|
+
'Avg Entry Size': Math.round(
|
|
503
|
+
entries.reduce((s, e) => s + JSON.stringify(e).length, 0) / entries.length
|
|
504
|
+
),
|
|
505
|
+
}),
|
|
506
|
+
{
|
|
507
|
+
condition: async ({ entries }) => {
|
|
508
|
+
return entries.length > 10;
|
|
509
|
+
},
|
|
510
|
+
}
|
|
511
|
+
);
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
---
|
|
515
|
+
|
|
516
|
+
### `app.action(name, fn, options?)`
|
|
517
|
+
|
|
518
|
+
Register a user-defined action. Actions are a flexible primitive for on-demand tasks — generating summaries, exporting metrics, running side-effects, or anything else that doesn't fit the eval (pass/fail) or enrichment (key-value) model. Actions are never auto-run; they are triggered manually from the dashboard.
|
|
519
|
+
|
|
520
|
+
- **`name`** - unique string identifier for the action
|
|
521
|
+
- **`fn`** - function receiving an `ActionContext` and returning an `ActionResult`
|
|
522
|
+
- **`options.condition`** - optional condition function to gate this action
|
|
523
|
+
- **`options.scope`** - `'session'` (default), `'subagent'`, or `'both'`
|
|
524
|
+
- **`options.subagentType`** - only run for subagents of this type (e.g. `'Explore'`)
|
|
525
|
+
- **`options.cache`** - cache results (default: `true`). Set to `false` for side-effect actions that should always re-run.
|
|
526
|
+
|
|
527
|
+
#### `ActionContext`
|
|
528
|
+
|
|
529
|
+
Actions receive an extended context that includes cached eval and enrichment results:
|
|
530
|
+
|
|
531
|
+
```ts
|
|
532
|
+
interface ActionContext extends EvalContext {
|
|
533
|
+
evalResults: Record<string, EvalRunResult>; // Cached eval results for the session
|
|
534
|
+
enrichmentResults: Record<string, EnrichRunResult>; // Cached enrichment results
|
|
535
|
+
}
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
This means actions can build on prior analysis — check which evals passed, read enrichment data, and combine it with raw session data.
|
|
539
|
+
|
|
540
|
+
#### `ActionResult`
|
|
541
|
+
|
|
542
|
+
```ts
|
|
543
|
+
interface ActionResult {
|
|
544
|
+
output?: string; // Free-form text (rendered in monospace block with copy button)
|
|
545
|
+
status: 'success' | 'error'; // Action outcome
|
|
546
|
+
message?: string; // Short summary shown in the UI
|
|
547
|
+
}
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
Return `output` for text. The output is rendered in a scrollable monospace block with a copy-to-clipboard button. The `status` field determines the icon in the results panel.
|
|
551
|
+
|
|
552
|
+
#### Examples
|
|
553
|
+
|
|
554
|
+
```js
|
|
555
|
+
// Session summary: combine stats with eval results
|
|
556
|
+
app.action('session-summary', ({ stats, evalResults }) => {
|
|
557
|
+
const evalNames = Object.keys(evalResults);
|
|
558
|
+
const passCount = evalNames.filter(n => evalResults[n]?.pass).length;
|
|
559
|
+
return {
|
|
560
|
+
output: [
|
|
561
|
+
`Session: ${stats.turnCount} turns, ${stats.toolCallCount} tool calls`,
|
|
562
|
+
`Duration: ${stats.duration}`,
|
|
563
|
+
`Models: ${stats.models.join(', ') || 'unknown'}`,
|
|
564
|
+
`Evals: ${passCount}/${evalNames.length} passed`,
|
|
565
|
+
].join('\n'),
|
|
566
|
+
status: 'success',
|
|
567
|
+
message: 'Summary generated',
|
|
568
|
+
};
|
|
569
|
+
});
|
|
570
|
+
|
|
571
|
+
// Export metrics: gather enrichment data into a text report
|
|
572
|
+
app.action('export-metrics', ({ stats, enrichmentResults }) => {
|
|
573
|
+
const enrichData = {};
|
|
574
|
+
for (const [name, result] of Object.entries(enrichmentResults)) {
|
|
575
|
+
if (result.data) Object.assign(enrichData, result.data);
|
|
576
|
+
}
|
|
577
|
+
const lines = [
|
|
578
|
+
...Object.entries(enrichData).map(([k, v]) => `${k}: ${v}`),
|
|
579
|
+
`turnCount: ${stats.turnCount}`,
|
|
580
|
+
`toolCallCount: ${stats.toolCallCount}`,
|
|
581
|
+
];
|
|
582
|
+
return {
|
|
583
|
+
output: lines.join('\n'),
|
|
584
|
+
status: 'success',
|
|
585
|
+
message: `Exported ${Object.keys(enrichData).length + 2} metrics`,
|
|
586
|
+
};
|
|
587
|
+
});
|
|
588
|
+
|
|
589
|
+
// Side-effect action: write results to a file (disable caching)
|
|
590
|
+
app.action('write-report', async ({ projectName, sessionId, stats, evalResults }) => {
|
|
591
|
+
const fs = await import('fs/promises');
|
|
592
|
+
const report = {
|
|
593
|
+
projectName, sessionId,
|
|
594
|
+
turns: stats.turnCount,
|
|
595
|
+
evals: Object.fromEntries(
|
|
596
|
+
Object.entries(evalResults).map(([name, r]) => [name, { pass: r.pass, score: r.score }])
|
|
597
|
+
),
|
|
598
|
+
timestamp: new Date().toISOString(),
|
|
599
|
+
};
|
|
600
|
+
await fs.appendFile('session-reports.jsonl', JSON.stringify(report) + '\n');
|
|
601
|
+
return {
|
|
602
|
+
status: 'success',
|
|
603
|
+
message: `Report appended to session-reports.jsonl`,
|
|
604
|
+
output: 'Written to session-reports.jsonl',
|
|
605
|
+
};
|
|
606
|
+
}, { cache: false });
|
|
607
|
+
|
|
608
|
+
// Conditional action: only available for sessions with tool usage
|
|
609
|
+
app.action('tool-analysis', ({ entries, source }) => {
|
|
610
|
+
const toolUses = entries.filter(e =>
|
|
611
|
+
e._source === (source || 'session') &&
|
|
612
|
+
e.type === 'assistant' &&
|
|
613
|
+
Array.isArray(e.message?.content) &&
|
|
614
|
+
e.message.content.some(b => b.type === 'tool_use')
|
|
615
|
+
);
|
|
616
|
+
const toolNames = [...new Set(toolUses.flatMap(e =>
|
|
617
|
+
(e.message?.content || []).filter(b => b.type === 'tool_use').map(b => b.name)
|
|
618
|
+
))];
|
|
619
|
+
return {
|
|
620
|
+
output: toolNames.length > 0
|
|
621
|
+
? `Tools used: ${toolNames.join(', ')}`
|
|
622
|
+
: 'No tools used',
|
|
623
|
+
status: 'success',
|
|
624
|
+
};
|
|
625
|
+
}, { condition: ({ stats }) => stats.toolCallCount > 0 });
|
|
626
|
+
|
|
627
|
+
// Subagent-scoped action
|
|
628
|
+
app.action('agent-report', ({ entries, source, stats }) => {
|
|
629
|
+
const myEntries = entries.filter(e => e._source === source);
|
|
630
|
+
return {
|
|
631
|
+
output: [
|
|
632
|
+
`Source: ${source}`,
|
|
633
|
+
`Entries: ${myEntries.length}`,
|
|
634
|
+
`Turns: ${stats.turnCount}`,
|
|
635
|
+
`Tool calls: ${stats.toolCallCount}`,
|
|
636
|
+
].join('\n'),
|
|
637
|
+
status: 'success',
|
|
638
|
+
message: `Agent ${source}: ${myEntries.length} entries`,
|
|
639
|
+
};
|
|
640
|
+
}, { scope: 'subagent' });
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
#### Action UI Behavior
|
|
644
|
+
|
|
645
|
+
The Actions panel appears on session pages (and in expanded subagent cards for subagent-scoped actions) when matching actions are registered. The panel:
|
|
646
|
+
|
|
647
|
+
- Shows all registered actions as idle (not run) on initial load, with cached results displayed immediately
|
|
648
|
+
- Provides a **Run** button per action and a **Run All** button in the header
|
|
649
|
+
- Displays `output` in a scrollable monospace block with a copy-to-clipboard button
|
|
650
|
+
- Shows a "cached" badge for results served from cache
|
|
651
|
+
- Collapses by default (click the header to expand)
|
|
652
|
+
- Error count, success count, and loading spinners are visible in the header even when collapsed
|
|
653
|
+
|
|
654
|
+
#### Action Types
|
|
655
|
+
|
|
656
|
+
```ts
|
|
657
|
+
type ActionFunction = (context: ActionContext) => ActionResult | Promise<ActionResult>;
|
|
658
|
+
|
|
659
|
+
interface RegisteredAction {
|
|
660
|
+
name: string;
|
|
661
|
+
fn: ActionFunction;
|
|
662
|
+
condition?: ConditionFunction;
|
|
663
|
+
scope: EvalScope; // 'session' | 'subagent' | 'both'
|
|
664
|
+
subagentType?: string;
|
|
665
|
+
cache: boolean; // default: true
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
interface ActionRunResult {
|
|
669
|
+
name: string;
|
|
670
|
+
output?: string;
|
|
671
|
+
status: 'success' | 'error';
|
|
672
|
+
message?: string;
|
|
673
|
+
durationMs: number;
|
|
674
|
+
error?: string; // Present when the action threw or its condition threw
|
|
675
|
+
skipped?: boolean; // Present when the global/per-action condition returned false
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
interface ActionRunSummary {
|
|
679
|
+
results: ActionRunResult[];
|
|
680
|
+
totalDurationMs: number;
|
|
681
|
+
errorCount: number;
|
|
682
|
+
skippedCount: number;
|
|
683
|
+
}
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
---
|
|
687
|
+
|
|
688
|
+
### `app.alert(name, fn, options?)`
|
|
689
|
+
|
|
690
|
+
Register an alert callback that fires after all evals and enrichments complete for a session. Alerts are the hook point for Slack webhooks, CI notifications, logging, or any post-processing logic.
|
|
691
|
+
|
|
692
|
+
- **`name`** - unique string identifier for the alert (re-registering replaces the previous callback)
|
|
693
|
+
- **`fn`** - function receiving an `AlertContext` and returning `void | Promise<void>`
|
|
694
|
+
- **`options`** - optional `AlertOptions` object:
|
|
695
|
+
- **`suppressOnRecompute`** (default: `true`) — when `true`, this alert is suppressed during recomputes triggered by code changes (e.g., modifying an eval function). Alerts still fire when new session data arrives. Set to `false` for alerts that should always fire regardless of the trigger.
|
|
696
|
+
|
|
697
|
+
#### When Alerts Fire
|
|
698
|
+
|
|
699
|
+
Alerts fire **once per session content version** — the unified queue checks after each item completes whether all eval/enrichment work for that session is done (no pending or processing items remain). When the last item completes, a debounced check fires alerts if the dedup marker allows it.
|
|
700
|
+
|
|
701
|
+
| Trigger | Behavior |
|
|
702
|
+
|---------|----------|
|
|
703
|
+
| **Initial page load** | `queuePerItem()` per eval/enrichment → alerts fire when last item completes |
|
|
704
|
+
| **Background processing** | `scanAndEnqueue()` → individual items at LOW priority → alerts fire when last item completes |
|
|
705
|
+
| **Page reload (all cached)** | No items enter the queue → no alerts fire |
|
|
706
|
+
| **Re-run All** | Clears dedup marker first, then parallel `queuePerItem()` calls → alerts fire exactly once |
|
|
707
|
+
| **Re-run single** | `queuePerItem()` for one item → alerts do NOT re-fire (dedup marker still valid) |
|
|
708
|
+
| **Session content changes** | New `contentHash` invalidates the dedup marker → alerts fire again |
|
|
709
|
+
| **Alert registrations change** | New `alertsHash` invalidates the dedup marker → alerts fire again |
|
|
710
|
+
|
|
711
|
+
Each alert callback is individually try/caught via `Promise.allSettled`. A throwing alert never blocks other alerts or eval processing. Errors are logged to console.
|
|
712
|
+
|
|
713
|
+
#### `AlertContext`
|
|
714
|
+
|
|
715
|
+
```ts
|
|
716
|
+
interface AlertContext {
|
|
717
|
+
projectName: string; // Encoded project folder name
|
|
718
|
+
sessionId: string; // Session UUID
|
|
719
|
+
evalSummary?: EvalRunSummary; // Present when evals registered & ran
|
|
720
|
+
enrichSummary?: EnrichRunSummary; // Present when enrichments registered & ran
|
|
721
|
+
}
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
`evalSummary` and `enrichSummary` contain **all** results for the session — both cached and freshly computed. The alert always sees the complete picture.
|
|
725
|
+
|
|
726
|
+
#### Examples
|
|
727
|
+
|
|
728
|
+
```js
|
|
729
|
+
// Slack webhook on eval failure
|
|
730
|
+
app.alert('slack-on-failure', async ({ projectName, sessionId, evalSummary }) => {
|
|
731
|
+
if (evalSummary && evalSummary.failCount > 0) {
|
|
732
|
+
await fetch('https://hooks.slack.com/services/T.../B.../xxx', {
|
|
733
|
+
method: 'POST',
|
|
734
|
+
headers: { 'Content-Type': 'application/json' },
|
|
735
|
+
body: JSON.stringify({
|
|
736
|
+
text: `${evalSummary.failCount} evals failed for ${projectName}/${sessionId}`,
|
|
737
|
+
}),
|
|
738
|
+
});
|
|
739
|
+
}
|
|
740
|
+
});
|
|
741
|
+
|
|
742
|
+
// Console logging
|
|
743
|
+
app.alert('log-results', ({ projectName, sessionId, evalSummary, enrichSummary }) => {
|
|
744
|
+
const evals = evalSummary
|
|
745
|
+
? `${evalSummary.passCount} pass, ${evalSummary.failCount} fail, ${evalSummary.errorCount} error`
|
|
746
|
+
: 'no evals';
|
|
747
|
+
const enrichments = enrichSummary
|
|
748
|
+
? `${enrichSummary.results.length} enrichments (${enrichSummary.errorCount} errors)`
|
|
749
|
+
: 'no enrichments';
|
|
750
|
+
console.log(`[ALERT] ${projectName}/${sessionId}: ${evals} | ${enrichments}`);
|
|
751
|
+
});
|
|
752
|
+
|
|
753
|
+
// Write results to a file for CI
|
|
754
|
+
app.alert('ci-report', async ({ projectName, sessionId, evalSummary }) => {
|
|
755
|
+
if (!evalSummary) return;
|
|
756
|
+
const fs = await import('fs/promises');
|
|
757
|
+
await fs.appendFile('eval-results.jsonl', JSON.stringify({
|
|
758
|
+
projectName,
|
|
759
|
+
sessionId,
|
|
760
|
+
passCount: evalSummary.passCount,
|
|
761
|
+
failCount: evalSummary.failCount,
|
|
762
|
+
results: evalSummary.results.map(r => ({ name: r.name, pass: r.pass, score: r.score })),
|
|
763
|
+
timestamp: new Date().toISOString(),
|
|
764
|
+
}) + '\n');
|
|
765
|
+
});
|
|
766
|
+
|
|
767
|
+
// Alert that fires even on code-change recomputes (e.g., audit logging)
|
|
768
|
+
app.alert('audit-log', ({ projectName, sessionId }) => {
|
|
769
|
+
console.log(`[AUDIT] Processed ${projectName}/${sessionId}`);
|
|
770
|
+
}, { suppressOnRecompute: false });
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
#### Alert Types
|
|
774
|
+
|
|
775
|
+
```ts
|
|
776
|
+
type AlertFunction = (context: AlertContext) => void | Promise<void>;
|
|
777
|
+
|
|
778
|
+
interface AlertOptions {
|
|
779
|
+
suppressOnRecompute?: boolean; // Default: true
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
interface RegisteredAlert {
|
|
783
|
+
name: string;
|
|
784
|
+
fn: AlertFunction;
|
|
785
|
+
suppressOnRecompute: boolean;
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
interface EvalRunSummary {
|
|
789
|
+
results: EvalRunResult[];
|
|
790
|
+
totalDurationMs: number;
|
|
791
|
+
passCount: number;
|
|
792
|
+
failCount: number;
|
|
793
|
+
errorCount: number;
|
|
794
|
+
skippedCount: number;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
interface EnrichRunSummary {
|
|
798
|
+
results: EnrichRunResult[];
|
|
799
|
+
totalDurationMs: number;
|
|
800
|
+
errorCount: number;
|
|
801
|
+
skippedCount: number;
|
|
802
|
+
}
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
---
|
|
806
|
+
|
|
807
|
+
### `app.dashboard.view(name, options?)`
|
|
808
|
+
|
|
809
|
+
Create a named dashboard view. Views group related filters into focused sets. Each view appears as a card on `/dashboard` and has its own route at `/dashboard/[viewName]`.
|
|
810
|
+
|
|
811
|
+
- **`name`** - unique string identifier for the view
|
|
812
|
+
- **`options.label`** - human-readable label displayed on the card (defaults to the name)
|
|
813
|
+
- **`options.cachedOnly`** - only show sessions with complete cache entries (default: `false`)
|
|
814
|
+
|
|
815
|
+
Returns a `DashboardViewBuilder` with chainable `.filter()` and `.aggregate()` methods.
|
|
816
|
+
|
|
817
|
+
#### `DashboardViewBuilder`
|
|
818
|
+
|
|
819
|
+
```ts
|
|
820
|
+
interface DashboardViewBuilder {
|
|
821
|
+
filter(name: string, fn: FilterFunction, options?: FilterOptions): DashboardViewBuilder;
|
|
822
|
+
filter(options: { preBuilt: string[] }): DashboardViewBuilder;
|
|
823
|
+
aggregate(name: string, definition: AggregateDefinition, options?: AggregateOptions): DashboardViewBuilder;
|
|
824
|
+
}
|
|
825
|
+
```
|
|
826
|
+
|
|
827
|
+
The view builder's `.filter()` returns the view builder (not the app), so you can chain multiple filters within a view:
|
|
828
|
+
|
|
829
|
+
```js
|
|
830
|
+
app.dashboard.view('performance', { label: 'Performance Metrics' })
|
|
831
|
+
.filter('turn-count', ({ stats }) => stats.turnCount, { label: 'Turn Count' })
|
|
832
|
+
.filter('tool-calls', ({ stats }) => stats.toolCallCount, { label: 'Tool Calls' });
|
|
833
|
+
```
|
|
834
|
+
|
|
835
|
+
#### `ViewOptions`
|
|
836
|
+
|
|
837
|
+
```ts
|
|
838
|
+
interface ViewOptions {
|
|
839
|
+
label?: string; // Human-readable label (defaults to name)
|
|
840
|
+
cachedOnly?: boolean; // Only show sessions with complete cache entries (default: false)
|
|
841
|
+
}
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
#### `cachedOnly` Views
|
|
845
|
+
|
|
846
|
+
When `cachedOnly: true`, uncached sessions are **pre-filtered** before any filter computation runs — sessions without complete cache entries are skipped entirely. This avoids expensive log parsing, eval cache reads, and filter function execution for uncached sessions. Sessions appear in the view as the background queue processes them.
|
|
847
|
+
|
|
848
|
+
Filter functions in `cachedOnly` views receive `ctx.evalResults` — a record of cached eval results keyed by eval name. Each entry has `pass`, `score`, and optional `error`/`message` fields. This lets you create per-eval score filters (range sliders) and composite boolean filters without re-running evals.
|
|
849
|
+
|
|
850
|
+
```js
|
|
851
|
+
// Only show sessions that have been fully processed
|
|
852
|
+
app.dashboard.view('quality', { cachedOnly: true })
|
|
853
|
+
.filter('has-errors', ({ entries }) =>
|
|
854
|
+
entries.some(e => e.type === 'assistant' &&
|
|
855
|
+
Array.isArray(e.message?.content) &&
|
|
856
|
+
e.message.content.some(b => b.type === 'tool_use' && b.is_error)),
|
|
857
|
+
{ label: 'Has Errors' });
|
|
858
|
+
|
|
859
|
+
// Per-eval score filters using evalResults
|
|
860
|
+
app.dashboard.view('eval-results', { cachedOnly: true, label: 'Eval Score Filters' })
|
|
861
|
+
.filter('quality-score', (ctx) => ctx.evalResults?.['quality']?.score ?? 0,
|
|
862
|
+
{ label: 'Quality Score' })
|
|
863
|
+
.filter('all-passing', (ctx) => {
|
|
864
|
+
if (!ctx.evalResults) return false;
|
|
865
|
+
return Object.values(ctx.evalResults).every(r => r.pass);
|
|
866
|
+
}, { label: 'All Evals Passing' });
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
#### Routing
|
|
870
|
+
|
|
871
|
+
| URL | Behavior |
|
|
872
|
+
|-----|----------|
|
|
873
|
+
| `/dashboard` | If named views exist, shows a view index (card grid). If only default filters, shows them directly. If nothing registered, shows an empty state. |
|
|
874
|
+
| `/dashboard/[viewName]` | Specific named view with its filters and sessions table. |
|
|
875
|
+
|
|
876
|
+
#### Examples
|
|
877
|
+
|
|
878
|
+
```js
|
|
879
|
+
// Two focused views
|
|
880
|
+
app.dashboard.view('performance', { label: 'Performance Metrics' })
|
|
881
|
+
.filter('turn-count', ({ stats }) => stats.turnCount, { label: 'Turn Count' })
|
|
882
|
+
.filter('tool-calls', ({ stats }) => stats.toolCallCount, { label: 'Tool Calls' });
|
|
883
|
+
|
|
884
|
+
app.dashboard.view('quality', { label: 'Quality Checks' })
|
|
885
|
+
.filter('has-errors', ({ entries }) =>
|
|
886
|
+
entries.some(e => e.type === 'assistant' &&
|
|
887
|
+
Array.isArray(e.message?.content) &&
|
|
888
|
+
e.message.content.some(b => b.type === 'tool_use' && b.is_error)),
|
|
889
|
+
{ label: 'Has Errors' })
|
|
890
|
+
.filter('primary-model', ({ stats }) => stats.models[0] || 'unknown',
|
|
891
|
+
{ label: 'Primary Model' });
|
|
892
|
+
|
|
893
|
+
// Backward-compat: app.dashboard.filter() still works (goes to "default" view)
|
|
894
|
+
app.dashboard.filter('uses-subagents', ({ stats }) => stats.subagentCount > 0,
|
|
895
|
+
{ label: 'Uses Subagents' }
|
|
896
|
+
);
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
---
|
|
900
|
+
|
|
901
|
+
### `app.dashboard.filter(name, fn, options?)`
|
|
902
|
+
|
|
903
|
+
Register a dashboard filter on the **default** view. For organizing filters into named views, see `app.dashboard.view()` above.
|
|
904
|
+
|
|
905
|
+
- **`name`** - unique string identifier for the filter
|
|
906
|
+
- **`fn`** - function receiving an `EvalContext` and returning a `FilterValue` (`boolean`, `number`, or `string`)
|
|
907
|
+
- **`options.label`** - human-readable label for the filter tile (defaults to the name)
|
|
908
|
+
- **`options.condition`** - optional condition function to gate this filter
|
|
909
|
+
|
|
910
|
+
The return type auto-determines the UI control:
|
|
911
|
+
|
|
912
|
+
| Return type | UI control | Behavior |
|
|
913
|
+
|-------------|-----------|----------|
|
|
914
|
+
| `boolean` | Three-state toggle | Cycle: All → Yes → No → All |
|
|
915
|
+
| `number` | Range slider | Dual-handle slider with min/max inputs. Step auto-adapts: integer data uses steps of 1/5/10; float data uses 0.01 (range≤1), 0.1 (range≤10), or 1 |
|
|
916
|
+
| `string` | Multi-select dropdown | Checkboxes with Select All / Clear |
|
|
917
|
+
|
|
918
|
+
Filter values are computed server-side with an incremental index (only new/changed sessions are reprocessed). Filtering and pagination happen server-side, returning only the matching page of results.
|
|
919
|
+
|
|
920
|
+
#### Examples
|
|
921
|
+
|
|
922
|
+
```js
|
|
923
|
+
// Boolean filter: toggle sessions that have tool errors
|
|
924
|
+
app.dashboard.filter('has-errors', ({ entries }) =>
|
|
925
|
+
entries.some(e =>
|
|
926
|
+
e.type === 'assistant' &&
|
|
927
|
+
Array.isArray(e.message?.content) &&
|
|
928
|
+
e.message.content.some(b => b.type === 'tool_use' && b.is_error)
|
|
929
|
+
),
|
|
930
|
+
{ label: 'Has Errors' }
|
|
931
|
+
);
|
|
932
|
+
|
|
933
|
+
// Number filter: range slider for turn count
|
|
934
|
+
app.dashboard.filter('turn-count', ({ stats }) => stats.turnCount,
|
|
935
|
+
{ label: 'Turn Count' }
|
|
936
|
+
);
|
|
937
|
+
|
|
938
|
+
// String filter: multi-select for primary model
|
|
939
|
+
app.dashboard.filter('primary-model', ({ stats }) => stats.models[0] || 'unknown',
|
|
940
|
+
{ label: 'Primary Model' }
|
|
941
|
+
);
|
|
942
|
+
|
|
943
|
+
// Number filter: range slider for tool call count
|
|
944
|
+
app.dashboard.filter('tool-calls', ({ stats }) => stats.toolCallCount,
|
|
945
|
+
{ label: 'Tool Calls' }
|
|
946
|
+
);
|
|
947
|
+
|
|
948
|
+
// Boolean filter: sessions with subagents
|
|
949
|
+
app.dashboard.filter('uses-subagents', ({ stats }) => stats.subagentCount > 0,
|
|
950
|
+
{ label: 'Uses Subagents' }
|
|
951
|
+
);
|
|
952
|
+
|
|
953
|
+
// String filter: session duration bucket
|
|
954
|
+
app.dashboard.filter('duration-bucket', ({ stats }) => {
|
|
955
|
+
const ms = parseInt(stats.duration) || 0;
|
|
956
|
+
if (ms < 60000) return 'Under 1m';
|
|
957
|
+
if (ms < 300000) return '1-5m';
|
|
958
|
+
if (ms < 900000) return '5-15m';
|
|
959
|
+
return 'Over 15m';
|
|
960
|
+
}, { label: 'Duration' });
|
|
961
|
+
|
|
962
|
+
// With a per-filter condition: only compute for non-empty sessions
|
|
963
|
+
app.dashboard.filter('avg-tools-per-turn',
|
|
964
|
+
({ stats }) => stats.turnCount > 0
|
|
965
|
+
? Math.round(stats.toolCallCount / stats.turnCount * 10) / 10
|
|
966
|
+
: 0,
|
|
967
|
+
{
|
|
968
|
+
label: 'Avg Tools/Turn',
|
|
969
|
+
condition: ({ entries }) => entries.length > 0,
|
|
970
|
+
}
|
|
971
|
+
);
|
|
972
|
+
```
|
|
973
|
+
|
|
974
|
+
#### How Filters Work
|
|
975
|
+
|
|
976
|
+
1. When the `/dashboard` page loads, the server action discovers all projects and sessions
|
|
977
|
+
2. An incremental `DashboardIndex` diffs the discovered sessions against previously computed rows — only new or changed sessions are processed (unchanged sessions are skipped entirely)
|
|
978
|
+
3. For new/changed sessions, it checks the per-session disk cache first, then falls back to parsing the JSONL log and running filters
|
|
979
|
+
4. Filter metadata (min/max for numbers, unique values for strings) is rebuilt from accumulators only when the session set changes
|
|
980
|
+
5. Server-side filtering and pagination are applied — only the matching page of results is sent to the client
|
|
981
|
+
6. User interactions (toggle, slider, dropdown) trigger a debounced (300ms) server re-fetch with the new filter state
|
|
982
|
+
|
|
983
|
+
#### Global Condition
|
|
984
|
+
|
|
985
|
+
Dashboard filters respect the global condition set via `app.condition()`. If the global condition returns `false` for a session, all filters are skipped for that session.
|
|
986
|
+
|
|
987
|
+
```js
|
|
988
|
+
// Skip empty sessions across evals, enrichments, AND dashboard filters
|
|
989
|
+
app.condition(({ entries }) => entries.length > 0);
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
---
|
|
993
|
+
|
|
994
|
+
### `app.dashboard.filter({ preBuilt })`
|
|
995
|
+
|
|
996
|
+
Enable pre-built filters on the dashboard. Pre-built filters provide common filtering functionality with optimized UX — no custom filter function needed.
|
|
997
|
+
|
|
998
|
+
- **`preBuilt`** - array of pre-built filter names to enable
|
|
999
|
+
|
|
1000
|
+
#### Available Pre-Built Filters
|
|
1001
|
+
|
|
1002
|
+
| Name | UI control | Description |
|
|
1003
|
+
|------|-----------|-------------|
|
|
1004
|
+
| `'lastModified'` | Date range picker (from/to) | Filters sessions by their last modified date |
|
|
1005
|
+
|
|
1006
|
+
#### Examples
|
|
1007
|
+
|
|
1008
|
+
```js
|
|
1009
|
+
// Enable on the default view
|
|
1010
|
+
app.dashboard.filter({ preBuilt: ['lastModified'] });
|
|
1011
|
+
|
|
1012
|
+
// Combine with custom filters
|
|
1013
|
+
app.dashboard.filter({ preBuilt: ['lastModified'] });
|
|
1014
|
+
app.dashboard.filter('model', ({ stats }) => stats.models[0] || 'unknown',
|
|
1015
|
+
{ label: 'Model' });
|
|
1016
|
+
|
|
1017
|
+
// Enable on a named view
|
|
1018
|
+
app.dashboard.view('overview', { label: 'Overview' })
|
|
1019
|
+
.filter({ preBuilt: ['lastModified'] })
|
|
1020
|
+
.filter('turns', ({ stats }) => stats.turnCount, { label: 'Turns' });
|
|
1021
|
+
```
|
|
1022
|
+
|
|
1023
|
+
Pre-built date filters operate directly on the `DashboardSessionRow.lastModified` field — they don't require parsing session logs or running a filter function. The date range (min/max) is computed from the observed session data. Filtering is done server-side using normalized server-local calendar dates.
|
|
1024
|
+
|
|
1025
|
+
---
|
|
1026
|
+
|
|
1027
|
+
### `app.dashboard.aggregate(name, definition, options?)`
|
|
1028
|
+
|
|
1029
|
+
Register a cross-session aggregate on the **default** view. For organizing aggregates into named views, use `app.dashboard.view().aggregate()`.
|
|
1030
|
+
|
|
1031
|
+
- **`name`** - unique string identifier for the aggregate
|
|
1032
|
+
- **`definition`** - a `{ collect, reduce }` object
|
|
1033
|
+
- **`options.label`** - human-readable label for the aggregate section (defaults to the name)
|
|
1034
|
+
- **`options.condition`** - optional condition function to gate this aggregate per session
|
|
1035
|
+
|
|
1036
|
+
Provide a `{ collect, reduce }` object. The `collect` function runs per session, and `reduce` transforms all collected values into your output table.
|
|
1037
|
+
|
|
1038
|
+
#### Examples
|
|
1039
|
+
|
|
1040
|
+
```js
|
|
1041
|
+
// Eval pass rate summary table
|
|
1042
|
+
app.dashboard.aggregate('eval-summary', {
|
|
1043
|
+
collect: ({ evalResults }) => {
|
|
1044
|
+
const result = {};
|
|
1045
|
+
for (const [name, r] of Object.entries(evalResults)) {
|
|
1046
|
+
result[`${name}_pass`] = r.pass;
|
|
1047
|
+
result[`${name}_score`] = r.score;
|
|
1048
|
+
}
|
|
1049
|
+
return result;
|
|
1050
|
+
},
|
|
1051
|
+
reduce: (collected) => {
|
|
1052
|
+
const evalNames = new Set();
|
|
1053
|
+
for (const s of collected) {
|
|
1054
|
+
for (const key of Object.keys(s.values)) {
|
|
1055
|
+
if (key.endsWith('_pass')) evalNames.add(key.replace('_pass', ''));
|
|
1056
|
+
}
|
|
1057
|
+
}
|
|
1058
|
+
return Array.from(evalNames).map(name => ({
|
|
1059
|
+
'Eval': name,
|
|
1060
|
+
'Pass Rate': collected.filter(s => s.values[`${name}_pass`]).length / collected.length,
|
|
1061
|
+
'Avg Score': collected.reduce((sum, s) => {
|
|
1062
|
+
const v = s.values[`${name}_score`];
|
|
1063
|
+
return sum + (typeof v === 'number' ? v : 0);
|
|
1064
|
+
}, 0) / collected.length,
|
|
1065
|
+
}));
|
|
1066
|
+
},
|
|
1067
|
+
});
|
|
1068
|
+
|
|
1069
|
+
// Aggregates on named views alongside filters
|
|
1070
|
+
app.dashboard.view('quality', { label: 'Quality' })
|
|
1071
|
+
.aggregate('session-metrics', {
|
|
1072
|
+
collect: ({ stats }) => ({
|
|
1073
|
+
turnCount: stats.turnCount,
|
|
1074
|
+
toolCalls: stats.toolCallCount,
|
|
1075
|
+
}),
|
|
1076
|
+
reduce: (collected) => {
|
|
1077
|
+
const n = collected.length || 1;
|
|
1078
|
+
let turns = 0, tools = 0;
|
|
1079
|
+
for (const s of collected) {
|
|
1080
|
+
turns += typeof s.values.turnCount === 'number' ? s.values.turnCount : 0;
|
|
1081
|
+
tools += typeof s.values.toolCalls === 'number' ? s.values.toolCalls : 0;
|
|
1082
|
+
}
|
|
1083
|
+
return [
|
|
1084
|
+
{ Metric: 'Avg Turns', Value: +(turns / n).toFixed(1) },
|
|
1085
|
+
{ Metric: 'Avg Tool Calls', Value: +(tools / n).toFixed(1) },
|
|
1086
|
+
];
|
|
1087
|
+
},
|
|
1088
|
+
})
|
|
1089
|
+
.filter('turns', ({ stats }) => stats.turnCount, { label: 'Turns' });
|
|
1090
|
+
```
|
|
1091
|
+
|
|
1092
|
+
#### `AggregateContext`
|
|
1093
|
+
|
|
1094
|
+
The collect function receives an extended context:
|
|
1095
|
+
|
|
1096
|
+
```ts
|
|
1097
|
+
interface AggregateContext {
|
|
1098
|
+
entries: Record<string, unknown>[]; // Raw JSONL lines
|
|
1099
|
+
stats: EvalLogStats; // Computed stats
|
|
1100
|
+
projectName: string;
|
|
1101
|
+
sessionId: string;
|
|
1102
|
+
source: string;
|
|
1103
|
+
evalResults: Record<string, { pass: boolean; score: number; error?: string; message?: string }>;
|
|
1104
|
+
enrichResults: Record<string, Record<string, EnrichmentValue>>;
|
|
1105
|
+
filterValues: Record<string, FilterValue>;
|
|
1106
|
+
}
|
|
1107
|
+
```
|
|
1108
|
+
|
|
1109
|
+
#### Aggregate Types
|
|
1110
|
+
|
|
1111
|
+
```ts
|
|
1112
|
+
type AggregateValue = boolean | number | string;
|
|
1113
|
+
|
|
1114
|
+
type AggregateCollectFunction = (
|
|
1115
|
+
context: AggregateContext,
|
|
1116
|
+
) => Record<string, AggregateValue> | Promise<Record<string, AggregateValue>>;
|
|
1117
|
+
|
|
1118
|
+
type AggregateReduceFunction = (
|
|
1119
|
+
collected: CollectedSession[],
|
|
1120
|
+
) => AggregateTableRow[] | Promise<AggregateTableRow[]>;
|
|
1121
|
+
|
|
1122
|
+
type AggregateDefinition = {
|
|
1123
|
+
collect: AggregateCollectFunction;
|
|
1124
|
+
reduce: AggregateReduceFunction;
|
|
1125
|
+
};
|
|
1126
|
+
|
|
1127
|
+
interface AggregateOptions {
|
|
1128
|
+
label?: string;
|
|
1129
|
+
condition?: ConditionFunction;
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
interface CollectedSession {
|
|
1133
|
+
projectName: string;
|
|
1134
|
+
sessionId: string;
|
|
1135
|
+
values: Record<string, AggregateValue>;
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
type AggregateTableRow = Record<string, AggregateValue>;
|
|
1139
|
+
|
|
1140
|
+
interface AggregatePayload {
|
|
1141
|
+
aggregates: {
|
|
1142
|
+
name: string;
|
|
1143
|
+
label: string;
|
|
1144
|
+
rows: AggregateTableRow[];
|
|
1145
|
+
columns: string[];
|
|
1146
|
+
}[];
|
|
1147
|
+
totalSessions: number;
|
|
1148
|
+
totalDurationMs: number;
|
|
1149
|
+
}
|
|
1150
|
+
```
|
|
1151
|
+
|
|
1152
|
+
---
|
|
1153
|
+
|
|
1154
|
+
### `app.auth(options)`
|
|
1155
|
+
|
|
1156
|
+
Configure username/password authentication. When at least one user is configured (via `app.auth()`, `--auth-user`, or `CLAUDEYE_AUTH_USERS` env var), all UI routes are protected by a login page. Users from all sources are merged.
|
|
1157
|
+
|
|
1158
|
+
- **`options.users`** - array of `{ username: string; password: string }` objects
|
|
1159
|
+
|
|
1160
|
+
```ts
|
|
1161
|
+
app.auth({ users: [
|
|
1162
|
+
{ username: 'admin', password: 'secret' },
|
|
1163
|
+
{ username: 'viewer', password: 'readonly' },
|
|
1164
|
+
] });
|
|
1165
|
+
```
|
|
1166
|
+
|
|
1167
|
+
Chainable — returns the app instance:
|
|
1168
|
+
|
|
1169
|
+
```js
|
|
1170
|
+
app
|
|
1171
|
+
.auth({ users: [{ username: 'admin', password: 'secret' }] })
|
|
1172
|
+
.eval('my-eval', fn)
|
|
1173
|
+
.listen();
|
|
1174
|
+
```
|
|
1175
|
+
|
|
1176
|
+
When auth is active:
|
|
1177
|
+
- All UI routes redirect to `/login` for unauthenticated users
|
|
1178
|
+
- A signed HMAC-SHA256 session cookie (`claudeye_session`) is set on login, with 24h expiry
|
|
1179
|
+
- The navbar shows a **Sign out** button
|
|
1180
|
+
- If no users are configured, auth is completely disabled (no login page, no blocking)
|
|
1181
|
+
|
|
1182
|
+
#### Multiple Sources
|
|
1183
|
+
|
|
1184
|
+
Users from CLI, environment, and API are merged:
|
|
1185
|
+
|
|
1186
|
+
```bash
|
|
1187
|
+
# CLI
|
|
1188
|
+
claudeye --evals ./my-evals.js --auth-user ops:pass123
|
|
1189
|
+
|
|
1190
|
+
# Environment (comma-separated user:password pairs)
|
|
1191
|
+
CLAUDEYE_AUTH_USERS=admin:secret claudeye --evals ./my-evals.js
|
|
1192
|
+
|
|
1193
|
+
# API (in my-evals.js)
|
|
1194
|
+
app.auth({ users: [{ username: 'dev', password: 'devpass' }] });
|
|
1195
|
+
```
|
|
1196
|
+
|
|
1197
|
+
All three users (`ops`, `admin`, `dev`) would be valid.
|
|
1198
|
+
|
|
1199
|
+
---
|
|
1200
|
+
|
|
1201
|
+
### `app.listen(port?, options?)`
|
|
1202
|
+
|
|
1203
|
+
Start the Claudeye dashboard server.
|
|
1204
|
+
|
|
1205
|
+
- **`port`** - port number (default: 8020)
|
|
1206
|
+
- **`options.host`** - bind address (default: `"localhost"`, use `"0.0.0.0"` for LAN)
|
|
1207
|
+
- **`options.open`** - auto-open browser (default: `true`)
|
|
1208
|
+
|
|
1209
|
+
When the file is loaded via `--evals` or `CLAUDEYE_EVALS_MODULE`, `listen()` is a no-op. It won't spawn a duplicate server.
|
|
1210
|
+
|
|
1211
|
+
```js
|
|
1212
|
+
const app = createApp();
|
|
1213
|
+
|
|
1214
|
+
app.eval('my-eval', fn);
|
|
1215
|
+
app.enrich('my-enricher', fn);
|
|
1216
|
+
|
|
1217
|
+
// Only starts a server when run directly with `node` or `bun`
|
|
1218
|
+
app.listen(3000, { host: '0.0.0.0', open: false });
|
|
1219
|
+
```
|
|
1220
|
+
|
|
1221
|
+
You can also run your evals file directly with `bun my-evals.js` (or `node my-evals.js`) if you include `app.listen()`. This spawns the dashboard as a child process.
|
|
1222
|
+
|
|
1223
|
+
---
|
|
1224
|
+
|
|
1225
|
+
## Subagent Scope
|
|
1226
|
+
|
|
1227
|
+
Evals, enrichments, and actions run at the session level by default. Use the `scope` option to target subagent logs.
|
|
1228
|
+
|
|
1229
|
+
### Scope Options
|
|
1230
|
+
|
|
1231
|
+
| Scope | Runs at session level | Runs at subagent level |
|
|
1232
|
+
|-------|:---:|:---:|
|
|
1233
|
+
| `'session'` (default) | Yes | No |
|
|
1234
|
+
| `'subagent'` | No | Yes |
|
|
1235
|
+
| `'both'` | Yes | Yes |
|
|
1236
|
+
|
|
1237
|
+
### Subagent Context
|
|
1238
|
+
|
|
1239
|
+
When running at subagent level, the `EvalContext` includes additional metadata:
|
|
1240
|
+
|
|
1241
|
+
```js
|
|
1242
|
+
app.eval('adaptive-eval', (ctx) => {
|
|
1243
|
+
if (ctx.source !== 'session') {
|
|
1244
|
+
// Running at subagent level — source is "agent-{id}"
|
|
1245
|
+
console.log(ctx.source); // e.g. 'agent-a1b2c3'
|
|
1246
|
+
console.log(ctx.subagentType); // e.g. 'Explore'
|
|
1247
|
+
console.log(ctx.subagentDescription); // e.g. 'Search for auth code'
|
|
1248
|
+
console.log(ctx.parentSessionId); // parent session ID
|
|
1249
|
+
}
|
|
1250
|
+
return { pass: true };
|
|
1251
|
+
}, { scope: 'both' });
|
|
1252
|
+
```
|
|
1253
|
+
|
|
1254
|
+
### Combined Data in Subagent Scope
|
|
1255
|
+
|
|
1256
|
+
Subagent-scoped evals and enrichments receive the full combined data (session + all subagents), not just the subagent's own entries. The `source` field in `EvalContext` directly matches the `_source` value on entries, so you can filter easily:
|
|
1257
|
+
|
|
1258
|
+
```js
|
|
1259
|
+
// Subagent-scoped eval that filters to its own entries
|
|
1260
|
+
app.eval('explore-thoroughness', ({ entries, source }) => {
|
|
1261
|
+
const myEntries = entries.filter(e => e._source === source);
|
|
1262
|
+
return {
|
|
1263
|
+
pass: myEntries.length > 5,
|
|
1264
|
+
score: Math.min(myEntries.length / 20, 1),
|
|
1265
|
+
};
|
|
1266
|
+
}, { scope: 'subagent', subagentType: 'Explore' });
|
|
1267
|
+
```
|
|
1268
|
+
|
|
1269
|
+
### SubagentType Filtering
|
|
1270
|
+
|
|
1271
|
+
When you specify `subagentType`, the eval/enrichment only runs for subagents of that type. Subagents of other types will not see the eval panel at all.
|
|
1272
|
+
|
|
1273
|
+
```js
|
|
1274
|
+
// Only runs for Explore subagents
|
|
1275
|
+
app.eval('explore-thoroughness', ({ entries, source }) => {
|
|
1276
|
+
const myEntries = entries.filter(e => e._source === source);
|
|
1277
|
+
return {
|
|
1278
|
+
pass: myEntries.length > 5,
|
|
1279
|
+
score: Math.min(myEntries.length / 20, 1),
|
|
1280
|
+
message: `${myEntries.length} entries explored`,
|
|
1281
|
+
};
|
|
1282
|
+
}, { scope: 'subagent', subagentType: 'Explore' });
|
|
1283
|
+
|
|
1284
|
+
// Runs for all subagent types
|
|
1285
|
+
app.eval('agent-efficiency', ({ stats }) => ({
|
|
1286
|
+
pass: stats.turnCount <= 10,
|
|
1287
|
+
score: Math.max(0, 1 - stats.turnCount / 20),
|
|
1288
|
+
message: `${stats.turnCount} turns`,
|
|
1289
|
+
}), { scope: 'subagent' });
|
|
1290
|
+
|
|
1291
|
+
// Subagent-scoped enrichment
|
|
1292
|
+
app.enrich('agent-summary',
|
|
1293
|
+
({ stats, entries }) => ({
|
|
1294
|
+
'Agent Turns': stats.turnCount,
|
|
1295
|
+
'Agent Tool Calls': stats.toolCallCount,
|
|
1296
|
+
'Agent Entries': entries.length,
|
|
1297
|
+
}),
|
|
1298
|
+
{ scope: 'subagent' }
|
|
1299
|
+
);
|
|
1300
|
+
|
|
1301
|
+
// Scoped to both session and subagent level
|
|
1302
|
+
app.eval('quality-check', ({ stats, source }) => ({
|
|
1303
|
+
pass: stats.toolCallCount <= 20,
|
|
1304
|
+
score: Math.max(0, 1 - stats.toolCallCount / 40),
|
|
1305
|
+
message: `${source}: ${stats.toolCallCount} tool calls`,
|
|
1306
|
+
}), { scope: 'both' });
|
|
1307
|
+
```
|
|
1308
|
+
|
|
1309
|
+
---
|
|
1310
|
+
|
|
1311
|
+
## Evaluation Order
|
|
1312
|
+
|
|
1313
|
+
When a session is loaded, conditions are evaluated in this order:
|
|
1314
|
+
|
|
1315
|
+
```
|
|
1316
|
+
1. Global condition checked
|
|
1317
|
+
|-- Returns false or throws -> ALL evals/enrichments marked "skipped"
|
|
1318
|
+
\-- Returns true -> proceed to step 2
|
|
1319
|
+
|
|
1320
|
+
2. For each eval/enrichment:
|
|
1321
|
+
|-- Has per-item condition?
|
|
1322
|
+
| |-- Returns false -> that item marked "skipped"
|
|
1323
|
+
| |-- Throws -> that item marked "errored" (not skipped)
|
|
1324
|
+
| \-- Returns true -> run the function
|
|
1325
|
+
\-- No condition -> run the function
|
|
1326
|
+
|
|
1327
|
+
3. Function executes
|
|
1328
|
+
|-- Returns result -> recorded normally
|
|
1329
|
+
\-- Throws -> marked "errored", other items still run
|
|
1330
|
+
```
|
|
1331
|
+
|
|
1332
|
+
---
|
|
1333
|
+
|
|
1334
|
+
## UI Behavior
|
|
1335
|
+
|
|
1336
|
+
In the dashboard, conditional results appear as follows:
|
|
1337
|
+
|
|
1338
|
+
| Status | Evals Panel | Enrichments Panel |
|
|
1339
|
+
|--------|-------------|-------------------|
|
|
1340
|
+
| **Skipped** | Grayed-out row with "skipped" label | Grayed-out row with "skipped" label |
|
|
1341
|
+
| **Condition error** | Row with warning icon and error message | Row with warning icon and error message |
|
|
1342
|
+
| **Passed / Data** | Green check with score bar | Key-value pairs grouped by enricher |
|
|
1343
|
+
| **Failed** | Red X with score bar | N/A |
|
|
1344
|
+
|
|
1345
|
+
Skipped items are counted separately in the summary bar (e.g. "2 passed, 1 skipped").
|
|
1346
|
+
|
|
1347
|
+
---
|
|
1348
|
+
|
|
1349
|
+
## Types
|
|
1350
|
+
|
|
1351
|
+
All TypeScript types exported from `claudeye`:
|
|
1352
|
+
|
|
1353
|
+
### `EvalContext`
|
|
1354
|
+
|
|
1355
|
+
Both evals and enrichers receive the same context object:
|
|
1356
|
+
|
|
1357
|
+
```ts
|
|
1358
|
+
interface EvalContext {
|
|
1359
|
+
entries: Record<string, unknown>[]; // Combined session + subagent JSONL lines, each tagged with `_source`
|
|
1360
|
+
stats: EvalLogStats; // Computed stats across all entries (session + subagent)
|
|
1361
|
+
projectName: string; // Encoded project folder name
|
|
1362
|
+
sessionId: string; // Session UUID
|
|
1363
|
+
source: string; // "session" or "agent-{id}" — matches entry._source directly
|
|
1364
|
+
subagentType?: string; // e.g. 'Explore', 'Bash' (subagent scope only)
|
|
1365
|
+
subagentDescription?: string; // Short description (subagent scope only)
|
|
1366
|
+
parentSessionId?: string; // Parent session ID (subagent scope only)
|
|
1367
|
+
evalResults?: Record<string, { // Cached eval results (cachedOnly views only)
|
|
1368
|
+
pass: boolean;
|
|
1369
|
+
score: number;
|
|
1370
|
+
error?: string;
|
|
1371
|
+
message?: string;
|
|
1372
|
+
}>;
|
|
1373
|
+
}
|
|
1374
|
+
```
|
|
1375
|
+
|
|
1376
|
+
`entries` contains the **raw JSONL data** from the session and all its subagents combined. Every line from the session log file and its subagent log files is parsed as JSON and included. Each entry has a `_source` field: `"session"` for main session entries, or `"agent-{id}"` for subagent entries. This means:
|
|
1377
|
+
|
|
1378
|
+
- Tool-result lines (which the display view merges into tool_use blocks) are present as separate entries
|
|
1379
|
+
- All entry types are included: `user`, `assistant`, `system`, `tool_result`, `queue-operation`, etc.
|
|
1380
|
+
- Properties are accessed directly (e.g. `e.usage?.total_tokens`) rather than through a `.raw` wrapper
|
|
1381
|
+
- Filter by `e._source === "session"` to get only main session data
|
|
1382
|
+
- Filter by `e._source` starting with `"agent-"` to get subagent data
|
|
1383
|
+
|
|
1384
|
+
### `EvalLogEntry` (helper type)
|
|
1385
|
+
|
|
1386
|
+
`EvalLogEntry` is exported as a convenience type for describing the display-oriented parsed entries, but it is **not** the type of `EvalContext.entries`. The entries passed to evals and enrichments are raw JSONL objects (`Record<string, unknown>[]`).
|
|
1387
|
+
|
|
1388
|
+
```ts
|
|
1389
|
+
interface EvalLogEntry {
|
|
1390
|
+
type: string;
|
|
1391
|
+
_source?: string; // "session" or "agent-{id}"
|
|
1392
|
+
uuid: string;
|
|
1393
|
+
parentUuid: string | null;
|
|
1394
|
+
timestamp: string;
|
|
1395
|
+
timestampMs: number;
|
|
1396
|
+
timestampFormatted: string;
|
|
1397
|
+
message?: {
|
|
1398
|
+
role: string;
|
|
1399
|
+
content: string | EvalContentBlock[];
|
|
1400
|
+
model?: string;
|
|
1401
|
+
};
|
|
1402
|
+
raw?: Record<string, unknown>;
|
|
1403
|
+
label?: string;
|
|
1404
|
+
}
|
|
1405
|
+
```
|
|
1406
|
+
|
|
1407
|
+
### `EvalLogStats`
|
|
1408
|
+
|
|
1409
|
+
> Stats are computed across all entries (session + subagent combined). Use `_source` filtering on entries before computing custom scoped metrics if needed.
|
|
1410
|
+
|
|
1411
|
+
```ts
|
|
1412
|
+
interface EvalLogStats {
|
|
1413
|
+
turnCount: number; // Number of conversation turns
|
|
1414
|
+
userCount: number; // Number of user messages
|
|
1415
|
+
assistantCount: number; // Number of assistant responses
|
|
1416
|
+
toolCallCount: number; // Total tool invocations
|
|
1417
|
+
subagentCount: number; // Number of subagent spawns
|
|
1418
|
+
duration: string; // Formatted duration (e.g. "2m 15s")
|
|
1419
|
+
models: string[]; // Distinct model IDs used
|
|
1420
|
+
}
|
|
1421
|
+
```
|
|
1422
|
+
|
|
1423
|
+
### `EvalResult`
|
|
1424
|
+
|
|
1425
|
+
```ts
|
|
1426
|
+
interface EvalResult {
|
|
1427
|
+
pass: boolean; // Did the eval pass?
|
|
1428
|
+
score?: number; // 0-1, clamped automatically (default: 1.0)
|
|
1429
|
+
message?: string; // Shown in the UI
|
|
1430
|
+
metadata?: Record<string, unknown>; // Arbitrary data
|
|
1431
|
+
}
|
|
1432
|
+
```
|
|
1433
|
+
|
|
1434
|
+
### `EnrichmentResult`
|
|
1435
|
+
|
|
1436
|
+
```ts
|
|
1437
|
+
type EnrichmentResult = Record<string, string | number | boolean>;
|
|
1438
|
+
```
|
|
1439
|
+
|
|
1440
|
+
### `ConditionFunction`
|
|
1441
|
+
|
|
1442
|
+
```ts
|
|
1443
|
+
type ConditionFunction = (context: EvalContext) => boolean | Promise<boolean>;
|
|
1444
|
+
```
|
|
1445
|
+
|
|
1446
|
+
### `FilterValue`
|
|
1447
|
+
|
|
1448
|
+
```ts
|
|
1449
|
+
type FilterValue = boolean | number | string;
|
|
1450
|
+
```
|
|
1451
|
+
|
|
1452
|
+
### `FilterFunction`
|
|
1453
|
+
|
|
1454
|
+
```ts
|
|
1455
|
+
type FilterFunction = (context: EvalContext) => FilterValue | Promise<FilterValue>;
|
|
1456
|
+
```
|
|
1457
|
+
|
|
1458
|
+
### `FilterOptions`
|
|
1459
|
+
|
|
1460
|
+
```ts
|
|
1461
|
+
interface FilterOptions {
|
|
1462
|
+
label?: string; // Human-readable tile label (defaults to name)
|
|
1463
|
+
condition?: ConditionFunction; // Per-filter gate
|
|
1464
|
+
}
|
|
1465
|
+
```
|
|
1466
|
+
|
|
1467
|
+
### `FilterMeta`
|
|
1468
|
+
|
|
1469
|
+
Metadata auto-derived from computed filter values. Discriminated union by `type`:
|
|
1470
|
+
|
|
1471
|
+
```ts
|
|
1472
|
+
type FilterMeta =
|
|
1473
|
+
| { type: 'boolean'; name: string; label: string }
|
|
1474
|
+
| { type: 'number'; name: string; label: string; min: number; max: number }
|
|
1475
|
+
| { type: 'string'; name: string; label: string; values: string[] }
|
|
1476
|
+
| { type: 'date'; name: string; label: string; min: string; max: string };
|
|
1477
|
+
```
|
|
1478
|
+
|
|
1479
|
+
### `DashboardPayload`
|
|
1480
|
+
|
|
1481
|
+
```ts
|
|
1482
|
+
interface DashboardPayload {
|
|
1483
|
+
sessions: DashboardSessionRow[]; // One page of matching sessions
|
|
1484
|
+
filterMeta: FilterMeta[]; // One per registered filter
|
|
1485
|
+
totalDurationMs: number; // Server-side computation time
|
|
1486
|
+
totalCount: number; // Total sessions before filtering
|
|
1487
|
+
matchingCount: number; // Total sessions after filtering
|
|
1488
|
+
page: number; // Current page (1-based)
|
|
1489
|
+
pageSize: number; // Items per page
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
interface DashboardSessionRow {
|
|
1493
|
+
projectName: string;
|
|
1494
|
+
sessionId: string;
|
|
1495
|
+
lastModified: string; // ISO 8601
|
|
1496
|
+
lastModifiedFormatted: string; // Human-readable
|
|
1497
|
+
filterValues: Record<string, FilterValue>;
|
|
1498
|
+
}
|
|
1499
|
+
```
|
|
1500
|
+
|
|
1501
|
+
### `EvalScope`
|
|
1502
|
+
|
|
1503
|
+
```ts
|
|
1504
|
+
type EvalScope = 'session' | 'subagent' | 'both';
|
|
1505
|
+
```
|
|
1506
|
+
|
|
1507
|
+
---
|
|
1508
|
+
|
|
1509
|
+
## Examples
|
|
1510
|
+
|
|
1511
|
+
Complete, runnable example files. Save any of these as a `.js` file and run with `claudeye --evals ./your-file.js`.
|
|
1512
|
+
|
|
1513
|
+
### Example: Basic Evals & Enrichments
|
|
1514
|
+
|
|
1515
|
+
The quickstart example — define evals and enrichments in one file:
|
|
1516
|
+
|
|
1517
|
+
```js
|
|
1518
|
+
import { createApp } from 'claudeye';
|
|
1519
|
+
|
|
1520
|
+
const app = createApp();
|
|
1521
|
+
|
|
1522
|
+
// ── Global condition ────────────────────────────────────────────
|
|
1523
|
+
// Skip empty sessions across evals, enrichments, AND dashboard filters.
|
|
1524
|
+
app.condition(({ entries }) => entries.length > 0);
|
|
1525
|
+
|
|
1526
|
+
// ── Evals ───────────────────────────────────────────────────────
|
|
1527
|
+
|
|
1528
|
+
app.eval('under-50-turns', ({ stats }) => ({
|
|
1529
|
+
pass: stats.turnCount <= 50,
|
|
1530
|
+
score: Math.max(0, 1 - stats.turnCount / 100),
|
|
1531
|
+
message: `${stats.turnCount} turn(s)`,
|
|
1532
|
+
}));
|
|
1533
|
+
|
|
1534
|
+
app.eval('has-completion', ({ entries }) => {
|
|
1535
|
+
const last = [...entries].reverse().find(e => e.type === 'assistant');
|
|
1536
|
+
const hasText = last?.message?.content?.some?.(b => b.type === 'text');
|
|
1537
|
+
return {
|
|
1538
|
+
pass: !!hasText,
|
|
1539
|
+
score: hasText ? 1.0 : 0,
|
|
1540
|
+
message: hasText ? 'Ended with text' : 'No final text response',
|
|
1541
|
+
};
|
|
1542
|
+
});
|
|
1543
|
+
|
|
1544
|
+
app.eval('session-tool-count', ({ entries }) => {
|
|
1545
|
+
const sessionTools = entries
|
|
1546
|
+
.filter(e => e._source === 'session' && e.type === 'assistant')
|
|
1547
|
+
.flatMap(e => (e.message?.content || []).filter(b => b.type === 'tool_use'));
|
|
1548
|
+
return {
|
|
1549
|
+
pass: sessionTools.length <= 100,
|
|
1550
|
+
score: Math.max(0, 1 - sessionTools.length / 200),
|
|
1551
|
+
message: `${sessionTools.length} session-level tool calls`,
|
|
1552
|
+
};
|
|
1553
|
+
});
|
|
1554
|
+
|
|
1555
|
+
// ── Enrichments ─────────────────────────────────────────────────
|
|
1556
|
+
|
|
1557
|
+
app.enrich('session-overview', ({ stats }) => ({
|
|
1558
|
+
'Turns': stats.turnCount,
|
|
1559
|
+
'Tool Calls': stats.toolCallCount,
|
|
1560
|
+
'Subagents': stats.subagentCount,
|
|
1561
|
+
'Duration': stats.duration,
|
|
1562
|
+
'Models': stats.models.join(', ') || 'none',
|
|
1563
|
+
}));
|
|
1564
|
+
|
|
1565
|
+
app.listen();
|
|
1566
|
+
```
|
|
1567
|
+
|
|
1568
|
+
### Example: Dashboard Filters
|
|
1569
|
+
|
|
1570
|
+
Named dashboard views with focused filter sets, evals, and enrichments:
|
|
1571
|
+
|
|
1572
|
+
```js
|
|
1573
|
+
import { createApp } from 'claudeye';
|
|
1574
|
+
|
|
1575
|
+
const app = createApp();
|
|
1576
|
+
|
|
1577
|
+
// ── Global condition ────────────────────────────────────────────
|
|
1578
|
+
app.condition(({ entries }) => entries.length > 0);
|
|
1579
|
+
|
|
1580
|
+
// ── Performance view ────────────────────────────────────────────
|
|
1581
|
+
app.dashboard.view('performance', { label: 'Performance Metrics' })
|
|
1582
|
+
.filter({ preBuilt: ['lastModified'] })
|
|
1583
|
+
.filter('turn-count', ({ stats }) => stats.turnCount, { label: 'Turn Count' })
|
|
1584
|
+
.filter('tool-calls', ({ stats }) => stats.toolCallCount, { label: 'Tool Calls' })
|
|
1585
|
+
.filter('avg-tools-per-turn',
|
|
1586
|
+
({ stats }) => stats.turnCount > 0
|
|
1587
|
+
? Math.round(stats.toolCallCount / stats.turnCount * 10) / 10
|
|
1588
|
+
: 0,
|
|
1589
|
+
{
|
|
1590
|
+
label: 'Avg Tools/Turn',
|
|
1591
|
+
condition: ({ stats }) => stats.toolCallCount > 0,
|
|
1592
|
+
}
|
|
1593
|
+
);
|
|
1594
|
+
|
|
1595
|
+
// ── Quality view ────────────────────────────────────────────────
|
|
1596
|
+
app.dashboard.view('quality', { label: 'Quality Checks' })
|
|
1597
|
+
.filter('has-errors', ({ entries }) =>
|
|
1598
|
+
entries.some(e =>
|
|
1599
|
+
e.type === 'assistant' &&
|
|
1600
|
+
Array.isArray(e.message?.content) &&
|
|
1601
|
+
e.message.content.some(b => b.type === 'tool_use' && b.is_error)
|
|
1602
|
+
),
|
|
1603
|
+
{ label: 'Has Errors' }
|
|
1604
|
+
)
|
|
1605
|
+
.filter('primary-model', ({ stats }) => stats.models[0] || 'unknown',
|
|
1606
|
+
{ label: 'Primary Model' }
|
|
1607
|
+
)
|
|
1608
|
+
.filter('uses-subagents', ({ stats }) => stats.subagentCount > 0,
|
|
1609
|
+
{ label: 'Uses Subagents' }
|
|
1610
|
+
);
|
|
1611
|
+
|
|
1612
|
+
// ── Evals ───────────────────────────────────────────────────────
|
|
1613
|
+
|
|
1614
|
+
app.eval('under-50-turns', ({ stats }) => ({
|
|
1615
|
+
pass: stats.turnCount <= 50,
|
|
1616
|
+
score: Math.max(0, 1 - stats.turnCount / 100),
|
|
1617
|
+
message: `${stats.turnCount} turn(s)`,
|
|
1618
|
+
}));
|
|
1619
|
+
|
|
1620
|
+
app.eval('has-completion', ({ entries }) => {
|
|
1621
|
+
const last = [...entries].reverse().find(e => e.type === 'assistant');
|
|
1622
|
+
const hasText = last?.message?.content?.some?.(b => b.type === 'text');
|
|
1623
|
+
return {
|
|
1624
|
+
pass: !!hasText,
|
|
1625
|
+
score: hasText ? 1.0 : 0,
|
|
1626
|
+
message: hasText ? 'Ended with text' : 'No final text response',
|
|
1627
|
+
};
|
|
1628
|
+
});
|
|
1629
|
+
|
|
1630
|
+
app.eval('session-tool-count', ({ entries }) => {
|
|
1631
|
+
const sessionTools = entries
|
|
1632
|
+
.filter(e => e._source === 'session' && e.type === 'assistant')
|
|
1633
|
+
.flatMap(e => (e.message?.content || []).filter(b => b.type === 'tool_use'));
|
|
1634
|
+
return {
|
|
1635
|
+
pass: sessionTools.length <= 100,
|
|
1636
|
+
score: Math.max(0, 1 - sessionTools.length / 200),
|
|
1637
|
+
message: `${sessionTools.length} session-level tool calls`,
|
|
1638
|
+
};
|
|
1639
|
+
});
|
|
1640
|
+
|
|
1641
|
+
// ── Enrichments ─────────────────────────────────────────────────
|
|
1642
|
+
|
|
1643
|
+
app.enrich('session-overview', ({ stats }) => ({
|
|
1644
|
+
'Turns': stats.turnCount,
|
|
1645
|
+
'Tool Calls': stats.toolCallCount,
|
|
1646
|
+
'Subagents': stats.subagentCount,
|
|
1647
|
+
'Duration': stats.duration,
|
|
1648
|
+
'Models': stats.models.join(', ') || 'none',
|
|
1649
|
+
}));
|
|
1650
|
+
|
|
1651
|
+
app.listen();
|
|
1652
|
+
```
|
|
1653
|
+
|
|
1654
|
+
### Example: Multi-View Dashboard
|
|
1655
|
+
|
|
1656
|
+
Multiple named views with focused filter sets:
|
|
1657
|
+
|
|
1658
|
+
```js
|
|
1659
|
+
import { createApp } from 'claudeye';
|
|
1660
|
+
|
|
1661
|
+
const app = createApp();
|
|
1662
|
+
|
|
1663
|
+
// ── Performance view ────────────────────────────────────────────
|
|
1664
|
+
// Metrics about session length and tool usage.
|
|
1665
|
+
app.dashboard.view('performance', { label: 'Performance Metrics' })
|
|
1666
|
+
.filter('turn-count', ({ stats }) => stats.turnCount,
|
|
1667
|
+
{ label: 'Turn Count' })
|
|
1668
|
+
.filter('tool-calls', ({ stats }) => stats.toolCallCount,
|
|
1669
|
+
{ label: 'Tool Calls' })
|
|
1670
|
+
.filter('uses-subagents', ({ stats }) => stats.subagentCount > 0,
|
|
1671
|
+
{ label: 'Uses Subagents' });
|
|
1672
|
+
|
|
1673
|
+
// ── Quality view ────────────────────────────────────────────────
|
|
1674
|
+
// Error and model analysis.
|
|
1675
|
+
app.dashboard.view('quality', { label: 'Quality Checks' })
|
|
1676
|
+
.filter('has-errors', ({ entries }) =>
|
|
1677
|
+
entries.some(e =>
|
|
1678
|
+
e.type === 'assistant' &&
|
|
1679
|
+
Array.isArray(e.message?.content) &&
|
|
1680
|
+
e.message.content.some(b => b.type === 'tool_use' && b.is_error)
|
|
1681
|
+
),
|
|
1682
|
+
{ label: 'Has Errors' })
|
|
1683
|
+
.filter('primary-model', ({ stats }) => stats.models[0] || 'unknown',
|
|
1684
|
+
{ label: 'Primary Model' });
|
|
1685
|
+
|
|
1686
|
+
// ── Backward-compatible default filter ──────────────────────────
|
|
1687
|
+
// app.dashboard.filter() still works — goes to the "default" view.
|
|
1688
|
+
// Default filters show below the view cards on /dashboard.
|
|
1689
|
+
app.dashboard.filter('model', ({ stats }) => stats.models[0] || 'unknown',
|
|
1690
|
+
{ label: 'Model' }
|
|
1691
|
+
);
|
|
1692
|
+
|
|
1693
|
+
app.listen();
|
|
1694
|
+
```
|
|
1695
|
+
|
|
1696
|
+
### Example: Eval Score Filters (cachedOnly)
|
|
1697
|
+
|
|
1698
|
+
Per-eval score filters on a `cachedOnly` dashboard view. When a view uses `cachedOnly: true`, filter functions receive `ctx.evalResults` containing cached eval results:
|
|
1699
|
+
|
|
1700
|
+
```js
|
|
1701
|
+
import { createApp } from 'claudeye';
|
|
1702
|
+
|
|
1703
|
+
const app = createApp();
|
|
1704
|
+
|
|
1705
|
+
// ── Register evals that produce scores ──────────────────────────
|
|
1706
|
+
app.eval('quality', ({ entries }) => {
|
|
1707
|
+
const assistantMsgs = entries.filter(e => e.type === 'assistant');
|
|
1708
|
+
const avgLength = assistantMsgs.reduce((sum, e) => {
|
|
1709
|
+
const content = typeof e.message?.content === 'string' ? e.message.content : '';
|
|
1710
|
+
return sum + content.length;
|
|
1711
|
+
}, 0) / (assistantMsgs.length || 1);
|
|
1712
|
+
const score = Math.min(avgLength / 500, 1);
|
|
1713
|
+
return { pass: score > 0.5, score };
|
|
1714
|
+
});
|
|
1715
|
+
|
|
1716
|
+
app.eval('speed', ({ stats }) => {
|
|
1717
|
+
const durationSec = parseFloat(stats.duration) || 60;
|
|
1718
|
+
const score = Math.max(0, 1 - durationSec / 120);
|
|
1719
|
+
return { pass: score > 0.3, score };
|
|
1720
|
+
});
|
|
1721
|
+
|
|
1722
|
+
// ── cachedOnly view with per-eval score filters ─────────────────
|
|
1723
|
+
app.dashboard.view('eval-results', { cachedOnly: true, label: 'Eval Score Filters' })
|
|
1724
|
+
.filter('quality-score',
|
|
1725
|
+
(ctx) => ctx.evalResults?.['quality']?.score ?? 0,
|
|
1726
|
+
{ label: 'Quality Score' })
|
|
1727
|
+
.filter('speed-score',
|
|
1728
|
+
(ctx) => ctx.evalResults?.['speed']?.score ?? 0,
|
|
1729
|
+
{ label: 'Speed Score' })
|
|
1730
|
+
.filter('all-passing', (ctx) => {
|
|
1731
|
+
if (!ctx.evalResults) return false;
|
|
1732
|
+
return Object.values(ctx.evalResults).every(r => r.pass);
|
|
1733
|
+
}, { label: 'All Evals Passing' });
|
|
1734
|
+
|
|
1735
|
+
app.listen();
|
|
1736
|
+
```
|
|
1737
|
+
|
|
1738
|
+
### Example: Actions
|
|
1739
|
+
|
|
1740
|
+
On-demand tasks triggered manually from the dashboard. Actions receive the full session context plus cached eval and enrichment results:
|
|
1741
|
+
|
|
1742
|
+
```js
|
|
1743
|
+
import { createApp } from 'claudeye';
|
|
1744
|
+
|
|
1745
|
+
const app = createApp();
|
|
1746
|
+
|
|
1747
|
+
// ── Evals (actions can read these results) ──────────────────────
|
|
1748
|
+
|
|
1749
|
+
app.eval('under-50-turns', ({ stats }) => ({
|
|
1750
|
+
pass: stats.turnCount <= 50,
|
|
1751
|
+
score: Math.max(0, 1 - stats.turnCount / 100),
|
|
1752
|
+
message: `${stats.turnCount} turn(s)`,
|
|
1753
|
+
}));
|
|
1754
|
+
|
|
1755
|
+
app.eval('has-completion', ({ entries }) => {
|
|
1756
|
+
const last = [...entries].reverse().find(e => e.type === 'assistant');
|
|
1757
|
+
const hasText = last?.message?.content?.some?.(b => b.type === 'text');
|
|
1758
|
+
return {
|
|
1759
|
+
pass: !!hasText,
|
|
1760
|
+
score: hasText ? 1.0 : 0,
|
|
1761
|
+
message: hasText ? 'Ended with text' : 'No final text response',
|
|
1762
|
+
};
|
|
1763
|
+
});
|
|
1764
|
+
|
|
1765
|
+
// ── Enrichments (actions can read these results too) ────────────
|
|
1766
|
+
|
|
1767
|
+
app.enrich('overview', ({ stats }) => ({
|
|
1768
|
+
'Turns': stats.turnCount,
|
|
1769
|
+
'Tool Calls': stats.toolCallCount,
|
|
1770
|
+
'Models': stats.models.join(', ') || 'none',
|
|
1771
|
+
}));
|
|
1772
|
+
|
|
1773
|
+
// ── Actions ─────────────────────────────────────────────────────
|
|
1774
|
+
|
|
1775
|
+
// Session summary: combines stats with eval pass counts
|
|
1776
|
+
app.action('session-summary', ({ stats, evalResults }) => {
|
|
1777
|
+
const evalNames = Object.keys(evalResults);
|
|
1778
|
+
const passCount = evalNames.filter(n => evalResults[n]?.pass).length;
|
|
1779
|
+
return {
|
|
1780
|
+
output: [
|
|
1781
|
+
`Session: ${stats.turnCount} turns, ${stats.toolCallCount} tool calls`,
|
|
1782
|
+
`Duration: ${stats.duration}`,
|
|
1783
|
+
`Models: ${stats.models.join(', ') || 'unknown'}`,
|
|
1784
|
+
`Evals: ${passCount}/${evalNames.length} passed`,
|
|
1785
|
+
].join('\n'),
|
|
1786
|
+
status: 'success',
|
|
1787
|
+
message: 'Summary generated',
|
|
1788
|
+
};
|
|
1789
|
+
});
|
|
1790
|
+
|
|
1791
|
+
// Export metrics: gathers enrichment data into a text report
|
|
1792
|
+
app.action('export-metrics', ({ stats, enrichmentResults }) => {
|
|
1793
|
+
const enrichData = {};
|
|
1794
|
+
for (const [name, result] of Object.entries(enrichmentResults)) {
|
|
1795
|
+
if (result.data) Object.assign(enrichData, result.data);
|
|
1796
|
+
}
|
|
1797
|
+
const lines = [
|
|
1798
|
+
...Object.entries(enrichData).map(([k, v]) => `${k}: ${v}`),
|
|
1799
|
+
`turnCount: ${stats.turnCount}`,
|
|
1800
|
+
`toolCallCount: ${stats.toolCallCount}`,
|
|
1801
|
+
];
|
|
1802
|
+
return {
|
|
1803
|
+
output: lines.join('\n'),
|
|
1804
|
+
status: 'success',
|
|
1805
|
+
message: `Exported ${Object.keys(enrichData).length + 2} metrics`,
|
|
1806
|
+
};
|
|
1807
|
+
});
|
|
1808
|
+
|
|
1809
|
+
// Tool inventory: lists unique tools used in the session
|
|
1810
|
+
app.action('tool-inventory', ({ entries }) => {
|
|
1811
|
+
const toolUses = entries.filter(e =>
|
|
1812
|
+
e.type === 'assistant' &&
|
|
1813
|
+
Array.isArray(e.message?.content) &&
|
|
1814
|
+
e.message.content.some(b => b.type === 'tool_use')
|
|
1815
|
+
);
|
|
1816
|
+
const toolNames = [...new Set(toolUses.flatMap(e =>
|
|
1817
|
+
(e.message?.content || []).filter(b => b.type === 'tool_use').map(b => b.name)
|
|
1818
|
+
))];
|
|
1819
|
+
return {
|
|
1820
|
+
output: toolNames.length > 0
|
|
1821
|
+
? `Tools used:\n${toolNames.map(t => ` - ${t}`).join('\n')}`
|
|
1822
|
+
: 'No tools used in this session',
|
|
1823
|
+
status: 'success',
|
|
1824
|
+
};
|
|
1825
|
+
}, { condition: ({ stats }) => stats.toolCallCount > 0 });
|
|
1826
|
+
|
|
1827
|
+
// Side-effect action: always re-runs (cache: false)
|
|
1828
|
+
app.action('write-report', async ({ projectName, sessionId, stats }) => {
|
|
1829
|
+
const fs = await import('fs/promises');
|
|
1830
|
+
await fs.appendFile('session-reports.jsonl', JSON.stringify({
|
|
1831
|
+
projectName, sessionId, turns: stats.turnCount,
|
|
1832
|
+
timestamp: new Date().toISOString(),
|
|
1833
|
+
}) + '\n');
|
|
1834
|
+
return { status: 'success', message: 'Report appended' };
|
|
1835
|
+
}, { cache: false });
|
|
1836
|
+
|
|
1837
|
+
app.listen();
|
|
1838
|
+
```
|
|
1839
|
+
|
|
1840
|
+
### Example: Alerts
|
|
1841
|
+
|
|
1842
|
+
Callbacks that fire after all evals and enrichments complete for a session:
|
|
1843
|
+
|
|
1844
|
+
```js
|
|
1845
|
+
import { createApp } from 'claudeye';
|
|
1846
|
+
|
|
1847
|
+
const app = createApp();
|
|
1848
|
+
|
|
1849
|
+
// ── Evals ───────────────────────────────────────────────────────
|
|
1850
|
+
|
|
1851
|
+
app.eval('under-50-turns', ({ stats }) => ({
|
|
1852
|
+
pass: stats.turnCount <= 50,
|
|
1853
|
+
score: Math.max(0, 1 - stats.turnCount / 100),
|
|
1854
|
+
message: `${stats.turnCount} turn(s)`,
|
|
1855
|
+
}));
|
|
1856
|
+
|
|
1857
|
+
app.eval('has-completion', ({ entries }) => {
|
|
1858
|
+
const last = [...entries].reverse().find(e => e.type === 'assistant');
|
|
1859
|
+
const hasText = last?.message?.content?.some?.(b => b.type === 'text');
|
|
1860
|
+
return {
|
|
1861
|
+
pass: !!hasText,
|
|
1862
|
+
score: hasText ? 1.0 : 0,
|
|
1863
|
+
message: hasText ? 'Ended with text' : 'No final text response',
|
|
1864
|
+
};
|
|
1865
|
+
});
|
|
1866
|
+
|
|
1867
|
+
// ── Enrichments ─────────────────────────────────────────────────
|
|
1868
|
+
|
|
1869
|
+
app.enrich('overview', ({ stats }) => ({
|
|
1870
|
+
'Turns': stats.turnCount,
|
|
1871
|
+
'Tool Calls': stats.toolCallCount,
|
|
1872
|
+
'Models': stats.models.join(', ') || 'none',
|
|
1873
|
+
}));
|
|
1874
|
+
|
|
1875
|
+
// ── Alerts ──────────────────────────────────────────────────────
|
|
1876
|
+
|
|
1877
|
+
// Console log: always fires, logs a summary line
|
|
1878
|
+
app.alert('log-results', ({ projectName, sessionId, evalSummary, enrichSummary }) => {
|
|
1879
|
+
const evals = evalSummary
|
|
1880
|
+
? `${evalSummary.passCount} pass, ${evalSummary.failCount} fail, ${evalSummary.errorCount} error`
|
|
1881
|
+
: 'no evals';
|
|
1882
|
+
const enrichments = enrichSummary
|
|
1883
|
+
? `${enrichSummary.results.length} enrichments`
|
|
1884
|
+
: 'no enrichments';
|
|
1885
|
+
console.log(`[ALERT] ${projectName}/${sessionId}: ${evals} | ${enrichments}`);
|
|
1886
|
+
});
|
|
1887
|
+
|
|
1888
|
+
// Failure alert: only logs when evals fail
|
|
1889
|
+
app.alert('warn-on-failure', ({ projectName, sessionId, evalSummary }) => {
|
|
1890
|
+
if (evalSummary && evalSummary.failCount > 0) {
|
|
1891
|
+
const failedNames = evalSummary.results
|
|
1892
|
+
.filter(r => !r.error && !r.skipped && !r.pass)
|
|
1893
|
+
.map(r => r.name);
|
|
1894
|
+
console.warn(
|
|
1895
|
+
`[FAILURE] ${projectName}/${sessionId}: ${failedNames.join(', ')} failed`
|
|
1896
|
+
);
|
|
1897
|
+
}
|
|
1898
|
+
});
|
|
1899
|
+
|
|
1900
|
+
// Slack webhook example (uncomment and replace the URL to enable):
|
|
1901
|
+
// app.alert('slack-on-failure', async ({ projectName, sessionId, evalSummary }) => {
|
|
1902
|
+
// if (evalSummary && evalSummary.failCount > 0) {
|
|
1903
|
+
// await fetch('https://hooks.slack.com/services/T.../B.../xxx', {
|
|
1904
|
+
// method: 'POST',
|
|
1905
|
+
// headers: { 'Content-Type': 'application/json' },
|
|
1906
|
+
// body: JSON.stringify({
|
|
1907
|
+
// text: `${evalSummary.failCount} evals failed for ${projectName}/${sessionId}`,
|
|
1908
|
+
// }),
|
|
1909
|
+
// });
|
|
1910
|
+
// }
|
|
1911
|
+
// });
|
|
1912
|
+
|
|
1913
|
+
app.listen();
|
|
1914
|
+
```
|
|
1915
|
+
|
|
1916
|
+
### Example: Minimal Filters Only
|
|
1917
|
+
|
|
1918
|
+
A minimal example — a single named view with filters, no evals or enrichments:
|
|
1919
|
+
|
|
1920
|
+
```js
|
|
1921
|
+
import { createApp } from 'claudeye';
|
|
1922
|
+
|
|
1923
|
+
const app = createApp();
|
|
1924
|
+
|
|
1925
|
+
app.dashboard.view('overview', { label: 'Session Overview' })
|
|
1926
|
+
.filter({ preBuilt: ['lastModified'] })
|
|
1927
|
+
.filter('model', ({ stats }) => stats.models[0] || 'unknown',
|
|
1928
|
+
{ label: 'Model' })
|
|
1929
|
+
.filter('turns', ({ stats }) => stats.turnCount,
|
|
1930
|
+
{ label: 'Turns' })
|
|
1931
|
+
.filter('used-tools', ({ stats }) => stats.toolCallCount > 0,
|
|
1932
|
+
{ label: 'Used Tools' });
|
|
1933
|
+
|
|
1934
|
+
app.listen();
|
|
1935
|
+
```
|
|
1936
|
+
|
|
1937
|
+
---
|
|
1938
|
+
|
|
1939
|
+
## Background Queue Processing
|
|
1940
|
+
|
|
1941
|
+
Enable background processing to automatically scan and evaluate all sessions on a timer:
|
|
1942
|
+
|
|
1943
|
+
```bash
|
|
1944
|
+
claudeye --evals ./my-evals.js --queue-interval 60
|
|
1945
|
+
```
|
|
1946
|
+
|
|
1947
|
+
Use `app.queueCondition()` to gate which sessions the background queue processes:
|
|
1948
|
+
|
|
1949
|
+
```js
|
|
1950
|
+
// Only process sessions with more than 5 entries
|
|
1951
|
+
app.queueCondition(({ entries }) => entries.length > 5);
|
|
1952
|
+
```
|
|
1953
|
+
|
|
1954
|
+
The condition receives the full `EvalContext` and returns a boolean. If false, the session is skipped entirely. Results are cached per-session and auto-invalidate when the session file or condition function changes.
|
|
1955
|
+
|
|
1956
|
+
### How the Queue Works
|
|
1957
|
+
|
|
1958
|
+
The queue is **unified** — every individual eval and enrichment (session-scoped, subagent-scoped, UI-triggered, or background-scanned) passes through a single priority queue with bounded concurrency.
|
|
1959
|
+
|
|
1960
|
+
1. **Foreground (always active):** When a session page loads or a re-run is triggered, each uncached eval/enrichment is enqueued at HIGH priority via `queuePerItem()` and processed immediately (up to the concurrency limit)
|
|
1961
|
+
2. **Background (opt-in):** When `CLAUDEYE_QUEUE_INTERVAL` is set, a timer scans all projects for uncached sessions and enqueues individual uncached evals/enrichments at LOW priority
|
|
1962
|
+
3. **Priority:** HIGH (foreground/UI) items are always processed before LOW (background) items
|
|
1963
|
+
4. **Dedup:** If the same item is enqueued twice, the existing entry is upgraded to the higher priority
|
|
1964
|
+
5. **Subagent support:** Subagent evals/enrichments go through the same queue. The session ID is encoded as `sessionId/agent-agentId` for tracking purposes
|
|
1965
|
+
6. **Alerts:** After each successful item completes, the queue checks if any pending/processing work remains for that session. When no work remains, alerts fire once per content version
|
|
1966
|
+
|
|
1967
|
+
### Queue Status UI
|
|
1968
|
+
|
|
1969
|
+
The queue status is visible in two places:
|
|
1970
|
+
|
|
1971
|
+
**Navbar dropdown** — shows current processing items (max 7) and pending items with priority badges. Badge count = pending + processing.
|
|
1972
|
+
|
|
1973
|
+
**`/queue` details page** — three tabs:
|
|
1974
|
+
- **In Queue** — pending items with type badge, item name, session link, priority, queued time
|
|
1975
|
+
- **Processing** — active items with spinner, type badge, item name, session link, started time
|
|
1976
|
+
- **Processed** — completed items with type badge, item name, session link, duration, success/fail icon, completed time. Data is loaded from disk via paginated JSONL files (25 entries per page), so history survives process restarts
|
|
1977
|
+
|
|
1978
|
+
**Dashboard panel** — collapsible panel showing queue state with processing and pending tables, background processor indicator, and error list.
|
|
1979
|
+
|
|
1980
|
+
All views auto-refresh and self-hide when there's no queue activity.
|
|
1981
|
+
|
|
1982
|
+
### Environment Variables
|
|
1983
|
+
|
|
1984
|
+
| Variable | Description | Default |
|
|
1985
|
+
|----------|-------------|---------|
|
|
1986
|
+
| `CLAUDEYE_QUEUE_INTERVAL` | Background scan interval in seconds | disabled |
|
|
1987
|
+
| `CLAUDEYE_QUEUE_CONCURRENCY` | Max parallel items per batch | `2` |
|
|
1988
|
+
| `CLAUDEYE_QUEUE_HISTORY_TTL` | Seconds to keep completed items | `3600` |
|
|
1989
|
+
| `CLAUDEYE_QUEUE_MAX_ITEMS` | Max items to enqueue per scan (0=unlimited) | `500` |
|
|
1990
|
+
| `CLAUDEYE_LOG_LEVEL` | Log verbosity: `info`, `warn`, `error` | `warn` |
|
|
1991
|
+
|
|
1992
|
+
At `info` level, all log lines (including `ACTIVITY` lines for user actions) are emitted. At `warn` (default), only warnings and errors appear. At `error`, only errors are shown.
|
|
1993
|
+
|
|
1994
|
+
---
|
|
1995
|
+
|
|
1996
|
+
## Caching
|
|
1997
|
+
|
|
1998
|
+
Caching is **always on**. Results are cached to `~/.claudeye/cache/` and automatically invalidated when session logs or eval definitions change. Click **Re-run** in the dashboard to bypass the cache.
|
|
1999
|
+
|
|
2000
|
+
```bash
|
|
2001
|
+
claudeye --cache-path /tmp/cc # Custom cache location
|
|
2002
|
+
claudeye --cache-clear # Clear cache and exit
|
|
2003
|
+
```
|
|
2004
|
+
|
|
2005
|
+
---
|
|
2006
|
+
|
|
2007
|
+
## Authentication
|
|
2008
|
+
|
|
2009
|
+
Claudeye ships with **opt-in** username/password auth. When no users are configured, everything works exactly as before — no login page, no blocking.
|
|
2010
|
+
|
|
2011
|
+
### Enable via CLI
|
|
2012
|
+
|
|
2013
|
+
```bash
|
|
2014
|
+
# Single user
|
|
2015
|
+
claudeye --auth-user admin:secret
|
|
2016
|
+
|
|
2017
|
+
# Multiple users
|
|
2018
|
+
claudeye --auth-user admin:secret --auth-user viewer:readonly
|
|
2019
|
+
```
|
|
2020
|
+
|
|
2021
|
+
### Enable via environment variable
|
|
2022
|
+
|
|
2023
|
+
```bash
|
|
2024
|
+
CLAUDEYE_AUTH_USERS=admin:secret claudeye
|
|
2025
|
+
CLAUDEYE_AUTH_USERS=admin:secret,viewer:readonly claudeye
|
|
2026
|
+
```
|
|
2027
|
+
|
|
2028
|
+
### Enable via the programmatic API
|
|
2029
|
+
|
|
2030
|
+
```js
|
|
2031
|
+
import { createApp } from 'claudeye';
|
|
2032
|
+
|
|
2033
|
+
const app = createApp();
|
|
2034
|
+
|
|
2035
|
+
app.auth({ users: [
|
|
2036
|
+
{ username: 'admin', password: 'secret' },
|
|
2037
|
+
{ username: 'viewer', password: 'readonly' },
|
|
2038
|
+
] });
|
|
2039
|
+
|
|
2040
|
+
app.listen();
|
|
2041
|
+
```
|
|
2042
|
+
|
|
2043
|
+
All three methods can be combined — users from CLI flags, the env var, and `app.auth()` are merged together.
|
|
2044
|
+
|
|
2045
|
+
When auth is active, all UI routes redirect to `/login`. After signing in, a signed session cookie (24h expiry) grants access. A **Sign out** button appears in the navbar.
|
|
2046
|
+
|
|
2047
|
+
---
|
|
2048
|
+
|
|
2049
|
+
## Deployment with PM2
|
|
2050
|
+
|
|
2051
|
+
For production deployments, use PM2 with Bun as the interpreter:
|
|
2052
|
+
|
|
2053
|
+
```js
|
|
2054
|
+
// ecosystem.config.cjs
|
|
2055
|
+
module.exports = {
|
|
2056
|
+
apps: [{
|
|
2057
|
+
name: 'claudeye',
|
|
2058
|
+
script: 'node_modules/.bin/next',
|
|
2059
|
+
args: 'start',
|
|
2060
|
+
interpreter: 'bun',
|
|
2061
|
+
cwd: '/path/to/claudeye',
|
|
2062
|
+
env: {
|
|
2063
|
+
PORT: 8020,
|
|
2064
|
+
HOSTNAME: '0.0.0.0',
|
|
2065
|
+
CLAUDE_PROJECTS_PATH: '/home/user/.claude/projects',
|
|
2066
|
+
CLAUDEYE_EVALS_MODULE: './my-evals.js',
|
|
2067
|
+
CLAUDEYE_QUEUE_INTERVAL: '60',
|
|
2068
|
+
},
|
|
2069
|
+
}],
|
|
2070
|
+
};
|
|
2071
|
+
```
|
|
2072
|
+
|
|
2073
|
+
```bash
|
|
2074
|
+
# Start
|
|
2075
|
+
pm2 start ecosystem.config.cjs
|
|
2076
|
+
|
|
2077
|
+
# Monitor
|
|
2078
|
+
pm2 monit
|
|
2079
|
+
|
|
2080
|
+
# Auto-restart on reboot
|
|
2081
|
+
pm2 startup
|
|
2082
|
+
pm2 save
|
|
2083
|
+
```
|
|
2084
|
+
|
|
2085
|
+
---
|
|
2086
|
+
|
|
2087
|
+
## How It Works
|
|
2088
|
+
|
|
2089
|
+
1. `createApp()` + `app.eval()` / `app.enrich()` / `app.action()` / `app.alert()` / `app.condition()` / `app.queueCondition()` / `app.dashboard.view()` / `app.dashboard.filter()` / `app.dashboard.aggregate()` register functions in global registries
|
|
2090
|
+
2. When you run `claudeye --evals ./my-file.js`, the server dynamically imports your file, populating the registries
|
|
2091
|
+
3. All eval/enrichment execution routes through a unified priority queue. Each individual eval and enrichment is a separate queue item. UI requests use HIGH priority; background scanning uses LOW priority
|
|
2092
|
+
4. Each item runs through: cache check → execute if uncached → cache result → check if session complete → fire alerts if complete
|
|
2093
|
+
5. The global condition is checked first. If it fails, everything is skipped
|
|
2094
|
+
6. Per-item conditions are checked individually. Skipped items don't block others
|
|
2095
|
+
7. Each function is individually error-isolated. If one throws, the others still run
|
|
2096
|
+
8. After all evals and enrichments complete, registered alerts fire with the complete `AlertContext` (eval summary + enrichment summary)
|
|
2097
|
+
9. Results are serialized and displayed in separate panels in the dashboard UI
|
|
2098
|
+
10. Named dashboard views (`/dashboard`) show a view index; each view (`/dashboard/[viewName]`) computes filter values incrementally (only new/changed sessions are processed), then filters and paginates server-side for efficiency
|
|
2099
|
+
11. Dashboard aggregates run a separate server action that collects per-session values (with eval/enrichment/filter results) and reduces them via user-defined reduce functions into sortable summary tables
|
|
2100
|
+
12. When `CLAUDEYE_QUEUE_INTERVAL` is set, a background processor scans for uncached items on a timer. Track queue state at `/queue` or via the navbar dropdown
|
|
2101
|
+
|
|
2102
|
+
---
|
|
2103
|
+
|
|
2104
|
+
## Community
|
|
2105
|
+
|
|
2106
|
+
- [Discord](https://discord.com/invite/zT92CAgvkj) - get help and connect with other developers
|
|
2107
|
+
- [Issues](https://github.com/exospherehost/claudeye/issues) - bug reports and feature requests
|
|
2108
|
+
|
|
2109
|
+
## License
|
|
2110
|
+
|
|
2111
|
+
MIT + Commons Clause. See [LICENSE](./LICENSE).
|