shieldcortex 4.16.0 → 4.18.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 (419) hide show
  1. package/README.md +49 -0
  2. package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
  3. package/dashboard/.next/standalone/dashboard/.next/app-path-routes-manifest.json +1 -0
  4. package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +4 -4
  5. package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +27 -3
  6. package/dashboard/.next/standalone/dashboard/.next/routes-manifest.json +6 -0
  7. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page/build-manifest.json +2 -2
  8. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page/next-font-manifest.json +2 -2
  9. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page.js.nft.json +1 -1
  10. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page_client-reference-manifest.js +1 -1
  11. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page/build-manifest.json +2 -2
  12. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page/next-font-manifest.json +2 -2
  13. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page.js.nft.json +1 -1
  14. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page_client-reference-manifest.js +1 -1
  15. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page/build-manifest.json +2 -2
  16. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page/next-font-manifest.json +2 -2
  17. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page.js.nft.json +1 -1
  18. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page_client-reference-manifest.js +1 -1
  19. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page/build-manifest.json +2 -2
  20. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page/next-font-manifest.json +2 -2
  21. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page.js.nft.json +1 -1
  22. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page_client-reference-manifest.js +1 -1
  23. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page/build-manifest.json +2 -2
  24. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page/next-font-manifest.json +2 -2
  25. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
  26. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
  27. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page/build-manifest.json +2 -2
  28. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page/next-font-manifest.json +2 -2
  29. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page.js.nft.json +1 -1
  30. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page_client-reference-manifest.js +1 -1
  31. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/app-paths-manifest.json +3 -0
  32. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/build-manifest.json +18 -0
  33. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/next-font-manifest.json +11 -0
  34. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/react-loadable-manifest.json +1 -0
  35. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page/server-reference-manifest.json +4 -0
  36. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js +18 -0
  37. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js.map +5 -0
  38. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js.nft.json +1 -0
  39. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page_client-reference-manifest.js +2 -0
  40. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page/build-manifest.json +2 -2
  41. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page/next-font-manifest.json +2 -2
  42. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page.js.nft.json +1 -1
  43. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page_client-reference-manifest.js +1 -1
  44. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page/build-manifest.json +2 -2
  45. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page/next-font-manifest.json +2 -2
  46. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page.js.nft.json +1 -1
  47. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page_client-reference-manifest.js +1 -1
  48. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page/build-manifest.json +2 -2
  49. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page/next-font-manifest.json +2 -2
  50. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page.js.nft.json +1 -1
  51. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page_client-reference-manifest.js +1 -1
  52. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page/build-manifest.json +2 -2
  53. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page/next-font-manifest.json +2 -2
  54. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page.js.nft.json +1 -1
  55. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page_client-reference-manifest.js +1 -1
  56. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page/build-manifest.json +2 -2
  57. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page/next-font-manifest.json +2 -2
  58. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page.js.nft.json +1 -1
  59. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page_client-reference-manifest.js +1 -1
  60. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page/build-manifest.json +2 -2
  61. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page/next-font-manifest.json +2 -2
  62. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page.js.nft.json +1 -1
  63. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page_client-reference-manifest.js +1 -1
  64. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page/build-manifest.json +2 -2
  65. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page/next-font-manifest.json +2 -2
  66. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page.js.nft.json +1 -1
  67. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page_client-reference-manifest.js +1 -1
  68. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page/build-manifest.json +2 -2
  69. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page/next-font-manifest.json +2 -2
  70. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page.js.nft.json +1 -1
  71. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page_client-reference-manifest.js +1 -1
  72. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page/build-manifest.json +2 -2
  73. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page/next-font-manifest.json +2 -2
  74. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page.js.nft.json +1 -1
  75. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page_client-reference-manifest.js +1 -1
  76. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page/build-manifest.json +2 -2
  77. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page/next-font-manifest.json +2 -2
  78. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  79. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  80. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page/build-manifest.json +2 -2
  81. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page/next-font-manifest.json +2 -2
  82. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page.js.nft.json +1 -1
  83. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page_client-reference-manifest.js +1 -1
  84. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page/build-manifest.json +2 -2
  85. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page/next-font-manifest.json +2 -2
  86. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page.js.nft.json +1 -1
  87. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page_client-reference-manifest.js +1 -1
  88. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page/build-manifest.json +2 -2
  89. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page/next-font-manifest.json +2 -2
  90. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page.js.nft.json +1 -1
  91. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page_client-reference-manifest.js +1 -1
  92. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page/build-manifest.json +2 -2
  93. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page.js.nft.json +1 -1
  94. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  95. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
  96. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
  97. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  98. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  99. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  100. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  101. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  102. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/build-manifest.json +2 -2
  103. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/next-font-manifest.json +2 -2
  104. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page.js.nft.json +1 -1
  105. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  106. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +2 -2
  107. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +3 -3
  108. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  109. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  110. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  111. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  112. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  113. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  114. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.html +1 -1
  115. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.rsc +11 -11
  116. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin/__PAGE__.segment.rsc +1 -1
  117. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin.segment.rsc +1 -1
  118. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  119. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +11 -11
  120. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  121. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_index.segment.rsc +3 -3
  122. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_tree.segment.rsc +5 -5
  123. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.html +1 -1
  124. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.rsc +11 -11
  125. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud/__PAGE__.segment.rsc +1 -1
  126. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud.segment.rsc +1 -1
  127. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  128. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +11 -11
  129. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_head.segment.rsc +1 -1
  130. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_index.segment.rsc +3 -3
  131. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_tree.segment.rsc +5 -5
  132. package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
  133. package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +5 -5
  134. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  135. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +5 -5
  136. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  137. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +3 -3
  138. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +5 -5
  139. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.html +1 -1
  140. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.rsc +11 -11
  141. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture/__PAGE__.segment.rsc +1 -1
  142. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture.segment.rsc +1 -1
  143. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  144. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  145. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +11 -11
  146. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_head.segment.rsc +1 -1
  147. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_index.segment.rsc +3 -3
  148. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_tree.segment.rsc +5 -5
  149. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.html +1 -1
  150. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.rsc +11 -11
  151. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph/__PAGE__.segment.rsc +1 -1
  152. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph.segment.rsc +1 -1
  153. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  154. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  155. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +11 -11
  156. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_head.segment.rsc +1 -1
  157. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_index.segment.rsc +3 -3
  158. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_tree.segment.rsc +5 -5
  159. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.html +1 -1
  160. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.rsc +11 -11
  161. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall/__PAGE__.segment.rsc +1 -1
  162. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall.segment.rsc +1 -1
  163. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  164. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  165. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +11 -11
  166. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_head.segment.rsc +1 -1
  167. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_index.segment.rsc +3 -3
  168. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_tree.segment.rsc +5 -5
  169. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.html +9 -0
  170. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.meta +17 -0
  171. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.rsc +31 -0
  172. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay/__PAGE__.segment.rsc +9 -0
  173. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay.segment.rsc +4 -0
  174. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +4 -0
  175. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -0
  176. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_full.segment.rsc +31 -0
  177. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_head.segment.rsc +5 -0
  178. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_index.segment.rsc +8 -0
  179. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_tree.segment.rsc +5 -0
  180. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.html +1 -1
  181. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.rsc +11 -11
  182. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review/__PAGE__.segment.rsc +1 -1
  183. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review.segment.rsc +1 -1
  184. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  185. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  186. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +11 -11
  187. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_head.segment.rsc +1 -1
  188. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_index.segment.rsc +3 -3
  189. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_tree.segment.rsc +5 -5
  190. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.html +1 -1
  191. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.rsc +11 -11
  192. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline/__PAGE__.segment.rsc +1 -1
  193. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline.segment.rsc +1 -1
  194. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  195. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  196. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +11 -11
  197. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_head.segment.rsc +1 -1
  198. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_index.segment.rsc +3 -3
  199. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_tree.segment.rsc +5 -5
  200. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.html +2 -2
  201. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +13 -13
  202. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory/__PAGE__.segment.rsc +2 -2
  203. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  204. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  205. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +13 -13
  206. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_head.segment.rsc +1 -1
  207. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_index.segment.rsc +3 -3
  208. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_tree.segment.rsc +5 -5
  209. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.html +2 -2
  210. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +12 -12
  211. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +2 -2
  212. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview.segment.rsc +1 -1
  213. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  214. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +12 -12
  215. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_head.segment.rsc +1 -1
  216. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_index.segment.rsc +3 -3
  217. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_tree.segment.rsc +5 -5
  218. package/dashboard/.next/standalone/dashboard/.next/server/app/page/build-manifest.json +2 -2
  219. package/dashboard/.next/standalone/dashboard/.next/server/app/page/next-font-manifest.json +2 -2
  220. package/dashboard/.next/standalone/dashboard/.next/server/app/page.js.nft.json +1 -1
  221. package/dashboard/.next/standalone/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  222. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.html +1 -1
  223. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.rsc +11 -11
  224. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit/__PAGE__.segment.rsc +1 -1
  225. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit.segment.rsc +1 -1
  226. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  227. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  228. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +11 -11
  229. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_head.segment.rsc +1 -1
  230. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_index.segment.rsc +3 -3
  231. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_tree.segment.rsc +5 -5
  232. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.html +1 -1
  233. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.rsc +11 -11
  234. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts/__PAGE__.segment.rsc +1 -1
  235. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts.segment.rsc +1 -1
  236. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  237. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  238. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +11 -11
  239. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_head.segment.rsc +1 -1
  240. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_index.segment.rsc +3 -3
  241. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_tree.segment.rsc +5 -5
  242. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.html +1 -1
  243. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.rsc +11 -11
  244. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome/__PAGE__.segment.rsc +1 -1
  245. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome.segment.rsc +1 -1
  246. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  247. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  248. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +11 -11
  249. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_head.segment.rsc +1 -1
  250. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_index.segment.rsc +3 -3
  251. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_tree.segment.rsc +5 -5
  252. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.html +1 -1
  253. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.rsc +11 -11
  254. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies/__PAGE__.segment.rsc +1 -1
  255. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies.segment.rsc +1 -1
  256. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  257. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  258. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +11 -11
  259. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_head.segment.rsc +1 -1
  260. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_index.segment.rsc +3 -3
  261. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_tree.segment.rsc +5 -5
  262. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.html +1 -1
  263. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.rsc +11 -11
  264. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine/__PAGE__.segment.rsc +1 -1
  265. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine.segment.rsc +1 -1
  266. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  267. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  268. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +11 -11
  269. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_head.segment.rsc +1 -1
  270. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_index.segment.rsc +3 -3
  271. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_tree.segment.rsc +5 -5
  272. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.html +2 -2
  273. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +13 -13
  274. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection/__PAGE__.segment.rsc +2 -2
  275. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  276. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  277. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +13 -13
  278. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_head.segment.rsc +1 -1
  279. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_index.segment.rsc +3 -3
  280. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_tree.segment.rsc +5 -5
  281. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.html +2 -2
  282. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +13 -13
  283. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  284. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  285. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  286. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +13 -13
  287. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  288. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_index.segment.rsc +3 -3
  289. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_tree.segment.rsc +5 -5
  290. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.html +1 -1
  291. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.rsc +11 -11
  292. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray/__PAGE__.segment.rsc +1 -1
  293. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray.segment.rsc +1 -1
  294. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
  295. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  296. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +11 -11
  297. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_head.segment.rsc +1 -1
  298. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_index.segment.rsc +3 -3
  299. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_tree.segment.rsc +5 -5
  300. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.html +1 -1
  301. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.rsc +11 -11
  302. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain/__PAGE__.segment.rsc +1 -1
  303. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
  304. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  305. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +11 -11
  306. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_head.segment.rsc +1 -1
  307. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_index.segment.rsc +3 -3
  308. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_tree.segment.rsc +5 -5
  309. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.html +2 -2
  310. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +12 -12
  311. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray/__PAGE__.segment.rsc +2 -2
  312. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray.segment.rsc +1 -1
  313. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +7 -7
  314. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +12 -12
  315. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_head.segment.rsc +1 -1
  316. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_index.segment.rsc +3 -3
  317. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_tree.segment.rsc +5 -5
  318. package/dashboard/.next/standalone/dashboard/.next/server/app-paths-manifest.json +1 -0
  319. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/52d24__next-internal_server_app_(dashboard)_memory_replay_page_actions_b95fee26.js +3 -0
  320. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{9f1d4_@tanstack_68dcbde9._.js → 9f1d4_@tanstack_785e068c._.js} +2 -2
  321. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{dashboard_25b568c3._.js → 9f1d4_next_c9fe89e1._.js} +2 -2
  322. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{[root-of-the-server]__2de25d56._.js → [root-of-the-server]__60b060b2._.js} +2 -2
  323. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__7f43774d._.js +3 -0
  324. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__801e783f._.js +3 -0
  325. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__8930a320._.js +3 -0
  326. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_11e120e8._.js +3 -0
  327. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_2373e047._.js +3 -0
  328. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_283c47c0._.js +3 -0
  329. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_2e20858e._.js +4 -0
  330. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_45d60d74._.js +3 -0
  331. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ca514a1._.js +3 -0
  332. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ccb6514._.js +3 -0
  333. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_609078b2._.js +3 -0
  334. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{dashboard_91003e6d._.js → dashboard_92148040._.js} +2 -2
  335. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c33b336f._.js +3 -0
  336. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_fac483f8._.js +3 -0
  337. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_replay_page_tsx_d2b20535._.js +3 -0
  338. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_protection_ProtectionOverview_tsx_54554a97._.js +1 -1
  339. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_d191b6dc._.js +1 -1
  340. package/dashboard/.next/standalone/dashboard/.next/server/middleware-build-manifest.js +2 -2
  341. package/dashboard/.next/standalone/dashboard/.next/server/next-font-manifest.js +1 -1
  342. package/dashboard/.next/standalone/dashboard/.next/server/next-font-manifest.json +46 -42
  343. package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +2 -2
  344. package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
  345. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
  346. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
  347. package/dashboard/.next/standalone/dashboard/.next/static/chunks/0fa2c109e0d6d832.js +1 -0
  348. package/dashboard/.next/standalone/dashboard/.next/static/chunks/349dace3a1c9af01.js +1 -0
  349. package/dashboard/.next/standalone/dashboard/.next/static/chunks/3505433bf7977a34.js +1 -0
  350. package/dashboard/.next/standalone/dashboard/.next/static/chunks/4d0b86f6afedd8b5.js +3 -0
  351. package/dashboard/.next/standalone/dashboard/.next/static/chunks/a681787c6c10e4bd.css +1 -0
  352. package/dashboard/.next/standalone/dashboard/.next/static/chunks/a7d5d0791c8c6223.css +2 -0
  353. package/dashboard/.next/standalone/dashboard/.next/static/chunks/afe4beed85ba4fec.js +1 -0
  354. package/dashboard/.next/standalone/dashboard/.next/static/chunks/b2a6e883eaa58507.js +1 -0
  355. package/dashboard/.next/standalone/dashboard/.next/static/chunks/bcfaf98940462e7d.js +1 -0
  356. package/dashboard/.next/standalone/dashboard/.next/static/chunks/f70f563804550a9c.js +1 -0
  357. package/dashboard/.next/standalone/dashboard/.next/static/chunks/{turbopack-79214717b23f7452.js → turbopack-768a6a8b9db952e0.js} +2 -2
  358. package/dashboard/.next/standalone/dashboard/.next/static/media/4fa387ec64143e14-s.c36e1862.woff2 +0 -0
  359. package/dashboard/.next/standalone/dashboard/.next/static/media/53b9e256198e5412-s.853d50a3.woff2 +0 -0
  360. package/dashboard/.next/standalone/dashboard/.next/static/media/5ce348bf30bf5439-s.ebceb24d.woff2 +0 -0
  361. package/dashboard/.next/standalone/dashboard/.next/static/media/6306c77e7c8268e4-s.ff4a2084.woff2 +0 -0
  362. package/dashboard/.next/standalone/dashboard/.next/static/media/7178b3e590c64307-s.55554cd0.woff2 +0 -0
  363. package/dashboard/.next/standalone/dashboard/.next/static/media/797e433ab948586e-s.p.479bea2b.woff2 +0 -0
  364. package/dashboard/.next/standalone/dashboard/.next/static/media/7d817b4c03b0c5f1-s.f377b9c4.woff2 +0 -0
  365. package/dashboard/.next/standalone/dashboard/.next/static/media/8a480f0b521d4e75-s.ea323500.woff2 +0 -0
  366. package/dashboard/.next/standalone/dashboard/.next/static/media/bbc41e54d2fcbd21-s.d1207556.woff2 +0 -0
  367. package/dashboard/.next/standalone/dashboard/.next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2 +0 -0
  368. package/dashboard/.next/standalone/dashboard/.next/static/media/fef07dbb0973bf53-s.518e079e.woff2 +0 -0
  369. package/dist/api/routes/sessions.d.ts +19 -0
  370. package/dist/api/routes/sessions.js +213 -0
  371. package/dist/api/visualization-server.js +2 -0
  372. package/dist/cli/import-jsonl.d.ts +12 -0
  373. package/dist/cli/import-jsonl.js +83 -0
  374. package/dist/database/init.js +44 -0
  375. package/dist/database/schema.sql +31 -0
  376. package/dist/index.js +8 -0
  377. package/dist/sessions/capture.d.ts +45 -0
  378. package/dist/sessions/capture.js +59 -0
  379. package/dist/sessions/glob.d.ts +38 -0
  380. package/dist/sessions/glob.js +183 -0
  381. package/dist/sessions/import-jsonl.d.ts +85 -0
  382. package/dist/sessions/import-jsonl.js +193 -0
  383. package/dist/sessions/timeline.d.ts +28 -0
  384. package/dist/sessions/timeline.js +52 -0
  385. package/package.json +1 -1
  386. package/plugins/openclaw/dist/openclaw.plugin.json +1 -1
  387. package/scripts/lib/session-capture.mjs +102 -0
  388. package/scripts/pre-compact-hook.mjs +19 -0
  389. package/scripts/prompt-recall-hook.mjs +30 -4
  390. package/scripts/session-end-hook.mjs +19 -0
  391. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__521be65c._.js +0 -3
  392. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__52bd7a9f._.js +0 -3
  393. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__6f881a23._.js +0 -3
  394. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_1c5148b9._.js +0 -3
  395. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_204d1c9e._.js +0 -3
  396. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_415e5b1b._.js +0 -3
  397. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_442a0173._.js +0 -3
  398. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_64f63df9._.js +0 -3
  399. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_7cb6f257._.js +0 -3
  400. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_9b8695d8._.js +0 -3
  401. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c343baff._.js +0 -3
  402. package/dashboard/.next/standalone/dashboard/.next/static/chunks/2473c16c0c2f6b5f.css +0 -2
  403. package/dashboard/.next/standalone/dashboard/.next/static/chunks/5f18f98891076bc5.js +0 -1
  404. package/dashboard/.next/standalone/dashboard/.next/static/chunks/b053d5f11418d645.js +0 -3
  405. package/dashboard/.next/standalone/dashboard/.next/static/chunks/bf725d638cce46d4.css +0 -1
  406. package/dashboard/.next/standalone/dashboard/.next/static/chunks/d05e311dfccb5729.js +0 -1
  407. package/dashboard/.next/standalone/dashboard/.next/static/chunks/d9ad4c35fc865415.js +0 -1
  408. package/dashboard/.next/standalone/dashboard/.next/static/chunks/e804a1fda2839550.js +0 -1
  409. package/dashboard/.next/standalone/dashboard/.next/static/chunks/e9f4b8da354f1005.js +0 -1
  410. package/dashboard/.next/standalone/dashboard/.next/static/chunks/fe6075d947234b5d.js +0 -1
  411. package/dashboard/.next/standalone/dashboard/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  412. package/dashboard/.next/standalone/dashboard/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  413. package/dashboard/.next/standalone/dashboard/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  414. package/dashboard/.next/standalone/dashboard/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  415. package/dashboard/.next/standalone/dashboard/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  416. package/dashboard/.next/standalone/dashboard/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  417. /package/dashboard/.next/standalone/dashboard/.next/static/{6WjF0Utj3STrFgg7vZVPK → 5ueRnXG92g_vRzyK9j89H}/_buildManifest.js +0 -0
  418. /package/dashboard/.next/standalone/dashboard/.next/static/{6WjF0Utj3STrFgg7vZVPK → 5ueRnXG92g_vRzyK9j89H}/_clientMiddlewareManifest.json +0 -0
  419. /package/dashboard/.next/standalone/dashboard/.next/static/{6WjF0Utj3STrFgg7vZVPK → 5ueRnXG92g_vRzyK9j89H}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77618,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=e.r(4),o=e.r(42781);function u(){return!function(){if("u"<typeof window){let{workUnitAsyncStorage:t}=e.r(23628),r=t.getStore();if(!r)return!1;switch(r.type){case"prerender":case"prerender-client":case"prerender-ppr":let n=r.fallbackRouteParams;return!!n&&n.size>0}}return!1}()?(0,n.useContext)(o.PathnameContext):null}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},53873,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={handleHardNavError:function(){return i},useNavFailureHandler:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});e.r(4);let u=e.r(14999);function i(e){return!!(e&&"u">typeof window)&&!!window.next.__pendingUrl&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==(0,u.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function c(){}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},19247,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ErrorBoundary:function(){return y},ErrorBoundaryHandler:function(){return p}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(77637),i=e.r(27493),c=u._(e.r(4)),a=e.r(77618),s=e.r(66919);e.r(53873);let l=e.r(64794),f=e.r(23967),d="u">typeof window&&(0,f.isBot)(window.navigator.userAgent);class p extends c.default.Component{constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}static getDerivedStateFromError(e){if((0,s.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error&&!d?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(l.HandleISRError,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,i.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}}function y({errorComponent:e,errorStyles:t,errorScripts:r,children:n}){let o=(0,a.useUntrackedPathname)();return e?(0,i.jsx)(p,{pathname:o,errorComponent:e,errorStyles:t,errorScripts:r,children:n}):(0,i.jsx)(i.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66866,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={RedirectBoundary:function(){return p},RedirectErrorBoundary:function(){return d}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(87533),i=e.r(27493),c=u._(e.r(4)),a=e.r(57234),s=e.r(54527),l=e.r(34561);function f({redirect:e,reset:t,redirectType:r}){let n=(0,a.useRouter)();return(0,c.useEffect)(()=>{c.default.startTransition(()=>{r===l.RedirectType.push?n.push(e,{}):n.replace(e,{}),t()})},[e,r,t,n]),null}class d extends c.default.Component{constructor(e){super(e),this.state={redirect:null,redirectType:null}}static getDerivedStateFromError(e){if((0,l.isRedirectError)(e)){let t=(0,s.getURLFromRedirectError)(e),r=(0,s.getRedirectTypeFromError)(e);return"handled"in e?{redirect:null,redirectType:null}:{redirect:t,redirectType:r}}throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,i.jsx)(f,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}}function p({children:e}){let t=(0,a.useRouter)();return(0,i.jsx)(d,{router:t,children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},26446,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unresolvedThenable",{enumerable:!0,get:function(){return n}});let n={then:()=>{}};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},56978,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={MetadataBoundary:function(){return c},OutletBoundary:function(){return s},RootLayoutBoundary:function(){return l},ViewportBoundary:function(){return a}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(41885),i={[u.METADATA_BOUNDARY_NAME]:function({children:e}){return e},[u.VIEWPORT_BOUNDARY_NAME]:function({children:e}){return e},[u.OUTLET_BOUNDARY_NAME]:function({children:e}){return e},[u.ROOT_LAYOUT_BOUNDARY_NAME]:function({children:e}){return e}},c=i[u.METADATA_BOUNDARY_NAME.slice(0)],a=i[u.VIEWPORT_BOUNDARY_NAME.slice(0)],s=i[u.OUTLET_BOUNDARY_NAME.slice(0)],l=i[u.ROOT_LAYOUT_BOUNDARY_NAME.slice(0)]},79050,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return o}});var n,o=((n={})[n.SeeOther=303]="SeeOther",n[n.TemporaryRedirect=307]="TemporaryRedirect",n[n.PermanentRedirect=308]="PermanentRedirect",n);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},34561,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,o={REDIRECT_ERROR_CODE:function(){return c},RedirectType:function(){return a},isRedirectError:function(){return s}};for(var u in o)Object.defineProperty(r,u,{enumerable:!0,get:o[u]});let i=e.r(79050),c="NEXT_REDIRECT";var a=((n={}).push="push",n.replace="replace",n);function s(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,o=t.slice(2,-2).join(";"),u=Number(t.at(-2));return r===c&&("replace"===n||"push"===n)&&"string"==typeof o&&!isNaN(u)&&u in i.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},7831,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_HEADER:function(){return i},FLIGHT_HEADERS:function(){return y},NEXT_ACTION_NOT_FOUND_HEADER:function(){return m},NEXT_ACTION_REVALIDATED_HEADER:function(){return T},NEXT_DID_POSTPONE_HEADER:function(){return g},NEXT_HMR_REFRESH_HASH_COOKIE:function(){return f},NEXT_HMR_REFRESH_HEADER:function(){return l},NEXT_HTML_REQUEST_ID_HEADER:function(){return R},NEXT_IS_PRERENDER_HEADER:function(){return b},NEXT_REQUEST_ID_HEADER:function(){return O},NEXT_REWRITTEN_PATH_HEADER:function(){return v},NEXT_REWRITTEN_QUERY_HEADER:function(){return h},NEXT_ROUTER_PREFETCH_HEADER:function(){return a},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return s},NEXT_ROUTER_STALE_TIME_HEADER:function(){return E},NEXT_ROUTER_STATE_TREE_HEADER:function(){return c},NEXT_RSC_UNION_QUERY:function(){return _},NEXT_URL:function(){return d},RSC_CONTENT_TYPE_HEADER:function(){return p},RSC_HEADER:function(){return u}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u="rsc",i="next-action",c="next-router-state-tree",a="next-router-prefetch",s="next-router-segment-prefetch",l="next-hmr-refresh",f="__next_hmr_refresh_hash__",d="next-url",p="text/x-component",y=[u,c,a,l,s],_="_rsc",E="x-nextjs-stale-time",g="x-nextjs-postponed",v="x-nextjs-rewritten-path",h="x-nextjs-rewritten-query",b="x-nextjs-prerender",m="x-nextjs-action-not-found",O="x-nextjs-request-id",R="x-nextjs-html-request-id",T="x-action-revalidated";("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},87533,(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}r._=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var c=u?Object.getOwnPropertyDescriptor(e,i):null;c&&(c.get||c.set)?Object.defineProperty(o,i,c):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}},27686,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DEFAULT_SEGMENT_KEY:function(){return f},NOT_FOUND_SEGMENT_KEY:function(){return d},PAGE_SEGMENT_KEY:function(){return l},addSearchParamsIfPageSegment:function(){return a},computeSelectedLayoutSegment:function(){return s},getSegmentValue:function(){return u},getSelectedLayoutSegmentPath:function(){return function e(t,r,n=!0,o=[]){let i;if(n)i=t[1][r];else{let e=t[1];i=e.children??Object.values(e)[0]}if(!i)return o;let c=u(i[0]);return!c||c.startsWith(l)?o:(o.push(c),e(i,r,!1,o))}},isGroupSegment:function(){return i},isParallelRouteSegment:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function u(e){return Array.isArray(e)?e[1]:e}function i(e){return"("===e[0]&&e.endsWith(")")}function c(e){return e.startsWith("@")&&"@children"!==e}function a(e,t){if(e.includes(l)){let e=JSON.stringify(t);return"{}"!==e?l+"?"+e:l}return e}function s(e,t){if(!e||0===e.length)return null;let r="children"===t?e[0]:e[e.length-1];return r===f?null:r}let l="__PAGE__",f="__DEFAULT__",d="/_not-found"},59507,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={UnrecognizedActionError:function(){return u},unstable_isUnrecognizedActionError:function(){return i}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});class u extends Error{constructor(...e){super(...e),this.name="UnrecognizedActionError"}}function i(e){return!!(e&&"object"==typeof e&&e instanceof u)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},79701,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(45568).createAsyncLocalStorage)()},92367,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorage",{enumerable:!0,get:function(){return n.actionAsyncStorageInstance}});let n=e.r(79701)},54527,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getRedirectError:function(){return a},getRedirectStatusCodeFromError:function(){return p},getRedirectTypeFromError:function(){return d},getURLFromRedirectError:function(){return f},permanentRedirect:function(){return l},redirect:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(79050),i=e.r(34561),c="u"<typeof window?e.r(92367).actionAsyncStorage:void 0;function a(e,t,r=u.RedirectStatusCode.TemporaryRedirect){let n=Object.defineProperty(Error(i.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n.digest=`${i.REDIRECT_ERROR_CODE};${t};${e};${r};`,n}function s(e,t){throw a(e,t??=c?.getStore()?.isAction?i.RedirectType.push:i.RedirectType.replace,u.RedirectStatusCode.TemporaryRedirect)}function l(e,t=i.RedirectType.replace){throw a(e,t,u.RedirectStatusCode.PermanentRedirect)}function f(e){return(0,i.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function d(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function p(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94132,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={AppRouterContext:function(){return i},GlobalLayoutRouterContext:function(){return a},LayoutRouterContext:function(){return c},MissingSlotContext:function(){return l},TemplateContext:function(){return s}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=e.r(77637)._(e.r(4)),i=u.default.createContext(null),c=u.default.createContext(null),a=u.default.createContext(null),s=u.default.createContext(null),l=u.default.createContext(new Set)},40909,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={BailoutToCSRError:function(){return i},isBailoutToCSRError:function(){return c}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u="BAILOUT_TO_CLIENT_SIDE_RENDERING";class i extends Error{constructor(e){super(`Bail out to client-side rendering: ${e}`),this.reason=e,this.digest=u}}function c(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===u}},49717,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(45568).createAsyncLocalStorage)()},13595,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=e.r(49717)},77637,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},45361,(e,t,r)=>{var n={229:function(e){var t,r,n,o=e.exports={};function u(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:u}catch(e){t=u}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function c(e){if(t===setTimeout)return setTimeout(e,0);if((t===u||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var a=[],s=!1,l=-1;function f(){s&&n&&(s=!1,n.length?a=n.concat(a):l=-1,a.length&&d())}function d(){if(!s){var e=c(f);s=!0;for(var t=a.length;t;){for(n=a,a=[];++l<t;)n&&n[l].run();l=-1,t=a.length}n=null,s=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function y(){}o.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];a.push(new p(e,t)),1!==a.length||s||c(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=y,o.addListener=y,o.once=y,o.off=y,o.removeListener=y,o.removeAllListeners=y,o.emit=y,o.prependListener=y,o.prependOnceListener=y,o.listeners=function(e){return[]},o.binding=function(e){throw Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw Error("process.chdir is not supported")},o.umask=function(){return 0}}},o={};function u(e){var t=o[e];if(void 0!==t)return t.exports;var r=o[e]={exports:{}},i=!0;try{n[e](r,r.exports,u),i=!1}finally{i&&delete o[e]}return r.exports}u.ab="/ROOT/dashboard/node_modules/next/dist/compiled/process/",t.exports=u(229)},22534,(e,t,r)=>{"use strict";var n,o;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(o=e.g.process)?void 0:o.env)?e.g.process:e.r(45361)},86950,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function o(e,t,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in r={},t)"key"!==u&&(r[u]=t[u]);else r=t;return{$$typeof:n,type:e,key:o,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=o,r.jsxs=o},27493,(e,t,r)=>{"use strict";t.exports=e.r(86950)},1471,(e,t,r)=>{"use strict";var n=e.i(22534),o=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),l=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),_=Symbol.for("react.activity"),E=Symbol.for("react.view_transition"),g=Symbol.iterator,v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,b={};function m(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||v}function O(){}function R(e,t,r){this.props=e,this.context=t,this.refs=b,this.updater=r||v}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},O.prototype=m.prototype;var T=R.prototype=new O;T.constructor=R,h(T,m.prototype),T.isPureReactComponent=!0;var S=Array.isArray;function j(){}var P={H:null,A:null,T:null,S:null},A=Object.prototype.hasOwnProperty;function x(e,t,r){var n=r.ref;return{$$typeof:o,type:e,key:t,ref:void 0!==n?n:null,props:r}}function N(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var w=/\/+/g;function M(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function C(e,t,r){if(null==e)return e;var n=[],i=0;return!function e(t,r,n,i,c){var a,s,l,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case u:d=!0;break;case y:return e((d=t._init)(t._payload),r,n,i,c)}}if(d)return c=c(t),d=""===i?"."+M(t,0):i,S(c)?(n="",null!=d&&(n=d.replace(w,"$&/")+"/"),e(c,r,n,"",function(e){return e})):null!=c&&(N(c)&&(a=c,s=n+(null==c.key||t&&t.key===c.key?"":(""+c.key).replace(w,"$&/")+"/")+d,c=x(a.type,s,a.props)),r.push(c)),1;d=0;var p=""===i?".":i+":";if(S(t))for(var _=0;_<t.length;_++)f=p+M(i=t[_],_),d+=e(i,r,n,f,c);else if("function"==typeof(_=null===(l=t)||"object"!=typeof l?null:"function"==typeof(l=g&&l[g]||l["@@iterator"])?l:null))for(t=_.call(t),_=0;!(i=t.next()).done;)f=p+M(i=i.value,_++),d+=e(i,r,n,f,c);else if("object"===f){if("function"==typeof t.then)return e(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(j,j):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(t),r,n,i,c);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===(r=String(t))?"object with keys {"+Object.keys(t).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return d}(e,n,"","",function(e){return t.call(r,e,i++)}),n}function D(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){(0===e._status||-1===e._status)&&(e._status=1,e._result=t)},function(t){(0===e._status||-1===e._status)&&(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var H="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof n.default&&"function"==typeof n.default.emit)return void n.default.emit("uncaughtException",e);console.error(e)};function U(e){var t=P.T,r={};r.types=null!==t?t.types:null,P.T=r;try{var n=e(),o=P.S;null!==o&&o(r,n),"object"==typeof n&&null!==n&&"function"==typeof n.then&&n.then(j,H)}catch(e){H(e)}finally{null!==t&&null!==r.types&&(t.types=r.types),P.T=t}}function I(e){var t=P.T;if(null!==t){var r=t.types;null===r?t.types=[e]:-1===r.indexOf(e)&&r.push(e)}else U(I.bind(null,e))}r.Activity=_,r.Children={map:C,forEach:function(e,t,r){C(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return C(e,function(){t++}),t},toArray:function(e){return C(e,function(e){return e})||[]},only:function(e){if(!N(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},r.Component=m,r.Fragment=i,r.Profiler=a,r.PureComponent=R,r.StrictMode=c,r.Suspense=d,r.ViewTransition=E,r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=P,r.__COMPILER_RUNTIME={__proto__:null,c:function(e){return P.H.useMemoCache(e)}},r.addTransitionType=I,r.cache=function(e){return function(){return e.apply(null,arguments)}},r.cacheSignal=function(){return null},r.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=h({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)A.call(t,u)&&"key"!==u&&"__self"!==u&&"__source"!==u&&("ref"!==u||void 0!==t.ref)&&(n[u]=t[u]);var u=arguments.length-2;if(1===u)n.children=r;else if(1<u){for(var i=Array(u),c=0;c<u;c++)i[c]=arguments[c+2];n.children=i}return x(e.type,o,n)},r.createContext=function(e){return(e={$$typeof:l,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:s,_context:e},e},r.createElement=function(e,t,r){var n,o={},u=null;if(null!=t)for(n in void 0!==t.key&&(u=""+t.key),t)A.call(t,n)&&"key"!==n&&"__self"!==n&&"__source"!==n&&(o[n]=t[n]);var i=arguments.length-2;if(1===i)o.children=r;else if(1<i){for(var c=Array(i),a=0;a<i;a++)c[a]=arguments[a+2];o.children=c}if(e&&e.defaultProps)for(n in i=e.defaultProps)void 0===o[n]&&(o[n]=i[n]);return x(e,u,o)},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:f,render:e}},r.isValidElement=N,r.lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:D}},r.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},r.startTransition=U,r.unstable_useCacheRefresh=function(){return P.H.useCacheRefresh()},r.use=function(e){return P.H.use(e)},r.useActionState=function(e,t,r){return P.H.useActionState(e,t,r)},r.useCallback=function(e,t){return P.H.useCallback(e,t)},r.useContext=function(e){return P.H.useContext(e)},r.useDebugValue=function(){},r.useDeferredValue=function(e,t){return P.H.useDeferredValue(e,t)},r.useEffect=function(e,t){return P.H.useEffect(e,t)},r.useEffectEvent=function(e){return P.H.useEffectEvent(e)},r.useId=function(){return P.H.useId()},r.useImperativeHandle=function(e,t,r){return P.H.useImperativeHandle(e,t,r)},r.useInsertionEffect=function(e,t){return P.H.useInsertionEffect(e,t)},r.useLayoutEffect=function(e,t){return P.H.useLayoutEffect(e,t)},r.useMemo=function(e,t){return P.H.useMemo(e,t)},r.useOptimistic=function(e,t){return P.H.useOptimistic(e,t)},r.useReducer=function(e,t,r){return P.H.useReducer(e,t,r)},r.useRef=function(e){return P.H.useRef(e)},r.useState=function(e){return P.H.useState(e)},r.useSyncExternalStore=function(e,t,r){return P.H.useSyncExternalStore(e,t,r)},r.useTransition=function(){return P.H.useTransition()},r.version="19.3.0-canary-f93b9fd4-20251217"},4,(e,t,r)=>{"use strict";t.exports=e.r(1471)},45568,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={bindSnapshot:function(){return s},createAsyncLocalStorage:function(){return a},createSnapshot:function(){return l}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});let u=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class i{disable(){throw u}getStore(){}run(){throw u}exit(){throw u}enterWith(){throw u}static bind(e){return e}}let c="u">typeof globalThis&&globalThis.AsyncLocalStorage;function a(){return c?new c:new i}function s(e){return c?c.bind(e):i.bind(e)}function l(){return c?c.snapshot():function(e,...t){return e(...t)}}},39831,(e,t,r)=>{"use strict";var n=e.r(4);function o(e){var t="https://react.dev/errors/"+e;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var r=2;r<arguments.length;r++)t+="&args[]="+encodeURIComponent(arguments[r])}return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function u(){}var i={d:{f:u,r:function(){throw Error(o(522))},D:u,C:u,L:u,m:u,X:u,S:u,M:u},p:0,findDOMNode:null},c=Symbol.for("react.portal"),a=Symbol.for("react.optimistic_key"),s=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function l(e,t){return"font"===e?"":"string"==typeof t?"use-credentials"===t?t:"":void 0}r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,r.createPortal=function(e,t){var r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!t||1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType)throw Error(o(299));return function(e,t,r){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:c,key:null==n?null:n===a?a:""+n,children:e,containerInfo:t,implementation:r}}(e,t,null,r)},r.flushSync=function(e){var t=s.T,r=i.p;try{if(s.T=null,i.p=2,e)return e()}finally{s.T=t,i.p=r,i.d.f()}},r.preconnect=function(e,t){"string"==typeof e&&(t=t?"string"==typeof(t=t.crossOrigin)?"use-credentials"===t?t:"":void 0:null,i.d.C(e,t))},r.prefetchDNS=function(e){"string"==typeof e&&i.d.D(e)},r.preinit=function(e,t){if("string"==typeof e&&t&&"string"==typeof t.as){var r=t.as,n=l(r,t.crossOrigin),o="string"==typeof t.integrity?t.integrity:void 0,u="string"==typeof t.fetchPriority?t.fetchPriority:void 0;"style"===r?i.d.S(e,"string"==typeof t.precedence?t.precedence:void 0,{crossOrigin:n,integrity:o,fetchPriority:u}):"script"===r&&i.d.X(e,{crossOrigin:n,integrity:o,fetchPriority:u,nonce:"string"==typeof t.nonce?t.nonce:void 0})}},r.preinitModule=function(e,t){if("string"==typeof e)if("object"==typeof t&&null!==t){if(null==t.as||"script"===t.as){var r=l(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0})}}else null==t&&i.d.M(e)},r.preload=function(e,t){if("string"==typeof e&&"object"==typeof t&&null!==t&&"string"==typeof t.as){var r=t.as,n=l(r,t.crossOrigin);i.d.L(e,r,{crossOrigin:n,integrity:"string"==typeof t.integrity?t.integrity:void 0,nonce:"string"==typeof t.nonce?t.nonce:void 0,type:"string"==typeof t.type?t.type:void 0,fetchPriority:"string"==typeof t.fetchPriority?t.fetchPriority:void 0,referrerPolicy:"string"==typeof t.referrerPolicy?t.referrerPolicy:void 0,imageSrcSet:"string"==typeof t.imageSrcSet?t.imageSrcSet:void 0,imageSizes:"string"==typeof t.imageSizes?t.imageSizes:void 0,media:"string"==typeof t.media?t.media:void 0})}},r.preloadModule=function(e,t){if("string"==typeof e)if(t){var r=l(t.as,t.crossOrigin);i.d.m(e,{as:"string"==typeof t.as&&"script"!==t.as?t.as:void 0,crossOrigin:r,integrity:"string"==typeof t.integrity?t.integrity:void 0})}else i.d.m(e)},r.requestFormReset=function(e){i.d.r(e)},r.unstable_batchedUpdates=function(e,t){return e(t)},r.useFormState=function(e,t,r){return s.H.useFormState(e,t,r)},r.useFormStatus=function(){return s.H.useHostTransitionStatus()},r.version="19.3.0-canary-f93b9fd4-20251217"},9854,(e,t,r)=>{"use strict";!function e(){if("u">typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),t.exports=e.r(39831)},54218,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getDeploymentId:function(){return u},getDeploymentIdQueryOrEmptyString:function(){return i}};for(var o in n)Object.defineProperty(r,o,{enumerable:!0,get:n[o]});function u(){return!1}function i(){return""}},64794,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HandleISRError",{enumerable:!0,get:function(){return o}});let n="u"<typeof window?e.r(13595).workAsyncStorage:void 0;function o({error:e}){if(n){let t=n.getStore();if(t?.isStaticGeneration)throw e&&console.error(e),e}return null}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)}]);
@@ -1,4 +1,4 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/d878b929b21636c4.js","static/chunks/d9ad4c35fc865415.js","static/chunks/43d761df92da7cb6.js","static/chunks/e281719dbabcca1d.js","static/chunks/9e56d1f8f4d7adcb.js"],runtimeModuleIds:[5130]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=(self.TURBOPACK_CHUNK_SUFFIX??document?.currentScript?.getAttribute?.("src")?.replace(/^(.*(?=\?)|^.*$)/,""))||"",n=new WeakMap;function o(e,t){this.m=e,this.e=t}let l=o.prototype,i=Object.prototype.hasOwnProperty,s="u">typeof Symbol&&Symbol.toStringTag;function u(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function c(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function f(e,t){u(e,"__esModule",{value:!0}),s&&u(e,s,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)u(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?u(e,n,{get:o,set:t[r++],enumerable:!0}):u(e,n,{get:o,enumerable:!0})}Object.seal(e)}l.s=function(e,t){let r,n;null!=t?n=(r=c(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,f(n,e)},l.j=function(e,t){var r,o;let l,s,u;null!=t?s=(l=c(this.c,t)).exports:(l=this.m,s=this.e);let a=(r=l,o=s,(u=n.get(r))||(n.set(r,u=[]),r.exports=r.namespaceObject=new Proxy(o,{get(e,t){if(i.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of u){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of u)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),u);"object"==typeof e&&null!==e&&a.push(e)},l.v=function(e,t){(null!=t?c(this.c,t):this.m).exports=e},l.n=function(e,t){let r;(r=null!=t?c(this.c,t):this.m).exports=r.namespaceObject=e};let p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d=[null,p({}),p([]),p(p)];function h(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!d.includes(t);t=p(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)),f(t,n),t}function m(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=h(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function b(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 y(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}l.i=m,l.A=function(e){return this.r(e)(m.bind(this))},l.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},l.r=function(e){return B(e,this.m).exports},l.f=function(e){function t(t){if(t=b(t),i.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=b(t),i.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 O=Symbol("turbopack queues"),g=Symbol("turbopack exports"),w=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}l.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}=y(),u=Object.assign(s,{[g]:r.exports,[O]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),c={get:()=>u,set(e){e!==u&&(u[g]=e)}};Object.defineProperty(r,"exports",c),Object.defineProperty(r,"namespaceObject",c),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(O in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[g]:{},[O]:e=>e(t)};return e.then(e=>{r[g]=e,C(t)},e=>{r[w]=e,C(t)}),r}}return{[g]:e,[O]:()=>{}}}),r=()=>t.map(e=>{if(e[w])throw e[w];return e[g]}),{promise:l,resolve:i}=y(),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[O](u)),s.queueCount?l:r()},function(e){e?i(u[w]=e):l(u[g]),C(n)}),n&&-1===n.status&&(n.status=0)};let U=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 j(e,t){throw Error(`Invariant: ${t(e)}`)}U.prototype=URL.prototype,l.U=U,l.z=function(e){throw Error("dynamic usage of require is not supported")},l.g=globalThis;let R=o.prototype;var k,_=((k=_||{})[k.Runtime=0]="Runtime",k[k.Parent=1]="Parent",k[k.Update=2]="Update",k);let v=new Map;l.M=v;let $=new Map,P=new Map;async function S(e,t,r){let n;if("string"==typeof r)return E(e,t,K(r));let o=r.included||[],l=o.map(e=>!!v.has(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=>P.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)P.has(e)||r.add(e);for(let n of r){let r=E(e,t,K(n));P.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=E(e,t,K(r.path)),i))P.has(o)||P.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}R.l=function(e){return S(1,this.m.id,e)};let T=Promise.resolve(void 0),A=new WeakMap;function E(t,r,n){let o=e.loadChunkCached(t,n),l=A.get(o);if(void 0===l){let e=A.set.bind(A,o,T);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:j(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),A.set(o,l)}return l}function K(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return E(1,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/d878b929b21636c4.js","static/chunks/f70f563804550a9c.js","static/chunks/43d761df92da7cb6.js","static/chunks/e281719dbabcca1d.js","static/chunks/9e56d1f8f4d7adcb.js"],runtimeModuleIds:[5130]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=(self.TURBOPACK_CHUNK_SUFFIX??document?.currentScript?.getAttribute?.("src")?.replace(/^(.*(?=\?)|^.*$)/,""))||"",n=new WeakMap;function o(e,t){this.m=e,this.e=t}let l=o.prototype,i=Object.prototype.hasOwnProperty,s="u">typeof Symbol&&Symbol.toStringTag;function u(e,t,r){i.call(e,t)||Object.defineProperty(e,t,r)}function c(e,t){let r=e[t];return r||(r=a(t),e[t]=r),r}function a(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function f(e,t){u(e,"__esModule",{value:!0}),s&&u(e,s,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)u(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?u(e,n,{get:o,set:t[r++],enumerable:!0}):u(e,n,{get:o,enumerable:!0})}Object.seal(e)}l.s=function(e,t){let r,n;null!=t?n=(r=c(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,f(n,e)},l.j=function(e,t){var r,o;let l,s,u;null!=t?s=(l=c(this.c,t)).exports:(l=this.m,s=this.e);let a=(r=l,o=s,(u=n.get(r))||(n.set(r,u=[]),r.exports=r.namespaceObject=new Proxy(o,{get(e,t){if(i.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of u){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of u)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),u);"object"==typeof e&&null!==e&&a.push(e)},l.v=function(e,t){(null!=t?c(this.c,t):this.m).exports=e},l.n=function(e,t){let r;(r=null!=t?c(this.c,t):this.m).exports=r.namespaceObject=e};let p=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,h=[null,p({}),p([]),p(p)];function d(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!h.includes(t);t=p(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)),f(t,n),t}function m(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=d(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function b(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 y(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}l.i=m,l.A=function(e){return this.r(e)(m.bind(this))},l.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},l.r=function(e){return B(e,this.m).exports},l.f=function(e){function t(t){if(t=b(t),i.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=b(t),i.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 O=Symbol("turbopack queues"),g=Symbol("turbopack exports"),w=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}l.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}=y(),u=Object.assign(s,{[g]:r.exports,[O]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),c={get:()=>u,set(e){e!==u&&(u[g]=e)}};Object.defineProperty(r,"exports",c),Object.defineProperty(r,"namespaceObject",c),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(O in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[g]:{},[O]:e=>e(t)};return e.then(e=>{r[g]=e,C(t)},e=>{r[w]=e,C(t)}),r}}return{[g]:e,[O]:()=>{}}}),r=()=>t.map(e=>{if(e[w])throw e[w];return e[g]}),{promise:l,resolve:i}=y(),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[O](u)),s.queueCount?l:r()},function(e){e?i(u[w]=e):l(u[g]),C(n)}),n&&-1===n.status&&(n.status=0)};let U=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 j(e,t){throw Error(`Invariant: ${t(e)}`)}U.prototype=URL.prototype,l.U=U,l.z=function(e){throw Error("dynamic usage of require is not supported")},l.g=globalThis;let R=o.prototype;var k,_=((k=_||{})[k.Runtime=0]="Runtime",k[k.Parent=1]="Parent",k[k.Update=2]="Update",k);let v=new Map;l.M=v;let $=new Map,P=new Map;async function S(e,t,r){let n;if("string"==typeof r)return E(e,t,K(r));let o=r.included||[],l=o.map(e=>!!v.has(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=>P.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)P.has(e)||r.add(e);for(let n of r){let r=E(e,t,K(n));P.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=E(e,t,K(r.path)),i))P.has(o)||P.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}R.l=function(e){return S(1,this.m.id,e)};let T=Promise.resolve(void 0),A=new WeakMap;function E(t,r,n){let o=e.loadChunkCached(t,n),l=A.get(o);if(void 0===l){let e=A.set.bind(A,o,T);l=o.then(e).catch(e=>{let o;switch(t){case 0:o=`as a runtime dependency of chunk ${r}`;break;case 1:o=`from module ${r}`;break;case 2:o="from an HMR update";break;default:j(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),A.set(o,l)}return l}function K(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}R.L=function(e){return E(1,this.m.id,e)},R.R=function(e){let t=this.r(e);return t?.default??t},R.P=function(e){return`/ROOT/${e??""}`},R.b=function(e){let t=new Blob([`self.TURBOPACK_WORKER_LOCATION = ${JSON.stringify(location.origin)};
2
2
  self.TURBOPACK_CHUNK_SUFFIX = ${JSON.stringify(r)};
3
3
  self.TURBOPACK_NEXT_CHUNK_URLS = ${JSON.stringify(e.reverse().map(K),null,2)};
4
- importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let x=/\.js(?:\?[^#]*)?(?:#.*)?$/,N=/\.css(?:\?[^#]*)?(?:#.*)?$/;function M(e){return N.test(e)}l.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},l.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let L={};l.c=L;let B=(e,t)=>{let r=L[e];if(r){if(r.error)throw r.error;return r}return q(e,_.Parent,t.id)};function q(e,t,r){let n=v.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:j(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let l=a(e),i=l.exports;L[e]=l;let s=new o(l,i);try{n(s,l,i)}catch(e){throw l.error=e,e}return l.namespaceObject&&l.exports!==l.namespaceObject&&h(l.exports,l.namespaceObject),l}function I(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("u">typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o<e.length;){let t=e[o],n=o+1;for(;n<e.length&&"function"!=typeof e[n];)n++;if(n===e.length)throw Error("malformed chunk format, expected a factory function");if(!r.has(t)){let l=e[n];for(Object.defineProperty(l,"name",{value:"module evaluation"});o<n;o++)t=e[o],r.set(t,l)}o=n+1}}(r,0,v)),e.registerChunk(o,n)}let W=new Map;function H(e){let t=W.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},W.set(e,t)}return t}e={async registerChunk(e,t){if(H(K(e)).resolve(),null!=t){for(let e of t.otherChunks)H(K("string"==typeof e?e:e.path));if(await Promise.all(t.otherChunks.map(t=>S(0,e,t))),t.runtimeModuleIds.length>0)for(let r of t.runtimeModuleIds)!function(e,t){let r=L[t];if(r){if(r.error)throw r.error;return}q(t,_.Runtime,e)}(e,r)}},loadChunkCached:(e,t)=>(function(e,t){let r=H(t);if(r.loadingStarted)return r.promise;if(e===_.Runtime)return r.loadingStarted=!0,M(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(M(t));else if(x.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(TURBOPACK_WORKER_LOCATION+t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(M(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(x.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(K(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(K(r));return await WebAssembly.compileStreaming(o)}};let F=globalThis.TURBOPACK;globalThis.TURBOPACK={push:I},F.forEach(I)})();
4
+ importScripts(...self.TURBOPACK_NEXT_CHUNK_URLS.map(c => self.TURBOPACK_WORKER_LOCATION + c).reverse());`],{type:"text/javascript"});return URL.createObjectURL(t)};let x=/\.js(?:\?[^#]*)?(?:#.*)?$/,N=/\.css(?:\?[^#]*)?(?:#.*)?$/;function M(e){return N.test(e)}l.w=function(t,r,n){return e.loadWebAssembly(1,this.m.id,t,r,n)},l.u=function(t,r){return e.loadWebAssemblyModule(1,this.m.id,t,r)};let L={};l.c=L;let B=(e,t)=>{let r=L[e];if(r){if(r.error)throw r.error;return r}return q(e,_.Parent,t.id)};function q(e,t,r){let n=v.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:j(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let l=a(e),i=l.exports;L[e]=l;let s=new o(l,i);try{n(s,l,i)}catch(e){throw l.error=e,e}return l.namespaceObject&&l.exports!==l.namespaceObject&&d(l.exports,l.namespaceObject),l}function I(r){let n,o=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(("u">typeof TURBOPACK_NEXT_CHUNK_URLS?TURBOPACK_NEXT_CHUNK_URLS.pop():e.getAttribute("src")).replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(r[0]);return 2===r.length?n=r[1]:(n=void 0,!function(e,t,r,n){let o=1;for(;o<e.length;){let t=e[o],n=o+1;for(;n<e.length&&"function"!=typeof e[n];)n++;if(n===e.length)throw Error("malformed chunk format, expected a factory function");if(!r.has(t)){let l=e[n];for(Object.defineProperty(l,"name",{value:"module evaluation"});o<n;o++)t=e[o],r.set(t,l)}o=n+1}}(r,0,v)),e.registerChunk(o,n)}let W=new Map;function H(e){let t=W.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},W.set(e,t)}return t}e={async registerChunk(e,t){if(H(K(e)).resolve(),null!=t){for(let e of t.otherChunks)H(K("string"==typeof e?e:e.path));if(await Promise.all(t.otherChunks.map(t=>S(0,e,t))),t.runtimeModuleIds.length>0)for(let r of t.runtimeModuleIds)!function(e,t){let r=L[t];if(r){if(r.error)throw r.error;return}q(t,_.Runtime,e)}(e,r)}},loadChunkCached:(e,t)=>(function(e,t){let r=H(t);if(r.loadingStarted)return r.promise;if(e===_.Runtime)return r.loadingStarted=!0,M(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(M(t));else if(x.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(TURBOPACK_WORKER_LOCATION+t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(M(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(x.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(K(r)),{instance:i}=await WebAssembly.instantiateStreaming(l,o);return i.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(K(r));return await WebAssembly.compileStreaming(o)}};let F=globalThis.TURBOPACK;globalThis.TURBOPACK={push:I},F.forEach(I)})();
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Session capture HTTP API. Powers the v4.18 dashboard replay UI.
3
+ *
4
+ * Routes:
5
+ * GET /api/sessions — paginated list of sessions
6
+ * GET /api/sessions/:id — single session metadata + kind histogram
7
+ * GET /api/sessions/:id/events — paginated event stream
8
+ * POST /api/sessions/import-jsonl — import a transcript file by path
9
+ *
10
+ * All routes go through `requireNotLocked` (same as memory routes), so a
11
+ * locked DB returns 503 instead of attempting to query.
12
+ *
13
+ * Pagination cap chosen to match `routes/memories.ts`: 200 max for lists,
14
+ * 500 max for the event stream (replay needs more events at once).
15
+ */
16
+ import type { Express, Request, Response } from 'express';
17
+ type Middleware = (_req: Request, res: Response, next: (err?: unknown) => void) => void;
18
+ export declare function registerSessionRoutes(app: Express, requireNotLocked: Middleware): void;
19
+ export {};
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Session capture HTTP API. Powers the v4.18 dashboard replay UI.
3
+ *
4
+ * Routes:
5
+ * GET /api/sessions — paginated list of sessions
6
+ * GET /api/sessions/:id — single session metadata + kind histogram
7
+ * GET /api/sessions/:id/events — paginated event stream
8
+ * POST /api/sessions/import-jsonl — import a transcript file by path
9
+ *
10
+ * All routes go through `requireNotLocked` (same as memory routes), so a
11
+ * locked DB returns 503 instead of attempting to query.
12
+ *
13
+ * Pagination cap chosen to match `routes/memories.ts`: 200 max for lists,
14
+ * 500 max for the event stream (replay needs more events at once).
15
+ */
16
+ import { homedir } from 'os';
17
+ import { join } from 'path';
18
+ import { getDatabase } from '../../database/init.js';
19
+ import { getTimeline } from '../../sessions/timeline.js';
20
+ import { importJsonlTranscript } from '../../sessions/import-jsonl.js';
21
+ import { expandGlob, isGlobPattern } from '../../sessions/glob.js';
22
+ const SESSIONS_DEFAULT_LIMIT = 50;
23
+ const SESSIONS_MAX_LIMIT = 200;
24
+ const EVENTS_DEFAULT_LIMIT = 100;
25
+ const EVENTS_MAX_LIMIT = 500;
26
+ function clampLimit(raw, def, max) {
27
+ const parsed = typeof raw === 'string' ? parseInt(raw, 10) : NaN;
28
+ if (!Number.isFinite(parsed) || parsed <= 0)
29
+ return def;
30
+ return Math.min(parsed, max);
31
+ }
32
+ function clampOffset(raw) {
33
+ const parsed = typeof raw === 'string' ? parseInt(raw, 10) : NaN;
34
+ if (!Number.isFinite(parsed) || parsed < 0)
35
+ return 0;
36
+ return parsed;
37
+ }
38
+ export function registerSessionRoutes(app, requireNotLocked) {
39
+ // ── GET /api/sessions — paginated list ─────────────────────────────────
40
+ app.get('/api/sessions', requireNotLocked, (req, res) => {
41
+ try {
42
+ const db = getDatabase();
43
+ const project = typeof req.query.project === 'string' ? req.query.project : null;
44
+ const limit = clampLimit(req.query.limit, SESSIONS_DEFAULT_LIMIT, SESSIONS_MAX_LIMIT);
45
+ const offset = clampOffset(req.query.offset);
46
+ const filter = project ? 'WHERE project = ?' : '';
47
+ const params = project ? [project] : [];
48
+ const total = db
49
+ .prepare(`SELECT COUNT(DISTINCT session_id) AS c FROM session_events ${filter}`)
50
+ .get(...params).c;
51
+ const rows = db
52
+ .prepare(`SELECT
53
+ session_id,
54
+ MAX(project) AS project,
55
+ MIN(ts) AS first_ts,
56
+ MAX(ts) AS last_ts,
57
+ COUNT(*) AS event_count
58
+ FROM session_events
59
+ ${filter}
60
+ GROUP BY session_id
61
+ ORDER BY last_ts DESC
62
+ LIMIT ? OFFSET ?`)
63
+ .all(...params, limit, offset);
64
+ res.json({
65
+ sessions: rows,
66
+ total,
67
+ offset,
68
+ limit,
69
+ hasMore: offset + rows.length < total,
70
+ });
71
+ }
72
+ catch (err) {
73
+ res.status(500).json({ error: err.message });
74
+ }
75
+ });
76
+ // ── GET /api/sessions/:id — metadata + kind histogram ─────────────────
77
+ app.get('/api/sessions/:id', requireNotLocked, (req, res) => {
78
+ try {
79
+ const sessionId = String(req.params.id);
80
+ const db = getDatabase();
81
+ const summary = db
82
+ .prepare(`SELECT
83
+ session_id,
84
+ MAX(project) AS project,
85
+ MIN(ts) AS first_ts,
86
+ MAX(ts) AS last_ts,
87
+ COUNT(*) AS event_count
88
+ FROM session_events
89
+ WHERE session_id = ?
90
+ GROUP BY session_id`)
91
+ .get(sessionId);
92
+ if (!summary) {
93
+ res.status(404).json({ error: 'session not found' });
94
+ return;
95
+ }
96
+ const kindRows = db
97
+ .prepare(`SELECT kind, COUNT(*) AS count
98
+ FROM session_events
99
+ WHERE session_id = ?
100
+ GROUP BY kind`)
101
+ .all(sessionId);
102
+ const kinds = {};
103
+ for (const row of kindRows)
104
+ kinds[row.kind] = row.count;
105
+ res.json({ ...summary, kinds });
106
+ }
107
+ catch (err) {
108
+ res.status(500).json({ error: err.message });
109
+ }
110
+ });
111
+ // ── GET /api/sessions/:id/events — paginated event stream ────────────
112
+ app.get('/api/sessions/:id/events', requireNotLocked, (req, res) => {
113
+ try {
114
+ const sessionId = String(req.params.id);
115
+ const limit = clampLimit(req.query.limit, EVENTS_DEFAULT_LIMIT, EVENTS_MAX_LIMIT);
116
+ const offset = clampOffset(req.query.offset);
117
+ const db = getDatabase();
118
+ const total = db
119
+ .prepare(`SELECT COUNT(*) AS c FROM session_events WHERE session_id = ?`)
120
+ .get(sessionId).c;
121
+ // Use the timeline reader for parsed payloads + canonical ordering, then
122
+ // slice in JS. For very large sessions this is fine — the timeline is
123
+ // capped at EVENTS_MAX_LIMIT per request anyway, and the dashboard
124
+ // pages through it incrementally.
125
+ const full = getTimeline(sessionId);
126
+ const events = full.slice(offset, offset + limit);
127
+ res.json({
128
+ events,
129
+ total,
130
+ offset,
131
+ limit,
132
+ hasMore: offset + events.length < total,
133
+ });
134
+ }
135
+ catch (err) {
136
+ res.status(500).json({ error: err.message });
137
+ }
138
+ });
139
+ // ── POST /api/sessions/import-jsonl ────────────────────────────────
140
+ //
141
+ // Body forms:
142
+ // { path: "/abs/path/to/file.jsonl" } — import one file
143
+ // { path: "/glob/pattern/*.jsonl" } — import all matching files
144
+ // { } or { path: null } — default: ~/.claude/projects/**/*.jsonl
145
+ //
146
+ // Default glob exists so the dashboard's "Import JSONL" button has a
147
+ // useful zero-arg action. The CLI exposes the same behaviour.
148
+ app.post('/api/sessions/import-jsonl', requireNotLocked, async (req, res) => {
149
+ try {
150
+ const body = (req.body ?? {});
151
+ const explicit = typeof body.path === 'string' && body.path.length > 0 ? body.path : null;
152
+ const target = explicit ?? join(homedir(), '.claude', 'projects', '**', '*.jsonl');
153
+ const files = await resolveImportFiles(target);
154
+ if (files.length === 0) {
155
+ res.status(404).json({ error: `no JSONL files matched: ${target}` });
156
+ return;
157
+ }
158
+ let eventCount = 0;
159
+ let skipped = 0;
160
+ let malformed = 0;
161
+ let imported = 0;
162
+ let failed = 0;
163
+ let lastSessionId = null;
164
+ const errors = [];
165
+ for (const file of files) {
166
+ try {
167
+ const r = importJsonlTranscript(file);
168
+ eventCount += r.eventCount;
169
+ skipped += r.skipped;
170
+ malformed += r.malformed;
171
+ if (r.sessionId)
172
+ lastSessionId = r.sessionId;
173
+ imported++;
174
+ }
175
+ catch (err) {
176
+ failed++;
177
+ errors.push({ path: file, error: err.message });
178
+ }
179
+ }
180
+ // Special case: a single literal path that doesn't exist → 404. The
181
+ // glob path already 404'd above when nothing matched; this covers
182
+ // the "user typed a wrong path" UX.
183
+ if (files.length === 1 &&
184
+ imported === 0 &&
185
+ errors.length === 1 &&
186
+ /not found|ENOENT/i.test(errors[0].error)) {
187
+ res.status(404).json({ error: errors[0].error });
188
+ return;
189
+ }
190
+ res.json({
191
+ filesMatched: files.length,
192
+ filesImported: imported,
193
+ filesFailed: failed,
194
+ eventCount,
195
+ skipped,
196
+ malformed,
197
+ sessionId: files.length === 1 ? lastSessionId : null,
198
+ errors: errors.slice(0, 10), // cap at 10 to keep response small
199
+ });
200
+ }
201
+ catch (err) {
202
+ const message = err.message;
203
+ const status = /not found|ENOENT/i.test(message) ? 404 : 500;
204
+ res.status(status).json({ error: message });
205
+ }
206
+ });
207
+ }
208
+ async function resolveImportFiles(target) {
209
+ // No glob characters → literal path. Importer's existsSync check handles missing.
210
+ if (!isGlobPattern(target))
211
+ return [target];
212
+ return expandGlob(target);
213
+ }
@@ -37,6 +37,7 @@ import { registerSystemRoutes } from './routes/system.js';
37
37
  import { registerXRayRoutes } from './routes/xray.js';
38
38
  import { registerXRayFindingRoutes } from './routes/xray-findings.js';
39
39
  import { registerDigestRoutes } from './routes/digest.js';
40
+ import { registerSessionRoutes } from './routes/sessions.js';
40
41
  import { createIronDomeRouteGuard } from './iron-dome-route-guard.js';
41
42
  import { readAndClearDetectionEvents } from '../xray/activity.js';
42
43
  const PORT = process.env.PORT || 3001;
@@ -263,6 +264,7 @@ export function startVisualizationServer(dbPath) {
263
264
  }
264
265
  });
265
266
  registerGraphRoutes(app, requireNotLocked);
267
+ registerSessionRoutes(app, requireNotLocked);
266
268
  // ============================================
267
269
  // SKILL SCANNER
268
270
  // ============================================
@@ -0,0 +1,12 @@
1
+ /**
2
+ * CLI handler: `shieldcortex import-jsonl <path-or-glob>`
3
+ *
4
+ * Globs are expanded by Node's `fs.glob` (Node 22+) when the argument
5
+ * contains wildcards. A literal path that doesn't contain `*` or `?`
6
+ * is treated as a single file. Default glob if no argument is given:
7
+ * `~/.claude/projects/&#42;&#42;/&#42;.jsonl` — the user's existing transcripts.
8
+ *
9
+ * Initialises the DB before importing so the call works from any cwd
10
+ * (the importer relies on the singleton `getDatabase()`).
11
+ */
12
+ export declare function handleImportJsonlCommand(args: readonly string[]): Promise<void>;
@@ -0,0 +1,83 @@
1
+ /**
2
+ * CLI handler: `shieldcortex import-jsonl <path-or-glob>`
3
+ *
4
+ * Globs are expanded by Node's `fs.glob` (Node 22+) when the argument
5
+ * contains wildcards. A literal path that doesn't contain `*` or `?`
6
+ * is treated as a single file. Default glob if no argument is given:
7
+ * `~/.claude/projects/&#42;&#42;/&#42;.jsonl` — the user's existing transcripts.
8
+ *
9
+ * Initialises the DB before importing so the call works from any cwd
10
+ * (the importer relies on the singleton `getDatabase()`).
11
+ */
12
+ import { homedir } from 'os';
13
+ import { join } from 'path';
14
+ import { existsSync } from 'fs';
15
+ import { expandGlob, isGlobPattern } from '../sessions/glob.js';
16
+ export async function handleImportJsonlCommand(args) {
17
+ if (args.includes('--help') || args.includes('-h')) {
18
+ printHelp();
19
+ return;
20
+ }
21
+ const argPath = args[0];
22
+ const target = argPath ?? join(homedir(), '.claude', 'projects', '**', '*.jsonl');
23
+ // Init DB first so the importer can use the singleton handle.
24
+ const { initDatabase } = await import('../database/init.js');
25
+ const dbPath = process.env.CLAUDE_MEMORY_DB ?? join(homedir(), '.shieldcortex', 'memories.db');
26
+ initDatabase(dbPath);
27
+ const { importJsonlTranscript } = await import('../sessions/import-jsonl.js');
28
+ const files = await resolveFiles(target);
29
+ if (files.length === 0) {
30
+ console.error(`No JSONL files matched: ${target}`);
31
+ process.exit(1);
32
+ }
33
+ console.log(`Importing ${files.length} JSONL file${files.length === 1 ? '' : 's'}…\n`);
34
+ let totalEvents = 0;
35
+ let totalSkipped = 0;
36
+ let totalMalformed = 0;
37
+ let imported = 0;
38
+ let failed = 0;
39
+ for (const file of files) {
40
+ try {
41
+ const result = importJsonlTranscript(file);
42
+ totalEvents += result.eventCount;
43
+ totalSkipped += result.skipped;
44
+ totalMalformed += result.malformed;
45
+ imported++;
46
+ console.log(` ✓ ${file}\n session=${result.sessionId ?? '(unknown)'} events=${result.eventCount} skipped=${result.skipped}${result.malformed > 0 ? ` malformed=${result.malformed}` : ''}`);
47
+ }
48
+ catch (err) {
49
+ failed++;
50
+ console.error(` ✗ ${file}\n ${err.message}`);
51
+ }
52
+ }
53
+ console.log(`\nDone. ${imported}/${files.length} file${files.length === 1 ? '' : 's'} imported, ` +
54
+ `${totalEvents} event${totalEvents === 1 ? '' : 's'} (${totalSkipped} skipped${totalMalformed > 0 ? `, ${totalMalformed} malformed` : ''})` +
55
+ `${failed > 0 ? `, ${failed} failed` : ''}.`);
56
+ if (failed > 0 && imported === 0)
57
+ process.exit(1);
58
+ }
59
+ function printHelp() {
60
+ console.log(`Usage: shieldcortex import-jsonl [path-or-glob]
61
+
62
+ Import Claude Code session transcripts (JSONL) into session_events so they
63
+ become replayable in the dashboard. Idempotent: re-importing the same file
64
+ adds no duplicate rows.
65
+
66
+ Arguments:
67
+ path-or-glob File path or glob pattern. Defaults to
68
+ ~/.claude/projects/**/*.jsonl
69
+
70
+ Examples:
71
+ shieldcortex import-jsonl # all sessions
72
+ shieldcortex import-jsonl ~/.claude/projects/my-proj/*.jsonl
73
+ shieldcortex import-jsonl ./session.jsonl
74
+ `);
75
+ }
76
+ async function resolveFiles(target) {
77
+ if (!isGlobPattern(target)) {
78
+ if (!existsSync(target))
79
+ return [];
80
+ return [target];
81
+ }
82
+ return expandGlob(target).sort();
83
+ }
@@ -943,6 +943,28 @@ function runMigrations(database) {
943
943
  catch {
944
944
  // Seeder runs idempotently; failures here should never block startup.
945
945
  }
946
+ // Migration: session_events.content_hash + dedupe UNIQUE index (v4.17).
947
+ // DBs created between the foundation commit and the importer commit have
948
+ // session_events but no content_hash column. ALTER + idempotent index
949
+ // upgrades them without touching fresh installs (schema.sql handles those).
950
+ try {
951
+ const sessionEventsTable = database
952
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='session_events'")
953
+ .get();
954
+ if (sessionEventsTable) {
955
+ const sessionCols = database
956
+ .prepare("PRAGMA table_info(session_events)")
957
+ .all();
958
+ const sessionColNames = new Set(sessionCols.map((c) => c.name));
959
+ if (!sessionColNames.has('content_hash')) {
960
+ database.exec('ALTER TABLE session_events ADD COLUMN content_hash TEXT');
961
+ }
962
+ database.exec('CREATE UNIQUE INDEX IF NOT EXISTS idx_session_events_dedupe ON session_events(session_id, ts, kind, content_hash)');
963
+ }
964
+ }
965
+ catch {
966
+ // Best-effort; importer-side INSERT OR IGNORE handles missing index gracefully.
967
+ }
946
968
  }
947
969
  /**
948
970
  * Get the current database instance
@@ -1443,6 +1465,28 @@ function getInlineSchema() {
1443
1465
  write_count INTEGER NOT NULL DEFAULT 1,
1444
1466
  window_start_ms INTEGER NOT NULL
1445
1467
  );
1468
+
1469
+ -- v4.17 Session capture (mirrors schema.sql; bundled fallback only).
1470
+ CREATE TABLE IF NOT EXISTS session_events (
1471
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
1472
+ session_id TEXT NOT NULL,
1473
+ project TEXT,
1474
+ ts TIMESTAMP NOT NULL,
1475
+ kind TEXT NOT NULL CHECK(kind IN (
1476
+ 'prompt', 'response', 'tool_call', 'tool_result', 'tool_error', 'hook_fire'
1477
+ )),
1478
+ actor TEXT,
1479
+ payload TEXT NOT NULL,
1480
+ duration_ms INTEGER,
1481
+ audit_id INTEGER,
1482
+ content_hash TEXT,
1483
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
1484
+ FOREIGN KEY (audit_id) REFERENCES defence_audit(id) ON DELETE SET NULL
1485
+ );
1486
+ CREATE INDEX IF NOT EXISTS idx_session_events_session ON session_events(session_id, ts);
1487
+ CREATE INDEX IF NOT EXISTS idx_session_events_project ON session_events(project, ts DESC);
1488
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_session_events_dedupe
1489
+ ON session_events(session_id, ts, kind, content_hash);
1446
1490
  `;
1447
1491
  }
1448
1492
  /**
@@ -95,6 +95,37 @@ CREATE TABLE IF NOT EXISTS sessions (
95
95
  memories_accessed INTEGER DEFAULT 0
96
96
  );
97
97
 
98
+ -- v4.17 Session capture: turn-by-turn events for replay.
99
+ -- Populated by the hook capture pipeline + JSONL importer. Read by the
100
+ -- timeline reader powering the dashboard replay UI. Distinct from the
101
+ -- summary `sessions` table above — this is the full event stream.
102
+ --
103
+ -- `content_hash` powers idempotent re-import. The JSONL importer writes
104
+ -- a SHA-256 of `kind + payload`; live capture leaves it NULL. SQLite
105
+ -- treats NULL as distinct in UNIQUE indexes by default, so live rows
106
+ -- never conflict with each other while imported rows are de-duplicated
107
+ -- across reruns of the same transcript.
108
+ CREATE TABLE IF NOT EXISTS session_events (
109
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
110
+ session_id TEXT NOT NULL,
111
+ project TEXT,
112
+ ts TIMESTAMP NOT NULL,
113
+ kind TEXT NOT NULL CHECK(kind IN (
114
+ 'prompt', 'response', 'tool_call', 'tool_result', 'tool_error', 'hook_fire'
115
+ )),
116
+ actor TEXT,
117
+ payload TEXT NOT NULL,
118
+ duration_ms INTEGER,
119
+ audit_id INTEGER,
120
+ content_hash TEXT,
121
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
122
+ FOREIGN KEY (audit_id) REFERENCES defence_audit(id) ON DELETE SET NULL
123
+ );
124
+ CREATE INDEX IF NOT EXISTS idx_session_events_session ON session_events(session_id, ts);
125
+ CREATE INDEX IF NOT EXISTS idx_session_events_project ON session_events(project, ts DESC);
126
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_session_events_dedupe
127
+ ON session_events(session_id, ts, kind, content_hash);
128
+
98
129
  -- Memory relationships (for linked memories)
99
130
  CREATE TABLE IF NOT EXISTS memory_links (
100
131
  id INTEGER PRIMARY KEY AUTOINCREMENT,
package/dist/index.js CHANGED
@@ -637,6 +637,13 @@ ${bold}DOCS${reset}
637
637
  await handleMemoriesCommand(process.argv.slice(3));
638
638
  return;
639
639
  }
640
+ // Handle "import-jsonl" subcommand — import Claude Code session transcripts
641
+ // into session_events for dashboard replay.
642
+ if (process.argv[2] === 'import-jsonl') {
643
+ const { handleImportJsonlCommand } = await import('./cli/import-jsonl.js');
644
+ await handleImportJsonlCommand(process.argv.slice(3));
645
+ return;
646
+ }
640
647
  // Handle "status" subcommand
641
648
  if (process.argv[2] === 'status') {
642
649
  const { handleStatusCommand } = await import('./setup/status.js');
@@ -896,6 +903,7 @@ ${bold}DOCS${reset}
896
903
  'openclaw', 'clawdbot', 'copilot', 'codex', 'service', 'config', 'status',
897
904
  'graph', 'license', 'licence', 'audit', 'iron-dome', 'scan', 'cloud', 'review-copilot',
898
905
  'scan-skill', 'scan-skills', 'dashboard', 'api', 'worker', 'stats', 'cortex', 'consolidate', 'xray', 'xray-preinstall',
906
+ 'memories', 'import-jsonl',
899
907
  ]);
900
908
  const arg = process.argv[2];
901
909
  if (arg && !arg.startsWith('-') && !knownCommands.has(arg)) {