@cveld/claude-code-dashboard 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +22 -0
  3. package/.next/build/56416d4ae4ce586f.js +6 -0
  4. package/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +206 -0
  5. package/.next/build/chunks/[root-of-the-server]__1f933tp._.js +500 -0
  6. package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +13 -0
  7. package/.next/build/chunks/[turbopack]_runtime.js +890 -0
  8. package/.next/build/chunks/node_modules_20v-8wl._.js +6824 -0
  9. package/.next/build/package.json +1 -0
  10. package/.next/build-manifest.json +20 -0
  11. package/.next/diagnostics/build-diagnostics.json +6 -0
  12. package/.next/diagnostics/framework.json +1 -0
  13. package/.next/diagnostics/route-bundle-stats.json +81 -0
  14. package/.next/export-marker.json +6 -0
  15. package/.next/fallback-build-manifest.json +13 -0
  16. package/.next/images-manifest.json +68 -0
  17. package/.next/next-minimal-server.js.nft.json +1 -0
  18. package/.next/next-server.js.nft.json +1 -0
  19. package/.next/package.json +1 -0
  20. package/.next/prerender-manifest.json +162 -0
  21. package/.next/required-server-files.js +333 -0
  22. package/.next/required-server-files.json +333 -0
  23. package/.next/routes-manifest.json +179 -0
  24. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  25. package/.next/server/app/_global-error/page/build-manifest.json +16 -0
  26. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  27. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  28. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  29. package/.next/server/app/_global-error/page.js +10 -0
  30. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  31. package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  32. package/.next/server/app/_global-error.html +1 -0
  33. package/.next/server/app/_global-error.meta +15 -0
  34. package/.next/server/app/_global-error.rsc +15 -0
  35. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  36. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  37. package/.next/server/app/_global-error.segments/_head.segment.rsc +6 -0
  38. package/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
  39. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  40. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  41. package/.next/server/app/_not-found/page/build-manifest.json +16 -0
  42. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  43. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  44. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  45. package/.next/server/app/_not-found/page.js +13 -0
  46. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  47. package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  48. package/.next/server/app/_not-found.html +1 -0
  49. package/.next/server/app/_not-found.meta +16 -0
  50. package/.next/server/app/_not-found.rsc +16 -0
  51. package/.next/server/app/_not-found.segments/_full.segment.rsc +16 -0
  52. package/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  53. package/.next/server/app/_not-found.segments/_index.segment.rsc +5 -0
  54. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  55. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  56. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
  57. package/.next/server/app/api/active-sessions/route/app-paths-manifest.json +3 -0
  58. package/.next/server/app/api/active-sessions/route/build-manifest.json +9 -0
  59. package/.next/server/app/api/active-sessions/route/server-reference-manifest.json +4 -0
  60. package/.next/server/app/api/active-sessions/route.js +7 -0
  61. package/.next/server/app/api/active-sessions/route.js.nft.json +1 -0
  62. package/.next/server/app/api/active-sessions/route_client-reference-manifest.js +3 -0
  63. package/.next/server/app/api/events/route/app-paths-manifest.json +3 -0
  64. package/.next/server/app/api/events/route/build-manifest.json +9 -0
  65. package/.next/server/app/api/events/route/server-reference-manifest.json +4 -0
  66. package/.next/server/app/api/events/route.js +6 -0
  67. package/.next/server/app/api/events/route.js.nft.json +1 -0
  68. package/.next/server/app/api/events/route_client-reference-manifest.js +3 -0
  69. package/.next/server/app/api/hooks/route/app-paths-manifest.json +3 -0
  70. package/.next/server/app/api/hooks/route/build-manifest.json +9 -0
  71. package/.next/server/app/api/hooks/route/server-reference-manifest.json +4 -0
  72. package/.next/server/app/api/hooks/route.js +7 -0
  73. package/.next/server/app/api/hooks/route.js.nft.json +1 -0
  74. package/.next/server/app/api/hooks/route_client-reference-manifest.js +3 -0
  75. package/.next/server/app/api/ide-windows/open-file/route/app-paths-manifest.json +3 -0
  76. package/.next/server/app/api/ide-windows/open-file/route/build-manifest.json +9 -0
  77. package/.next/server/app/api/ide-windows/open-file/route/server-reference-manifest.json +4 -0
  78. package/.next/server/app/api/ide-windows/open-file/route.js +8 -0
  79. package/.next/server/app/api/ide-windows/open-file/route.js.nft.json +1 -0
  80. package/.next/server/app/api/ide-windows/open-file/route_client-reference-manifest.js +3 -0
  81. package/.next/server/app/api/ide-windows/route/app-paths-manifest.json +3 -0
  82. package/.next/server/app/api/ide-windows/route/build-manifest.json +9 -0
  83. package/.next/server/app/api/ide-windows/route/server-reference-manifest.json +4 -0
  84. package/.next/server/app/api/ide-windows/route.js +7 -0
  85. package/.next/server/app/api/ide-windows/route.js.nft.json +1 -0
  86. package/.next/server/app/api/ide-windows/route_client-reference-manifest.js +3 -0
  87. package/.next/server/app/api/projects/[slug]/sessions/[id]/route/app-paths-manifest.json +3 -0
  88. package/.next/server/app/api/projects/[slug]/sessions/[id]/route/build-manifest.json +9 -0
  89. package/.next/server/app/api/projects/[slug]/sessions/[id]/route/server-reference-manifest.json +4 -0
  90. package/.next/server/app/api/projects/[slug]/sessions/[id]/route.js +7 -0
  91. package/.next/server/app/api/projects/[slug]/sessions/[id]/route.js.nft.json +1 -0
  92. package/.next/server/app/api/projects/[slug]/sessions/[id]/route_client-reference-manifest.js +3 -0
  93. package/.next/server/app/api/projects/[slug]/sessions/[id]/stats/route/app-paths-manifest.json +3 -0
  94. package/.next/server/app/api/projects/[slug]/sessions/[id]/stats/route/build-manifest.json +9 -0
  95. package/.next/server/app/api/projects/[slug]/sessions/[id]/stats/route/server-reference-manifest.json +4 -0
  96. package/.next/server/app/api/projects/[slug]/sessions/[id]/stats/route.js +7 -0
  97. package/.next/server/app/api/projects/[slug]/sessions/[id]/stats/route.js.nft.json +1 -0
  98. package/.next/server/app/api/projects/[slug]/sessions/[id]/stats/route_client-reference-manifest.js +3 -0
  99. package/.next/server/app/api/projects/[slug]/sessions/route/app-paths-manifest.json +3 -0
  100. package/.next/server/app/api/projects/[slug]/sessions/route/build-manifest.json +9 -0
  101. package/.next/server/app/api/projects/[slug]/sessions/route/server-reference-manifest.json +4 -0
  102. package/.next/server/app/api/projects/[slug]/sessions/route.js +7 -0
  103. package/.next/server/app/api/projects/[slug]/sessions/route.js.nft.json +1 -0
  104. package/.next/server/app/api/projects/[slug]/sessions/route_client-reference-manifest.js +3 -0
  105. package/.next/server/app/api/projects/route/app-paths-manifest.json +3 -0
  106. package/.next/server/app/api/projects/route/build-manifest.json +9 -0
  107. package/.next/server/app/api/projects/route/server-reference-manifest.json +4 -0
  108. package/.next/server/app/api/projects/route.js +7 -0
  109. package/.next/server/app/api/projects/route.js.nft.json +1 -0
  110. package/.next/server/app/api/projects/route_client-reference-manifest.js +3 -0
  111. package/.next/server/app/api/read-state/route/app-paths-manifest.json +3 -0
  112. package/.next/server/app/api/read-state/route/build-manifest.json +9 -0
  113. package/.next/server/app/api/read-state/route/server-reference-manifest.json +4 -0
  114. package/.next/server/app/api/read-state/route.js +7 -0
  115. package/.next/server/app/api/read-state/route.js.nft.json +1 -0
  116. package/.next/server/app/api/read-state/route_client-reference-manifest.js +3 -0
  117. package/.next/server/app/api/sessions/route/app-paths-manifest.json +3 -0
  118. package/.next/server/app/api/sessions/route/build-manifest.json +9 -0
  119. package/.next/server/app/api/sessions/route/server-reference-manifest.json +4 -0
  120. package/.next/server/app/api/sessions/route.js +7 -0
  121. package/.next/server/app/api/sessions/route.js.nft.json +1 -0
  122. package/.next/server/app/api/sessions/route_client-reference-manifest.js +3 -0
  123. package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
  124. package/.next/server/app/api/settings/route/build-manifest.json +9 -0
  125. package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
  126. package/.next/server/app/api/settings/route.js +7 -0
  127. package/.next/server/app/api/settings/route.js.nft.json +1 -0
  128. package/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
  129. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  130. package/.next/server/app/favicon.ico/route/build-manifest.json +9 -0
  131. package/.next/server/app/favicon.ico/route.js +8 -0
  132. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  133. package/.next/server/app/favicon.ico.body +0 -0
  134. package/.next/server/app/favicon.ico.meta +1 -0
  135. package/.next/server/app/index.html +1 -0
  136. package/.next/server/app/index.meta +14 -0
  137. package/.next/server/app/index.rsc +20 -0
  138. package/.next/server/app/index.segments/__PAGE__.segment.rsc +9 -0
  139. package/.next/server/app/index.segments/_full.segment.rsc +20 -0
  140. package/.next/server/app/index.segments/_head.segment.rsc +6 -0
  141. package/.next/server/app/index.segments/_index.segment.rsc +5 -0
  142. package/.next/server/app/index.segments/_tree.segment.rsc +4 -0
  143. package/.next/server/app/page/app-paths-manifest.json +3 -0
  144. package/.next/server/app/page/build-manifest.json +16 -0
  145. package/.next/server/app/page/next-font-manifest.json +11 -0
  146. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  147. package/.next/server/app/page/server-reference-manifest.json +4 -0
  148. package/.next/server/app/page.js +14 -0
  149. package/.next/server/app/page.js.nft.json +1 -0
  150. package/.next/server/app/page_client-reference-manifest.js +3 -0
  151. package/.next/server/app/projects/[slug]/page/app-paths-manifest.json +3 -0
  152. package/.next/server/app/projects/[slug]/page/build-manifest.json +16 -0
  153. package/.next/server/app/projects/[slug]/page/next-font-manifest.json +11 -0
  154. package/.next/server/app/projects/[slug]/page/react-loadable-manifest.json +1 -0
  155. package/.next/server/app/projects/[slug]/page/server-reference-manifest.json +4 -0
  156. package/.next/server/app/projects/[slug]/page.js +14 -0
  157. package/.next/server/app/projects/[slug]/page.js.nft.json +1 -0
  158. package/.next/server/app/projects/[slug]/page_client-reference-manifest.js +3 -0
  159. package/.next/server/app/projects/[slug]/sessions/[id]/page/app-paths-manifest.json +3 -0
  160. package/.next/server/app/projects/[slug]/sessions/[id]/page/build-manifest.json +16 -0
  161. package/.next/server/app/projects/[slug]/sessions/[id]/page/next-font-manifest.json +11 -0
  162. package/.next/server/app/projects/[slug]/sessions/[id]/page/react-loadable-manifest.json +1 -0
  163. package/.next/server/app/projects/[slug]/sessions/[id]/page/server-reference-manifest.json +4 -0
  164. package/.next/server/app/projects/[slug]/sessions/[id]/page.js +14 -0
  165. package/.next/server/app/projects/[slug]/sessions/[id]/page.js.nft.json +1 -0
  166. package/.next/server/app/projects/[slug]/sessions/[id]/page_client-reference-manifest.js +3 -0
  167. package/.next/server/app/sessions/page/app-paths-manifest.json +3 -0
  168. package/.next/server/app/sessions/page/build-manifest.json +16 -0
  169. package/.next/server/app/sessions/page/next-font-manifest.json +11 -0
  170. package/.next/server/app/sessions/page/react-loadable-manifest.json +1 -0
  171. package/.next/server/app/sessions/page/server-reference-manifest.json +4 -0
  172. package/.next/server/app/sessions/page.js +14 -0
  173. package/.next/server/app/sessions/page.js.nft.json +1 -0
  174. package/.next/server/app/sessions/page_client-reference-manifest.js +3 -0
  175. package/.next/server/app/sessions.html +1 -0
  176. package/.next/server/app/sessions.meta +15 -0
  177. package/.next/server/app/sessions.rsc +22 -0
  178. package/.next/server/app/sessions.segments/_full.segment.rsc +22 -0
  179. package/.next/server/app/sessions.segments/_head.segment.rsc +6 -0
  180. package/.next/server/app/sessions.segments/_index.segment.rsc +5 -0
  181. package/.next/server/app/sessions.segments/_tree.segment.rsc +4 -0
  182. package/.next/server/app/sessions.segments/sessions/__PAGE__.segment.rsc +9 -0
  183. package/.next/server/app/sessions.segments/sessions.segment.rsc +5 -0
  184. package/.next/server/app/settings/page/app-paths-manifest.json +3 -0
  185. package/.next/server/app/settings/page/build-manifest.json +16 -0
  186. package/.next/server/app/settings/page/next-font-manifest.json +11 -0
  187. package/.next/server/app/settings/page/react-loadable-manifest.json +1 -0
  188. package/.next/server/app/settings/page/server-reference-manifest.json +4 -0
  189. package/.next/server/app/settings/page.js +14 -0
  190. package/.next/server/app/settings/page.js.nft.json +1 -0
  191. package/.next/server/app/settings/page_client-reference-manifest.js +3 -0
  192. package/.next/server/app/settings.html +1 -0
  193. package/.next/server/app/settings.meta +15 -0
  194. package/.next/server/app/settings.rsc +22 -0
  195. package/.next/server/app/settings.segments/_full.segment.rsc +22 -0
  196. package/.next/server/app/settings.segments/_head.segment.rsc +6 -0
  197. package/.next/server/app/settings.segments/_index.segment.rsc +5 -0
  198. package/.next/server/app/settings.segments/_tree.segment.rsc +4 -0
  199. package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +9 -0
  200. package/.next/server/app/settings.segments/settings.segment.rsc +5 -0
  201. package/.next/server/app-paths-manifest.json +22 -0
  202. package/.next/server/chunks/1oeh_server_app_api_projects_[slug]_sessions_[id]_route_actions_01b8tmq.js +3 -0
  203. package/.next/server/chunks/1oeh_server_app_api_projects_[slug]_sessions_[id]_stats_route_actions_064pgkl.js +3 -0
  204. package/.next/server/chunks/[externals]__0cw38x_._.js +3 -0
  205. package/.next/server/chunks/[externals]_next_dist_0iuj5m_._.js +3 -0
  206. package/.next/server/chunks/[root-of-the-server]__0ar_4rh._.js +3 -0
  207. package/.next/server/chunks/[root-of-the-server]__0fg20td._.js +3 -0
  208. package/.next/server/chunks/[root-of-the-server]__0ganxa6._.js +3 -0
  209. package/.next/server/chunks/[root-of-the-server]__15bjnu5._.js +3 -0
  210. package/.next/server/chunks/[root-of-the-server]__1cweor1._.js +6 -0
  211. package/.next/server/chunks/[root-of-the-server]__1ghfjss._.js +3 -0
  212. package/.next/server/chunks/[root-of-the-server]__1l7w387._.js +3 -0
  213. package/.next/server/chunks/[root-of-the-server]__1lmmlo2._.js +3 -0
  214. package/.next/server/chunks/[root-of-the-server]__1m4dzgc._.js +3 -0
  215. package/.next/server/chunks/[root-of-the-server]__1v06zo-._.js +18 -0
  216. package/.next/server/chunks/[root-of-the-server]__1vkgjto._.js +3 -0
  217. package/.next/server/chunks/[root-of-the-server]__1xqtps_._.js +3 -0
  218. package/.next/server/chunks/[root-of-the-server]__20bll7z._.js +3 -0
  219. package/.next/server/chunks/[turbopack]_runtime.js +903 -0
  220. package/.next/server/chunks/_next-internal_server_app_api_active-sessions_route_actions_1mruej-.js +3 -0
  221. package/.next/server/chunks/_next-internal_server_app_api_events_route_actions_1ozh0xo.js +3 -0
  222. package/.next/server/chunks/_next-internal_server_app_api_hooks_route_actions_1twkiuh.js +3 -0
  223. package/.next/server/chunks/_next-internal_server_app_api_ide-windows_open-file_route_actions_05rmx0u.js +3 -0
  224. package/.next/server/chunks/_next-internal_server_app_api_ide-windows_route_actions_1j8jxr2.js +3 -0
  225. package/.next/server/chunks/_next-internal_server_app_api_projects_[slug]_sessions_route_actions_11ondpm.js +3 -0
  226. package/.next/server/chunks/_next-internal_server_app_api_projects_route_actions_0h5ne2f.js +3 -0
  227. package/.next/server/chunks/_next-internal_server_app_api_read-state_route_actions_1lvdxyx.js +3 -0
  228. package/.next/server/chunks/_next-internal_server_app_api_sessions_route_actions_1lwcye0.js +3 -0
  229. package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
  230. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +3 -0
  231. package/.next/server/chunks/node_modules_next_08s853w._.js +13 -0
  232. package/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_1n41rqb.js +3 -0
  233. package/.next/server/chunks/ssr/[root-of-the-server]__00wq1di._.js +3 -0
  234. package/.next/server/chunks/ssr/[root-of-the-server]__01629yw._.js +3 -0
  235. package/.next/server/chunks/ssr/[root-of-the-server]__04-vf_h._.js +3 -0
  236. package/.next/server/chunks/ssr/[root-of-the-server]__04at3p9._.js +3 -0
  237. package/.next/server/chunks/ssr/[root-of-the-server]__099kh0h._.js +3 -0
  238. package/.next/server/chunks/ssr/[root-of-the-server]__0_wvthf._.js +3 -0
  239. package/.next/server/chunks/ssr/[root-of-the-server]__0bbnd5m._.js +3 -0
  240. package/.next/server/chunks/ssr/[root-of-the-server]__0c6sjbl._.js +33 -0
  241. package/.next/server/chunks/ssr/[root-of-the-server]__0rolufp._.js +3 -0
  242. package/.next/server/chunks/ssr/[root-of-the-server]__1bswcs6._.js +3 -0
  243. package/.next/server/chunks/ssr/[root-of-the-server]__1t3wpve._.js +33 -0
  244. package/.next/server/chunks/ssr/[root-of-the-server]__20mk1ng._.js +3 -0
  245. package/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
  246. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
  247. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
  248. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
  249. package/.next/server/chunks/ssr/_next-internal_server_app_projects_[slug]_page_actions_1krj79u.js +3 -0
  250. package/.next/server/chunks/ssr/_next-internal_server_app_projects_[slug]_sessions_[id]_page_actions_1ozhukn.js +3 -0
  251. package/.next/server/chunks/ssr/_next-internal_server_app_sessions_page_actions_0xuj53o.js +3 -0
  252. package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_11x4dq5.js +3 -0
  253. package/.next/server/chunks/ssr/app_03tmq2k._.js +3 -0
  254. package/.next/server/chunks/ssr/app_070rikg._.js +3 -0
  255. package/.next/server/chunks/ssr/app_0a8shkr._.js +3 -0
  256. package/.next/server/chunks/ssr/app_0w_7e-7._.js +3 -0
  257. package/.next/server/chunks/ssr/app_12y1i81._.js +3 -0
  258. package/.next/server/chunks/ssr/app_sessions_page_tsx_0r1_4_3._.js +3 -0
  259. package/.next/server/chunks/ssr/node_modules_09r9c10._.js +3 -0
  260. package/.next/server/chunks/ssr/node_modules_0h91jdk._.js +33 -0
  261. package/.next/server/chunks/ssr/node_modules_0n54n-3._.js +6 -0
  262. package/.next/server/chunks/ssr/node_modules_0t1x1j-._.js +6 -0
  263. package/.next/server/chunks/ssr/node_modules_next_dist_0opsz1q._.js +6 -0
  264. package/.next/server/chunks/ssr/node_modules_next_dist_172hvm-._.js +19 -0
  265. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
  266. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
  267. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js +3 -0
  268. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
  269. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0048lj3.js +4 -0
  270. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_04tpgk4.js +4 -0
  271. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0eus7_z.js +4 -0
  272. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1-eo8o_.js +4 -0
  273. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_13q04th.js +4 -0
  274. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_14nruh7.js +4 -0
  275. package/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1t76g2k.js +4 -0
  276. package/.next/server/functions-config-manifest.json +7 -0
  277. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  278. package/.next/server/middleware-build-manifest.js +20 -0
  279. package/.next/server/middleware-manifest.json +6 -0
  280. package/.next/server/next-font-manifest.js +1 -0
  281. package/.next/server/next-font-manifest.json +31 -0
  282. package/.next/server/pages/404.html +1 -0
  283. package/.next/server/pages/500.html +1 -0
  284. package/.next/server/pages-manifest.json +4 -0
  285. package/.next/server/prefetch-hints.json +1 -0
  286. package/.next/server/server-reference-manifest.js +1 -0
  287. package/.next/server/server-reference-manifest.json +5 -0
  288. package/.next/static/JwAv52_hKL5RvE6jHOHqW/_buildManifest.js +11 -0
  289. package/.next/static/JwAv52_hKL5RvE6jHOHqW/_clientMiddlewareManifest.js +1 -0
  290. package/.next/static/JwAv52_hKL5RvE6jHOHqW/_ssgManifest.js +1 -0
  291. package/.next/static/chunks/05-c3ty_6dwfk.js +1 -0
  292. package/.next/static/chunks/0a-z-4lzejxa5.js +31 -0
  293. package/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  294. package/.next/static/chunks/0fojz1av8orjn.js +1 -0
  295. package/.next/static/chunks/10muk0s002m9w.js +5 -0
  296. package/.next/static/chunks/13-91ej73bokj.js +1 -0
  297. package/.next/static/chunks/1n1ridunum85u.js +1 -0
  298. package/.next/static/chunks/2im7c515bo69p.js +1 -0
  299. package/.next/static/chunks/2srorc5swsbp8.js +1 -0
  300. package/.next/static/chunks/3169xe9c23x7o.js +1 -0
  301. package/.next/static/chunks/3231_ouxk25si.css +3 -0
  302. package/.next/static/chunks/3osz1lu0pvrpt.js +1 -0
  303. package/.next/static/chunks/3yao5u25-bf0g.js +1 -0
  304. package/.next/static/chunks/turbopack-3n81e4sp2kiud.js +1 -0
  305. package/.next/static/media/4fa387ec64143e14-s.2tuy5pz7dlieh.woff2 +0 -0
  306. package/.next/static/media/53b9e256198e5412-s.390ncx5urfkfu.woff2 +0 -0
  307. package/.next/static/media/5ce348bf30bf5439-s.31988l_ccedte.woff2 +0 -0
  308. package/.next/static/media/6306c77e7c8268e4-s.2dbetqa9o8jxf.woff2 +0 -0
  309. package/.next/static/media/7178b3e590c64307-s.21jp631_3pja2.woff2 +0 -0
  310. package/.next/static/media/797e433ab948586e-s.p.0r6juujl39pe6.woff2 +0 -0
  311. package/.next/static/media/7d817b4c03b0c5f1-s.1uyisp29ctx0d.woff2 +0 -0
  312. package/.next/static/media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2 +0 -0
  313. package/.next/static/media/bbc41e54d2fcbd21-s.1rgnod-3esatf.woff2 +0 -0
  314. package/.next/static/media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2 +0 -0
  315. package/.next/static/media/favicon.2vob68tjqpejf.ico +0 -0
  316. package/.next/static/media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2 +0 -0
  317. package/.next/trace-build +1 -0
  318. package/.next/turbopack +0 -0
  319. package/.next/types/cache-life.d.ts +145 -0
  320. package/.next/types/routes.d.ts +88 -0
  321. package/.next/types/validator.ts +214 -0
  322. package/LICENSE +21 -0
  323. package/README.md +95 -0
  324. package/bin/cli.js +33 -0
  325. package/next.config.ts +7 -0
  326. package/package.json +65 -0
  327. package/public/file.svg +1 -0
  328. package/public/globe.svg +1 -0
  329. package/public/next.svg +1 -0
  330. package/public/vercel.svg +1 -0
  331. package/public/window.svg +1 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0a-z-4lzejxa5.js","static/chunks/10muk0s002m9w.js","static/chunks/3yao5u25-bf0g.js"],runtimeModuleIds:[94553]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,l=((o=l||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let i=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,l,s;null!=t?l=(o=p(this.c,t)).exports:(o=this.m,l=this.e);let u=(r=o,n=l,(s=i.get(r))||(i.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),U=Symbol("turbopack exports"),C=Symbol("turbopack error");function P(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:l,reject:i,promise:s}=j(),u=Object.assign(s,{[U]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[U]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[U]:{},[k]:e=>e(t)};return e.then(e=>{r[U]=e,P(t)},e=>{r[C]=e,P(t)}),r}}return{[U]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[C])throw e[C];return e[U]}),{promise:l,resolve:i}=j(),s=Object.assign(()=>i(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?l:r()},function(e){e?i(u[C]=e):l(u[U]),P(n)}),n&&-1===n.status&&(n.status=0)};let v=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}v.prototype=URL.prototype,u.U=v,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let E=new Map,_=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],l=o.map(e=>!!$.has(e)||E.get(e));if(l.length>0&&l.every(e=>e))return void await Promise.all(l);let i=r.moduleChunks||[],s=i.map(e=>_.get(e)).filter(e=>e);if(s.length>0){if(s.length===i.length)return void await Promise.all(s);let r=new Set;for(let e of i)_.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));_.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),i))_.has(o)||_.set(o,n)}for(let e of o)E.has(e)||E.set(e,n);await n}S.l=function(e){return T(l.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),i=x.get(o);if(void 0===i){let e=x.set.bind(x,o,A);i=o.then(e).catch(e=>{let o;switch(t){case l.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case l.Parent:o=`from module ${r}`;break;case l.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let i=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw i.name="ChunkLoadError",i}),x.set(o,i)}return i}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(l.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,l){let i="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return i?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,l?{...l,type:void 0}:void 0)};let K=/\.js(?:\?[^#]*)?(?:#.*)?$/,q=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return q.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(l.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(l.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,l.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),l=o.exports;I[e]=o;let i=new s(o,l);try{n(i,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let l=e[o];for(let l=r;l<o;l++){let r=e[l],o=t.get(r);if(o){n=o;break}}let i=n??l,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(i===l&&Object.defineProperty(l,"name",{value:"module evaluation"}),s=!0),t.set(r,i))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(l.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,l.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===l.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(K.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(K.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let l=fetch(N(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
@@ -0,0 +1 @@
1
+ [{"name":"run-turbopack","duration":14116524,"timestamp":58095655262,"id":14,"parentId":1,"tags":{},"startTime":1781935138838,"traceId":"0e4e2a7d51c06495"},{"name":"turbopack-build-events","duration":55,"timestamp":58096957343,"id":15,"parentId":1,"tags":{},"startTime":1781935140140,"traceId":"0e4e2a7d51c06495"},{"name":"run-typescript","duration":28653103,"timestamp":58109790592,"id":16,"parentId":1,"tags":{},"startTime":1781935152973,"traceId":"0e4e2a7d51c06495"},{"name":"static-check","duration":1112103,"timestamp":58138639630,"id":19,"parentId":1,"tags":{},"startTime":1781935181810,"traceId":"0e4e2a7d51c06495"},{"name":"static-generation","duration":361369,"timestamp":58139758306,"id":63,"parentId":1,"tags":{},"startTime":1781935182929,"traceId":"0e4e2a7d51c06495"},{"name":"telemetry-flush","duration":468572,"timestamp":58140164484,"id":72,"parentId":1,"tags":{},"startTime":1781935183335,"traceId":"0e4e2a7d51c06495"},{"name":"next-build","duration":47902213,"timestamp":58092730865,"id":1,"tags":{"buildMode":"default","version":"16.2.9","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1781935135914,"traceId":"0e4e2a7d51c06495"}]
File without changes
@@ -0,0 +1,145 @@
1
+ // Type definitions for Next.js cacheLife configs
2
+
3
+ declare module 'next/cache' {
4
+ export { unstable_cache } from 'next/dist/server/web/spec-extension/unstable-cache'
5
+ export {
6
+ updateTag,
7
+ revalidateTag,
8
+ revalidatePath,
9
+ refresh,
10
+ } from 'next/dist/server/web/spec-extension/revalidate'
11
+ export { unstable_noStore } from 'next/dist/server/web/spec-extension/unstable-no-store'
12
+
13
+
14
+ /**
15
+ * Cache this `"use cache"` for a timespan defined by the `"default"` profile.
16
+ * ```
17
+ * stale: 300 seconds (5 minutes)
18
+ * revalidate: 900 seconds (15 minutes)
19
+ * expire: never
20
+ * ```
21
+ *
22
+ * This cache may be stale on clients for 5 minutes before checking with the server.
23
+ * If the server receives a new request after 15 minutes, start revalidating new values in the background.
24
+ * It lives for the maximum age of the server cache. If this entry has no traffic for a while, it may serve an old value the next request.
25
+ */
26
+ export function cacheLife(profile: "default"): void
27
+
28
+ /**
29
+ * Cache this `"use cache"` for a timespan defined by the `"seconds"` profile.
30
+ * ```
31
+ * stale: 30 seconds
32
+ * revalidate: 1 seconds
33
+ * expire: 60 seconds (1 minute)
34
+ * ```
35
+ *
36
+ * This cache may be stale on clients for 30 seconds before checking with the server.
37
+ * If the server receives a new request after 1 seconds, start revalidating new values in the background.
38
+ * If this entry has no traffic for 1 minute it will expire. The next request will recompute it.
39
+ */
40
+ export function cacheLife(profile: "seconds"): void
41
+
42
+ /**
43
+ * Cache this `"use cache"` for a timespan defined by the `"minutes"` profile.
44
+ * ```
45
+ * stale: 300 seconds (5 minutes)
46
+ * revalidate: 60 seconds (1 minute)
47
+ * expire: 3600 seconds (1 hour)
48
+ * ```
49
+ *
50
+ * This cache may be stale on clients for 5 minutes before checking with the server.
51
+ * If the server receives a new request after 1 minute, start revalidating new values in the background.
52
+ * If this entry has no traffic for 1 hour it will expire. The next request will recompute it.
53
+ */
54
+ export function cacheLife(profile: "minutes"): void
55
+
56
+ /**
57
+ * Cache this `"use cache"` for a timespan defined by the `"hours"` profile.
58
+ * ```
59
+ * stale: 300 seconds (5 minutes)
60
+ * revalidate: 3600 seconds (1 hour)
61
+ * expire: 86400 seconds (1 day)
62
+ * ```
63
+ *
64
+ * This cache may be stale on clients for 5 minutes before checking with the server.
65
+ * If the server receives a new request after 1 hour, start revalidating new values in the background.
66
+ * If this entry has no traffic for 1 day it will expire. The next request will recompute it.
67
+ */
68
+ export function cacheLife(profile: "hours"): void
69
+
70
+ /**
71
+ * Cache this `"use cache"` for a timespan defined by the `"days"` profile.
72
+ * ```
73
+ * stale: 300 seconds (5 minutes)
74
+ * revalidate: 86400 seconds (1 day)
75
+ * expire: 604800 seconds (1 week)
76
+ * ```
77
+ *
78
+ * This cache may be stale on clients for 5 minutes before checking with the server.
79
+ * If the server receives a new request after 1 day, start revalidating new values in the background.
80
+ * If this entry has no traffic for 1 week it will expire. The next request will recompute it.
81
+ */
82
+ export function cacheLife(profile: "days"): void
83
+
84
+ /**
85
+ * Cache this `"use cache"` for a timespan defined by the `"weeks"` profile.
86
+ * ```
87
+ * stale: 300 seconds (5 minutes)
88
+ * revalidate: 604800 seconds (1 week)
89
+ * expire: 2592000 seconds (1 month)
90
+ * ```
91
+ *
92
+ * This cache may be stale on clients for 5 minutes before checking with the server.
93
+ * If the server receives a new request after 1 week, start revalidating new values in the background.
94
+ * If this entry has no traffic for 1 month it will expire. The next request will recompute it.
95
+ */
96
+ export function cacheLife(profile: "weeks"): void
97
+
98
+ /**
99
+ * Cache this `"use cache"` for a timespan defined by the `"max"` profile.
100
+ * ```
101
+ * stale: 300 seconds (5 minutes)
102
+ * revalidate: 2592000 seconds (1 month)
103
+ * expire: 31536000 seconds (365 days)
104
+ * ```
105
+ *
106
+ * This cache may be stale on clients for 5 minutes before checking with the server.
107
+ * If the server receives a new request after 1 month, start revalidating new values in the background.
108
+ * If this entry has no traffic for 365 days it will expire. The next request will recompute it.
109
+ */
110
+ export function cacheLife(profile: "max"): void
111
+
112
+ /**
113
+ * Cache this `"use cache"` using a custom timespan.
114
+ * ```
115
+ * stale: ... // seconds
116
+ * revalidate: ... // seconds
117
+ * expire: ... // seconds
118
+ * ```
119
+ *
120
+ * This is similar to Cache-Control: max-age=`stale`,s-max-age=`revalidate`,stale-while-revalidate=`expire-revalidate`
121
+ *
122
+ * If a value is left out, the lowest of other cacheLife() calls or the default, is used instead.
123
+ */
124
+ export function cacheLife(profile: {
125
+ /**
126
+ * This cache may be stale on clients for ... seconds before checking with the server.
127
+ */
128
+ stale?: number,
129
+ /**
130
+ * If the server receives a new request after ... seconds, start revalidating new values in the background.
131
+ */
132
+ revalidate?: number,
133
+ /**
134
+ * If this entry has no traffic for ... seconds it will expire. The next request will recompute it.
135
+ */
136
+ expire?: number
137
+ }): void
138
+
139
+
140
+ import { cacheTag } from 'next/dist/server/use-cache/cache-tag'
141
+ export { cacheTag }
142
+
143
+ export const unstable_cacheTag: typeof cacheTag
144
+ export const unstable_cacheLife: typeof cacheLife
145
+ }
@@ -0,0 +1,88 @@
1
+ // This file is generated automatically by Next.js
2
+ // Do not edit this file manually
3
+
4
+ type AppRoutes = "/" | "/projects/[slug]" | "/projects/[slug]/sessions/[id]" | "/sessions" | "/settings"
5
+ type AppRouteHandlerRoutes = "/api/active-sessions" | "/api/events" | "/api/hooks" | "/api/ide-windows" | "/api/ide-windows/open-file" | "/api/projects" | "/api/projects/[slug]/sessions" | "/api/projects/[slug]/sessions/[id]" | "/api/projects/[slug]/sessions/[id]/stats" | "/api/read-state" | "/api/sessions" | "/api/settings"
6
+ type PageRoutes = never
7
+ type LayoutRoutes = "/"
8
+ type RedirectRoutes = never
9
+ type RewriteRoutes = never
10
+ type Routes = AppRoutes | PageRoutes | LayoutRoutes | RedirectRoutes | RewriteRoutes | AppRouteHandlerRoutes
11
+
12
+
13
+ interface ParamMap {
14
+ "/": {}
15
+ "/api/active-sessions": {}
16
+ "/api/events": {}
17
+ "/api/hooks": {}
18
+ "/api/ide-windows": {}
19
+ "/api/ide-windows/open-file": {}
20
+ "/api/projects": {}
21
+ "/api/projects/[slug]/sessions": { "slug": string; }
22
+ "/api/projects/[slug]/sessions/[id]": { "slug": string; "id": string; }
23
+ "/api/projects/[slug]/sessions/[id]/stats": { "slug": string; "id": string; }
24
+ "/api/read-state": {}
25
+ "/api/sessions": {}
26
+ "/api/settings": {}
27
+ "/projects/[slug]": { "slug": string; }
28
+ "/projects/[slug]/sessions/[id]": { "slug": string; "id": string; }
29
+ "/sessions": {}
30
+ "/settings": {}
31
+ }
32
+
33
+
34
+ export type ParamsOf<Route extends Routes> = ParamMap[Route]
35
+
36
+ interface LayoutSlotMap {
37
+ "/": never
38
+ }
39
+
40
+
41
+ export type { AppRoutes, PageRoutes, LayoutRoutes, RedirectRoutes, RewriteRoutes, ParamMap, AppRouteHandlerRoutes }
42
+
43
+ declare global {
44
+ /**
45
+ * Props for Next.js App Router page components
46
+ * @example
47
+ * ```tsx
48
+ * export default function Page(props: PageProps<'/blog/[slug]'>) {
49
+ * const { slug } = await props.params
50
+ * return <div>Blog post: {slug}</div>
51
+ * }
52
+ * ```
53
+ */
54
+ interface PageProps<AppRoute extends AppRoutes> {
55
+ params: Promise<ParamMap[AppRoute]>
56
+ searchParams: Promise<Record<string, string | string[] | undefined>>
57
+ }
58
+
59
+ /**
60
+ * Props for Next.js App Router layout components
61
+ * @example
62
+ * ```tsx
63
+ * export default function Layout(props: LayoutProps<'/dashboard'>) {
64
+ * return <div>{props.children}</div>
65
+ * }
66
+ * ```
67
+ */
68
+ type LayoutProps<LayoutRoute extends LayoutRoutes> = {
69
+ params: Promise<ParamMap[LayoutRoute]>
70
+ children: React.ReactNode
71
+ } & {
72
+ [K in LayoutSlotMap[LayoutRoute]]: React.ReactNode
73
+ }
74
+
75
+ /**
76
+ * Context for Next.js App Router route handlers
77
+ * @example
78
+ * ```tsx
79
+ * export async function GET(request: NextRequest, context: RouteContext<'/api/users/[id]'>) {
80
+ * const { id } = await context.params
81
+ * return Response.json({ id })
82
+ * }
83
+ * ```
84
+ */
85
+ interface RouteContext<AppRouteHandlerRoute extends AppRouteHandlerRoutes> {
86
+ params: Promise<ParamMap[AppRouteHandlerRoute]>
87
+ }
88
+ }
@@ -0,0 +1,214 @@
1
+ // This file is generated automatically by Next.js
2
+ // Do not edit this file manually
3
+ // This file validates that all pages and layouts export the correct types
4
+
5
+ import type { AppRoutes, LayoutRoutes, ParamMap, AppRouteHandlerRoutes } from "./routes.js"
6
+ import type { ResolvingMetadata, ResolvingViewport } from "next/types.js"
7
+ import type { NextRequest } from 'next/server.js'
8
+
9
+ type AppPageConfig<Route extends AppRoutes = AppRoutes> = {
10
+ default: React.ComponentType<{ params: Promise<ParamMap[Route]> } & any> | ((props: { params: Promise<ParamMap[Route]> } & any) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
11
+ generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
12
+ generateMetadata?: (
13
+ props: { params: Promise<ParamMap[Route]> } & any,
14
+ parent: ResolvingMetadata
15
+ ) => Promise<any> | any
16
+ generateViewport?: (
17
+ props: { params: Promise<ParamMap[Route]> } & any,
18
+ parent: ResolvingViewport
19
+ ) => Promise<any> | any
20
+ metadata?: any
21
+ viewport?: any
22
+ }
23
+
24
+ type LayoutConfig<Route extends LayoutRoutes = LayoutRoutes> = {
25
+ default: React.ComponentType<LayoutProps<Route>> | ((props: LayoutProps<Route>) => React.ReactNode | Promise<React.ReactNode> | never | void | Promise<void>)
26
+ generateStaticParams?: (props: { params: ParamMap[Route] }) => Promise<any[]> | any[]
27
+ generateMetadata?: (
28
+ props: { params: Promise<ParamMap[Route]> } & any,
29
+ parent: ResolvingMetadata
30
+ ) => Promise<any> | any
31
+ generateViewport?: (
32
+ props: { params: Promise<ParamMap[Route]> } & any,
33
+ parent: ResolvingViewport
34
+ ) => Promise<any> | any
35
+ metadata?: any
36
+ viewport?: any
37
+ }
38
+
39
+ type RouteHandlerConfig<Route extends AppRouteHandlerRoutes = AppRouteHandlerRoutes> = {
40
+ GET?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
41
+ POST?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
42
+ PUT?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
43
+ PATCH?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
44
+ DELETE?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
45
+ HEAD?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
46
+ OPTIONS?: (request: NextRequest, context: { params: Promise<ParamMap[Route]> }) => Promise<Response | void> | Response | void
47
+ }
48
+
49
+
50
+ // Validate ../../app/page.tsx
51
+ {
52
+ type __IsExpected<Specific extends AppPageConfig<"/">> = Specific
53
+ const handler = {} as typeof import("../../app/page.js")
54
+ type __Check = __IsExpected<typeof handler>
55
+ // @ts-ignore
56
+ type __Unused = __Check
57
+ }
58
+
59
+ // Validate ../../app/projects/[slug]/page.tsx
60
+ {
61
+ type __IsExpected<Specific extends AppPageConfig<"/projects/[slug]">> = Specific
62
+ const handler = {} as typeof import("../../app/projects/[slug]/page.js")
63
+ type __Check = __IsExpected<typeof handler>
64
+ // @ts-ignore
65
+ type __Unused = __Check
66
+ }
67
+
68
+ // Validate ../../app/projects/[slug]/sessions/[id]/page.tsx
69
+ {
70
+ type __IsExpected<Specific extends AppPageConfig<"/projects/[slug]/sessions/[id]">> = Specific
71
+ const handler = {} as typeof import("../../app/projects/[slug]/sessions/[id]/page.js")
72
+ type __Check = __IsExpected<typeof handler>
73
+ // @ts-ignore
74
+ type __Unused = __Check
75
+ }
76
+
77
+ // Validate ../../app/sessions/page.tsx
78
+ {
79
+ type __IsExpected<Specific extends AppPageConfig<"/sessions">> = Specific
80
+ const handler = {} as typeof import("../../app/sessions/page.js")
81
+ type __Check = __IsExpected<typeof handler>
82
+ // @ts-ignore
83
+ type __Unused = __Check
84
+ }
85
+
86
+ // Validate ../../app/settings/page.tsx
87
+ {
88
+ type __IsExpected<Specific extends AppPageConfig<"/settings">> = Specific
89
+ const handler = {} as typeof import("../../app/settings/page.js")
90
+ type __Check = __IsExpected<typeof handler>
91
+ // @ts-ignore
92
+ type __Unused = __Check
93
+ }
94
+
95
+ // Validate ../../app/api/active-sessions/route.ts
96
+ {
97
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/active-sessions">> = Specific
98
+ const handler = {} as typeof import("../../app/api/active-sessions/route.js")
99
+ type __Check = __IsExpected<typeof handler>
100
+ // @ts-ignore
101
+ type __Unused = __Check
102
+ }
103
+
104
+ // Validate ../../app/api/events/route.ts
105
+ {
106
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/events">> = Specific
107
+ const handler = {} as typeof import("../../app/api/events/route.js")
108
+ type __Check = __IsExpected<typeof handler>
109
+ // @ts-ignore
110
+ type __Unused = __Check
111
+ }
112
+
113
+ // Validate ../../app/api/hooks/route.ts
114
+ {
115
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/hooks">> = Specific
116
+ const handler = {} as typeof import("../../app/api/hooks/route.js")
117
+ type __Check = __IsExpected<typeof handler>
118
+ // @ts-ignore
119
+ type __Unused = __Check
120
+ }
121
+
122
+ // Validate ../../app/api/ide-windows/open-file/route.ts
123
+ {
124
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/ide-windows/open-file">> = Specific
125
+ const handler = {} as typeof import("../../app/api/ide-windows/open-file/route.js")
126
+ type __Check = __IsExpected<typeof handler>
127
+ // @ts-ignore
128
+ type __Unused = __Check
129
+ }
130
+
131
+ // Validate ../../app/api/ide-windows/route.ts
132
+ {
133
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/ide-windows">> = Specific
134
+ const handler = {} as typeof import("../../app/api/ide-windows/route.js")
135
+ type __Check = __IsExpected<typeof handler>
136
+ // @ts-ignore
137
+ type __Unused = __Check
138
+ }
139
+
140
+ // Validate ../../app/api/projects/[slug]/sessions/[id]/route.ts
141
+ {
142
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/projects/[slug]/sessions/[id]">> = Specific
143
+ const handler = {} as typeof import("../../app/api/projects/[slug]/sessions/[id]/route.js")
144
+ type __Check = __IsExpected<typeof handler>
145
+ // @ts-ignore
146
+ type __Unused = __Check
147
+ }
148
+
149
+ // Validate ../../app/api/projects/[slug]/sessions/[id]/stats/route.ts
150
+ {
151
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/projects/[slug]/sessions/[id]/stats">> = Specific
152
+ const handler = {} as typeof import("../../app/api/projects/[slug]/sessions/[id]/stats/route.js")
153
+ type __Check = __IsExpected<typeof handler>
154
+ // @ts-ignore
155
+ type __Unused = __Check
156
+ }
157
+
158
+ // Validate ../../app/api/projects/[slug]/sessions/route.ts
159
+ {
160
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/projects/[slug]/sessions">> = Specific
161
+ const handler = {} as typeof import("../../app/api/projects/[slug]/sessions/route.js")
162
+ type __Check = __IsExpected<typeof handler>
163
+ // @ts-ignore
164
+ type __Unused = __Check
165
+ }
166
+
167
+ // Validate ../../app/api/projects/route.ts
168
+ {
169
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/projects">> = Specific
170
+ const handler = {} as typeof import("../../app/api/projects/route.js")
171
+ type __Check = __IsExpected<typeof handler>
172
+ // @ts-ignore
173
+ type __Unused = __Check
174
+ }
175
+
176
+ // Validate ../../app/api/read-state/route.ts
177
+ {
178
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/read-state">> = Specific
179
+ const handler = {} as typeof import("../../app/api/read-state/route.js")
180
+ type __Check = __IsExpected<typeof handler>
181
+ // @ts-ignore
182
+ type __Unused = __Check
183
+ }
184
+
185
+ // Validate ../../app/api/sessions/route.ts
186
+ {
187
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/sessions">> = Specific
188
+ const handler = {} as typeof import("../../app/api/sessions/route.js")
189
+ type __Check = __IsExpected<typeof handler>
190
+ // @ts-ignore
191
+ type __Unused = __Check
192
+ }
193
+
194
+ // Validate ../../app/api/settings/route.ts
195
+ {
196
+ type __IsExpected<Specific extends RouteHandlerConfig<"/api/settings">> = Specific
197
+ const handler = {} as typeof import("../../app/api/settings/route.js")
198
+ type __Check = __IsExpected<typeof handler>
199
+ // @ts-ignore
200
+ type __Unused = __Check
201
+ }
202
+
203
+
204
+
205
+
206
+
207
+ // Validate ../../app/layout.tsx
208
+ {
209
+ type __IsExpected<Specific extends LayoutConfig<"/">> = Specific
210
+ const handler = {} as typeof import("../../app/layout.js")
211
+ type __Check = __IsExpected<typeof handler>
212
+ // @ts-ignore
213
+ type __Unused = __Check
214
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Carl in 't Veld
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,95 @@
1
+ # Claude Code Dashboard
2
+
3
+ A local web app for browsing Claude Code sessions from `~/.claude/`. Built with Next.js 16, React 19, and Tailwind 4.
4
+
5
+ ## Run it
6
+
7
+ No clone, no install — just run it with `npx`:
8
+
9
+ ```bash
10
+ npx @cveld/claude-code-dashboard # http://localhost:3000
11
+ npx @cveld/claude-code-dashboard -p 4000 # custom port
12
+ ```
13
+
14
+ It reads from your local `~/.claude/` directory. Open the printed URL in your browser.
15
+
16
+ ## Development
17
+
18
+ ```bash
19
+ npm install
20
+ npm run dev # http://localhost:3000
21
+ ```
22
+
23
+ ## Releasing
24
+
25
+ Releases are automated with [release-please](https://github.com/googleapis/release-please).
26
+ Push [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, …) to
27
+ `main`; release-please opens a release PR that bumps the version and updates `CHANGELOG.md`.
28
+ Merging that PR tags a GitHub release and the workflow publishes the package to npm
29
+ (with [provenance](https://docs.npmjs.com/generating-provenance-statements)).
30
+
31
+ > Requires an `NPM_TOKEN` repository secret (an npm automation/granular token with publish
32
+ > rights to `@cveld/claude-code-dashboard`).
33
+
34
+ ## Features
35
+
36
+ - **Projects overview** — all projects with unread markers and last-activity timestamps
37
+ - **Sessions browser** — sessions across all projects, grouped by time period (Today, Yesterday, This week, …), with collapsible groups
38
+ - **Transcript viewer** — full transcript with Markdown rendering (tables, code blocks, GFM)
39
+ - **Inline tail preview** — expand the last N messages without leaving the sessions list; "Load more" adds 10 messages at a time
40
+ - **Unread tracking** — blue dot per session; bulk mark read/unread per group; optional auto-mark on open (configurable)
41
+ - **Real-time updates** — SSE connection detects changes in `~/.claude/projects/` and refreshes automatically
42
+ - **Project filter pills** — filter by the first path segment of the project path
43
+ - **Sort toggle** — newest or oldest first, persisted via `localStorage`
44
+ - **Active sessions** — reads `~/.claude/sessions/*.json` for running Claude processes
45
+ - **IDE window detection** — reads `~/.claude/ide/*.lock` to show open IDE windows; can open a file directly in the right IDE
46
+ - **Hook receiver** — POST `/api/hooks` from Claude Code hooks (stop, notification) triggers real-time notifications in the dashboard
47
+
48
+ ## Pages
49
+
50
+ | URL | Content |
51
+ |---|---|
52
+ | `/` | Projects list with unread count and last activity |
53
+ | `/sessions` | All sessions grouped by time period, All/Unread toggle, inline tail expand |
54
+ | `/projects/[slug]` | Sessions for one project with per-session mark read/unread |
55
+ | `/projects/[slug]/sessions/[id]` | Full transcript |
56
+ | `/settings` | App settings (e.g. auto-mark-as-read) |
57
+
58
+ ## Data
59
+
60
+ The app reads local files only — no authentication, no external server.
61
+
62
+ | File | Purpose |
63
+ |---|---|
64
+ | `~/.claude/projects/<slug>/*.jsonl` | Session transcripts |
65
+ | `~/.claude/sessions/*.json` | Active Claude processes |
66
+ | `~/.claude/ide/*.lock` | Open IDE windows |
67
+ | `~/.claude/dashboard-read.json` | Read state (managed by the app) |
68
+ | `~/.claude/dashboard-settings.json` | App settings |
69
+
70
+ ### Slug format
71
+
72
+ Claude encodes paths as slugs: `:` → `-`, path separators → `-`.
73
+ `c:\work\git\foo` → `c--work-git-foo`
74
+
75
+ ## Setting up Claude Code hooks
76
+
77
+ Add the following to `~/.claude/settings.json` to forward stop and notification events to the dashboard:
78
+
79
+ ```json
80
+ {
81
+ "hooks": {
82
+ "Stop": [
83
+ {
84
+ "matcher": "",
85
+ "hooks": [
86
+ {
87
+ "type": "command",
88
+ "command": "curl -s -X POST http://localhost:3000/api/hooks -H 'Content-Type: application/json' -d '{\"event\":\"stop\",\"transcriptPath\":\"$CLAUDE_TRANSCRIPT_PATH\",\"sessionId\":\"$CLAUDE_SESSION_ID\"}'"
89
+ }
90
+ ]
91
+ }
92
+ ]
93
+ }
94
+ }
95
+ ```
package/bin/cli.js ADDED
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ // Launcher for `npx claude-code-dashboard`.
3
+ // Starts the prebuilt Next.js production server from the package root.
4
+ // Extra args are forwarded to `next start` (e.g. `-p 4000`, `-H 0.0.0.0`).
5
+
6
+ const { spawn } = require("node:child_process");
7
+ const path = require("node:path");
8
+
9
+ const appDir = path.join(__dirname, "..");
10
+
11
+ let nextBin;
12
+ try {
13
+ nextBin = require.resolve("next/dist/bin/next", { paths: [appDir] });
14
+ } catch {
15
+ console.error(
16
+ "Could not locate the `next` runtime. Reinstall the package (npm i -g claude-code-dashboard) and try again."
17
+ );
18
+ process.exit(1);
19
+ }
20
+
21
+ const userArgs = process.argv.slice(2);
22
+ const nextArgs = userArgs[0] === "start" ? userArgs : ["start", ...userArgs];
23
+
24
+ const child = spawn(process.execPath, [nextBin, ...nextArgs], {
25
+ cwd: appDir,
26
+ stdio: "inherit",
27
+ env: process.env,
28
+ });
29
+
30
+ child.on("exit", (code, signal) => {
31
+ if (signal) process.kill(process.pid, signal);
32
+ else process.exit(code ?? 0);
33
+ });