shieldcortex 4.33.2 → 4.35.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 (373) hide show
  1. package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
  2. package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +2 -2
  3. package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +3 -3
  4. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page.js +1 -1
  5. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page.js.nft.json +1 -1
  6. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/admin/page_client-reference-manifest.js +1 -1
  7. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page.js +1 -1
  8. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page.js.nft.json +1 -1
  9. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/cloud/page_client-reference-manifest.js +1 -1
  10. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page.js +1 -1
  11. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page.js.nft.json +1 -1
  12. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/capture/page_client-reference-manifest.js +1 -1
  13. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page.js +1 -1
  14. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page.js.nft.json +1 -1
  15. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/graph/page_client-reference-manifest.js +1 -1
  16. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page/react-loadable-manifest.json +1 -1
  17. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page.js +1 -1
  18. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
  19. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
  20. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page.js +1 -1
  21. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page.js.nft.json +1 -1
  22. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/recall/page_client-reference-manifest.js +1 -1
  23. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js +1 -1
  24. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page.js.nft.json +1 -1
  25. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/replay/page_client-reference-manifest.js +1 -1
  26. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page.js +1 -1
  27. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page.js.nft.json +1 -1
  28. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/review/page_client-reference-manifest.js +1 -1
  29. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page.js +1 -1
  30. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page.js.nft.json +1 -1
  31. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/memory/timeline/page_client-reference-manifest.js +1 -1
  32. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page.js +1 -1
  33. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page.js.nft.json +1 -1
  34. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/overview/page_client-reference-manifest.js +1 -1
  35. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page.js +1 -1
  36. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page.js.nft.json +1 -1
  37. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/audit/page_client-reference-manifest.js +1 -1
  38. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page.js +1 -1
  39. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page.js.nft.json +1 -1
  40. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/intercepts/page_client-reference-manifest.js +1 -1
  41. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page.js +1 -1
  42. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page.js.nft.json +1 -1
  43. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/iron-dome/page_client-reference-manifest.js +1 -1
  44. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page.js +1 -1
  45. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page.js.nft.json +1 -1
  46. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/page_client-reference-manifest.js +1 -1
  47. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page.js +1 -1
  48. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page.js.nft.json +1 -1
  49. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/policies/page_client-reference-manifest.js +1 -1
  50. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page.js +1 -1
  51. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page.js.nft.json +1 -1
  52. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/protection/quarantine/page_client-reference-manifest.js +1 -1
  53. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page.js +1 -1
  54. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -1
  55. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  56. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page.js +1 -1
  57. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page.js.nft.json +1 -1
  58. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/page_client-reference-manifest.js +1 -1
  59. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page.js +1 -1
  60. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page.js.nft.json +1 -1
  61. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/supply-chain/xray/page_client-reference-manifest.js +1 -1
  62. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page.js +1 -1
  63. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page.js.nft.json +1 -1
  64. package/dashboard/.next/standalone/dashboard/.next/server/app/(dashboard)/xray/page_client-reference-manifest.js +1 -1
  65. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
  66. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
  67. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  68. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  69. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  70. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  71. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  72. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  73. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +1 -9
  74. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +2 -2
  75. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  76. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  77. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  78. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  79. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  80. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  81. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.html +1 -1
  82. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.rsc +18 -19
  83. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin/__PAGE__.segment.rsc +1 -1
  84. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin.segment.rsc +1 -1
  85. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  86. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +18 -19
  87. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  88. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_index.segment.rsc +2 -2
  89. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
  90. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.html +1 -1
  91. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.rsc +18 -19
  92. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud/__PAGE__.segment.rsc +1 -1
  93. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud.segment.rsc +1 -1
  94. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  95. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +18 -19
  96. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_head.segment.rsc +1 -1
  97. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_index.segment.rsc +2 -2
  98. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_tree.segment.rsc +2 -2
  99. package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
  100. package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +2 -2
  101. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  102. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +2 -2
  103. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  104. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +2 -2
  105. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  106. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.html +1 -1
  107. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.rsc +18 -18
  108. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture/__PAGE__.segment.rsc +1 -1
  109. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture.segment.rsc +1 -1
  110. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  111. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  112. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +18 -18
  113. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_head.segment.rsc +1 -1
  114. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_index.segment.rsc +2 -2
  115. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_tree.segment.rsc +2 -2
  116. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.html +1 -1
  117. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.rsc +18 -18
  118. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph/__PAGE__.segment.rsc +1 -1
  119. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph.segment.rsc +1 -1
  120. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  121. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  122. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +18 -18
  123. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_head.segment.rsc +1 -1
  124. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_index.segment.rsc +2 -2
  125. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_tree.segment.rsc +2 -2
  126. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.html +1 -1
  127. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.rsc +18 -18
  128. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall/__PAGE__.segment.rsc +1 -1
  129. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall.segment.rsc +1 -1
  130. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  131. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  132. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +18 -18
  133. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_head.segment.rsc +1 -1
  134. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_index.segment.rsc +2 -2
  135. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_tree.segment.rsc +2 -2
  136. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.html +1 -9
  137. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.rsc +16 -16
  138. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay/__PAGE__.segment.rsc +3 -3
  139. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay.segment.rsc +1 -1
  140. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  141. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  142. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_full.segment.rsc +16 -16
  143. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_head.segment.rsc +1 -1
  144. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_index.segment.rsc +2 -2
  145. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_tree.segment.rsc +2 -2
  146. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.html +1 -1
  147. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.rsc +18 -18
  148. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review/__PAGE__.segment.rsc +1 -1
  149. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review.segment.rsc +1 -1
  150. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  151. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  152. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +18 -18
  153. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_head.segment.rsc +1 -1
  154. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_index.segment.rsc +2 -2
  155. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_tree.segment.rsc +2 -2
  156. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.html +1 -1
  157. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.rsc +18 -18
  158. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline/__PAGE__.segment.rsc +1 -1
  159. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline.segment.rsc +1 -1
  160. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  161. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  162. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +18 -18
  163. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_head.segment.rsc +1 -1
  164. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_index.segment.rsc +2 -2
  165. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_tree.segment.rsc +2 -2
  166. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.html +1 -9
  167. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +22 -25
  168. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory/__PAGE__.segment.rsc +3 -3
  169. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  170. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  171. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +22 -25
  172. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_head.segment.rsc +1 -1
  173. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_index.segment.rsc +2 -2
  174. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_tree.segment.rsc +2 -2
  175. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.html +1 -9
  176. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +22 -24
  177. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +3 -3
  178. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview.segment.rsc +1 -1
  179. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  180. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +22 -24
  181. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_head.segment.rsc +1 -1
  182. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_index.segment.rsc +2 -2
  183. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_tree.segment.rsc +2 -2
  184. package/dashboard/.next/standalone/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  185. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.html +1 -1
  186. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.rsc +18 -18
  187. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit/__PAGE__.segment.rsc +1 -1
  188. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit.segment.rsc +1 -1
  189. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  190. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  191. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +18 -18
  192. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_head.segment.rsc +1 -1
  193. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_index.segment.rsc +2 -2
  194. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_tree.segment.rsc +2 -2
  195. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.html +1 -1
  196. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.rsc +22 -20
  197. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts/__PAGE__.segment.rsc +1 -1
  198. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts.segment.rsc +1 -1
  199. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  200. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  201. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +22 -20
  202. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_head.segment.rsc +1 -1
  203. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_index.segment.rsc +2 -2
  204. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_tree.segment.rsc +2 -2
  205. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.html +1 -1
  206. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.rsc +22 -20
  207. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome/__PAGE__.segment.rsc +1 -1
  208. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome.segment.rsc +1 -1
  209. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  210. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  211. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +22 -20
  212. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_head.segment.rsc +1 -1
  213. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_index.segment.rsc +2 -2
  214. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_tree.segment.rsc +2 -2
  215. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.html +1 -1
  216. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.rsc +22 -20
  217. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies/__PAGE__.segment.rsc +1 -1
  218. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies.segment.rsc +1 -1
  219. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  220. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  221. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +22 -20
  222. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_head.segment.rsc +1 -1
  223. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_index.segment.rsc +2 -2
  224. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_tree.segment.rsc +2 -2
  225. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.html +1 -1
  226. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.rsc +22 -20
  227. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine/__PAGE__.segment.rsc +1 -1
  228. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine.segment.rsc +1 -1
  229. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  230. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  231. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +22 -20
  232. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_head.segment.rsc +1 -1
  233. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_index.segment.rsc +2 -2
  234. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_tree.segment.rsc +2 -2
  235. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.html +1 -9
  236. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +20 -19
  237. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection/__PAGE__.segment.rsc +2 -2
  238. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  239. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  240. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +20 -19
  241. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_head.segment.rsc +1 -1
  242. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_index.segment.rsc +2 -2
  243. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_tree.segment.rsc +2 -2
  244. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.html +1 -9
  245. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +20 -22
  246. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +2 -2
  247. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  248. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  249. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +20 -22
  250. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  251. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_index.segment.rsc +2 -2
  252. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  253. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.html +1 -1
  254. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.rsc +18 -18
  255. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray/__PAGE__.segment.rsc +1 -1
  256. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray.segment.rsc +1 -1
  257. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
  258. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  259. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +18 -18
  260. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_head.segment.rsc +1 -1
  261. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_index.segment.rsc +2 -2
  262. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_tree.segment.rsc +2 -2
  263. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.html +1 -1
  264. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.rsc +18 -19
  265. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain/__PAGE__.segment.rsc +1 -1
  266. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
  267. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  268. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +18 -19
  269. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_head.segment.rsc +1 -1
  270. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_index.segment.rsc +2 -2
  271. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_tree.segment.rsc +2 -2
  272. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.html +1 -9
  273. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +20 -22
  274. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray/__PAGE__.segment.rsc +2 -2
  275. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray.segment.rsc +1 -1
  276. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +10 -9
  277. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +20 -22
  278. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_head.segment.rsc +1 -1
  279. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_index.segment.rsc +2 -2
  280. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_tree.segment.rsc +2 -2
  281. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/9f1d4_lucide-react_dist_esm_icons_47ec4567._.js +3 -0
  282. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__7d500b5a._.js +1 -9
  283. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__bea9887b._.js +3 -0
  284. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/{dashboard_45d60d74._.js → dashboard_01e81e69._.js} +2 -2
  285. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_14d63e36._.js +3 -0
  286. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_1b261cd5._.js +3 -0
  287. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_1b3af814._.js +3 -0
  288. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_44a1539a._.js +3 -0
  289. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_4835c323._.js +3 -0
  290. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_599483f2._.js +3 -0
  291. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ca514a1._.js +1 -1
  292. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_a6877bbc._.js +3 -0
  293. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c219bf07._.js +3 -3
  294. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_861871f9._.js +3 -0
  295. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_overview_page_tsx_8c105626._.js +1 -1
  296. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_de7ac4f9._.js +3 -0
  297. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_protection_ProtectionOverview_tsx_54554a97._.js +2 -2
  298. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_components_xray_XRayOverview_tsx_ceba698e._.js +1 -1
  299. package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +1 -9
  300. package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
  301. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
  302. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
  303. package/dashboard/.next/standalone/dashboard/.next/static/chunks/1600063be806f47c.js +1 -0
  304. package/dashboard/.next/standalone/dashboard/.next/static/chunks/61aaa0c660c32b96.js +1 -0
  305. package/dashboard/.next/standalone/dashboard/.next/static/chunks/69074f4a9b09c31d.js +1 -0
  306. package/dashboard/.next/standalone/dashboard/.next/static/chunks/881477f5d01c1d9b.js +1 -0
  307. package/dashboard/.next/standalone/dashboard/.next/static/chunks/8eabb856fd0e50b7.js +1 -0
  308. package/dashboard/.next/standalone/dashboard/.next/static/chunks/98ae91e0a6f5d317.css +1 -0
  309. package/dashboard/.next/standalone/dashboard/.next/static/chunks/a95dbcc1842ad9d7.js +1 -0
  310. package/dashboard/.next/standalone/dashboard/.next/static/chunks/{4d0b86f6afedd8b5.js → b8eceefe44227149.js} +2 -2
  311. package/dashboard/.next/standalone/dashboard/.next/static/chunks/{f86a7ba98ba185c3.js → cfbc41857d998b74.js} +6 -6
  312. package/dashboard/.next/standalone/dashboard/.next/static/chunks/d2837977142371d5.js +1 -0
  313. package/dashboard/.next/standalone/dashboard/.next/static/chunks/de9f5ba8bc67d4d9.js +1 -0
  314. package/dashboard/.next/standalone/dashboard/.next/static/chunks/e8884e7f3b85fd0b.js +1 -0
  315. package/dashboard/.next/standalone/dashboard/node_modules/source-map/package.json +73 -0
  316. package/dashboard/.next/standalone/dashboard/node_modules/source-map-support/package.json +31 -0
  317. package/dashboard/.next/standalone/dashboard/package.json +8 -6
  318. package/dist/api/routes/recall.js +5 -1
  319. package/dist/cli/stats-command.js +30 -0
  320. package/dist/memory/decay.d.ts +1 -0
  321. package/dist/memory/decay.js +10 -2
  322. package/dist/memory/lifecycle.js +6 -3
  323. package/dist/memory/metrics.d.ts +72 -0
  324. package/dist/memory/metrics.js +162 -0
  325. package/dist/memory/store.d.ts +1 -1
  326. package/dist/memory/store.js +8 -4
  327. package/dist/server.js +1 -1
  328. package/dist/tools/context.d.ts +3 -1
  329. package/dist/tools/context.js +13 -2
  330. package/package.json +1 -1
  331. package/scripts/prompt-recall-hook.mjs +6 -0
  332. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/9f1d4_lucide-react_dist_esm_icons_3a8e61d9._.js +0 -3
  333. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__7f43774d._.js +0 -3
  334. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_11e120e8._.js +0 -3
  335. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_2373e047._.js +0 -3
  336. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_283c47c0._.js +0 -3
  337. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_30ecb37e._.js +0 -3
  338. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_5ccb6514._.js +0 -3
  339. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_6999a855._.js +0 -3
  340. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_c33b336f._.js +0 -3
  341. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_44a9f72c._.js +0 -3
  342. package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_src_d191b6dc._.js +0 -3
  343. package/dashboard/.next/standalone/dashboard/.next/static/chunks/0fa2c109e0d6d832.js +0 -1
  344. package/dashboard/.next/standalone/dashboard/.next/static/chunks/1aba5ddfecdd0947.js +0 -1
  345. package/dashboard/.next/standalone/dashboard/.next/static/chunks/349dace3a1c9af01.js +0 -1
  346. package/dashboard/.next/standalone/dashboard/.next/static/chunks/3b671e7effc074d1.js +0 -1
  347. package/dashboard/.next/standalone/dashboard/.next/static/chunks/6aba18b7aac42ccd.js +0 -1
  348. package/dashboard/.next/standalone/dashboard/.next/static/chunks/75769fa28c7a2e99.js +0 -1
  349. package/dashboard/.next/standalone/dashboard/.next/static/chunks/8d4a0f601450b091.js +0 -1
  350. package/dashboard/.next/standalone/dashboard/.next/static/chunks/aee9601911b790ca.css +0 -1
  351. package/dashboard/.next/standalone/dashboard/.next/static/chunks/bcfaf98940462e7d.js +0 -1
  352. package/dashboard/.next/standalone/dashboard/.next/static/chunks/c55c1a1a956d2aff.js +0 -1
  353. /package/dashboard/.next/standalone/dashboard/.next/static/{6wRWKYDseKVJd5JfOCIDU → h2qG7AvaXDfMKQrI-bK4V}/_buildManifest.js +0 -0
  354. /package/dashboard/.next/standalone/dashboard/.next/static/{6wRWKYDseKVJd5JfOCIDU → h2qG7AvaXDfMKQrI-bK4V}/_clientMiddlewareManifest.json +0 -0
  355. /package/dashboard/.next/standalone/dashboard/.next/static/{6wRWKYDseKVJd5JfOCIDU → h2qG7AvaXDfMKQrI-bK4V}/_ssgManifest.js +0 -0
  356. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/buffer-from/index.js +0 -0
  357. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/buffer-from/package.json +0 -0
  358. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/array-set.js +0 -0
  359. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/base64-vlq.js +0 -0
  360. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/base64.js +0 -0
  361. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/binary-search.js +0 -0
  362. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/mapping-list.js +0 -0
  363. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/quick-sort.js +0 -0
  364. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/source-map-consumer.js +0 -0
  365. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/source-map-generator.js +0 -0
  366. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/source-node.js +0 -0
  367. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/lib/util.js +0 -0
  368. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map/source-map.js +0 -0
  369. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/LICENSE.md +0 -0
  370. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/README.md +0 -0
  371. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/browser-source-map-support.js +0 -0
  372. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/register.js +0 -0
  373. /package/dashboard/.next/standalone/{node_modules → dashboard/node_modules}/source-map-support/source-map-support.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16467,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"severity-critical",high:"severity-high",medium:"severity-medium",low:"severity-low",safe:"severity-safe",info:"severity-info"};function s({children:e,className:s,hover:i=!1,hoverCyan:n=!1,strong:c=!1,severity:l,onClick:o,selected:d=!1,title:u,statusLine:m,bodyPadding:h=!0}){let x=o?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),o())}:void 0;return(0,t.jsxs)("div",{className:(0,a.cn)("glass-card overflow-hidden",i&&"glass-card-hover cursor-pointer",n&&"glass-card-hover-cyan cursor-pointer",o&&!i&&!n&&"cursor-pointer",l&&r[l],d&&"border-[var(--term-electric)]",s),onClick:o,onKeyDown:x,role:o?"button":void 0,tabIndex:o?0:void 0,children:[void 0!==u&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--term-border)] bg-[var(--term-surface-2)] theme-glass:hidden",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-red)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-yellow)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-green)]"}),(0,t.jsx)("span",{className:"ml-2 text-xs select-none truncate text-[var(--term-text-muted)]",children:u})]}),(0,t.jsx)("div",{className:(0,a.cn)(h?"p-5":""),children:e}),void 0!==m&&(0,t.jsx)("div",{className:"px-4 py-2 text-xs border-t border-[var(--term-border)] bg-[var(--term-surface-2)] text-[var(--term-text-muted)] theme-glass:hidden",children:m})]})}e.s(["GlassCard",()=>s])},36062,31309,e=>{"use strict";let t=(0,e.i(24929).default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);e.s(["ArrowRight",()=>t],36062);var a=e.i(22534),r=e.i(71921),s=e.i(45688),i=e.i(1235),n=e.i(88969);let c=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function l(e,t){let a=await (0,n.gatedFetch)(`${c}${e}`);if(!a.ok)throw Error(await (0,n.readApiError)(a,t));return a.json()}async function o(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/scan`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,n.readApiError)(t,"Failed to run X-Ray scan"));return t.json()}async function d(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/pick-target`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:e})});if(!t.ok)throw Error(await (0,n.readApiError)(t,`Failed to open ${e} picker`));return t.json()}function u(e,t){return!(t instanceof n.FeatureLockedError)&&e<2}function m(e){let t=new URLSearchParams;for(let[a,r]of Object.entries(e))r&&"all"!==r&&"ALL"!==r&&t.set(a,r);let a=t.toString();return a?`?${a}`:""}function h(){return(0,s.useQuery)({queryKey:["xray-status"],queryFn:()=>l("/api/xray/status","Failed to fetch X-Ray status"),refetchInterval:3e4,retry:u})}function x(e={}){return(0,s.useQuery)({queryKey:["xray-history",e],queryFn:()=>l(`/api/xray/history${m({risk:e.risk,targetType:e.targetType,deep:e.deep,search:e.search?.trim()||void 0})}`,"Failed to fetch X-Ray history"),refetchInterval:3e4,retry:u})}function v(e){return(0,s.useQuery)({queryKey:["xray-history-entry",e],queryFn:()=>l(`/api/xray/history/${e}`,"Failed to fetch X-Ray scan detail"),enabled:!!e,retry:u})}function y(e=25,t={}){return(0,s.useQuery)({queryKey:["xray-activity",e,t],queryFn:()=>l(`/api/xray/activity${m({limit:String(e),kind:t.kind,status:t.status,risk:t.risk,targetType:t.targetType,search:t.search?.trim()||void 0})}`,"Failed to fetch X-Ray activity"),refetchInterval:15e3,retry:u})}function p(e=20,t={}){return(0,s.useQuery)({queryKey:["xray-watch-sessions",e,t],queryFn:()=>l(`/api/xray/watch-sessions${m({limit:String(e),state:t.state,deep:t.deep,search:t.search?.trim()||void 0})}`,"Failed to fetch X-Ray watch sessions"),refetchInterval:15e3,retry:u})}function g(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:o,onSuccess:()=>{e.invalidateQueries({queryKey:["xray-history"]}),e.invalidateQueries({queryKey:["xray-activity"]}),e.invalidateQueries({queryKey:["xray-watch-sessions"]}),e.invalidateQueries({queryKey:["xray-status"]})}})}function f(){return(0,r.useMutation)({mutationFn:e=>d(e)})}async function b(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/watch/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,n.readApiError)(t,"Failed to start watch"));return t.json()}async function j(e){let t=await (0,n.gatedFetch)(`${c}/api/xray/watch/stop`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({target:e})});if(!t.ok)throw Error(await (0,n.readApiError)(t,"Failed to stop watch"));return t.json()}function w(){return(0,s.useQuery)({queryKey:["xray-active-watchers"],queryFn:()=>l("/api/xray/watch/active","Failed to fetch active watchers"),refetchInterval:1e4})}function N(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:b,onSuccess:()=>{e.invalidateQueries({queryKey:["xray-watch-sessions"]}),e.invalidateQueries({queryKey:["xray-active-watchers"]}),e.invalidateQueries({queryKey:["xray-status"]})}})}function k(){let e=(0,i.useQueryClient)();return(0,r.useMutation)({mutationFn:j,onSuccess:()=>{e.invalidateQueries({queryKey:["xray-watch-sessions"]}),e.invalidateQueries({queryKey:["xray-active-watchers"]}),e.invalidateQueries({queryKey:["xray-status"]})}})}e.s(["useActiveWatchers",()=>w,"usePickXRayTarget",()=>f,"useStartWatch",()=>N,"useStopWatch",()=>k,"useXRayActivity",()=>y,"useXRayHistory",()=>x,"useXRayHistoryEntry",()=>v,"useXRayScan",()=>g,"useXRayStatus",()=>h,"useXRayWatchSessions",()=>p],31309)},75025,e=>{"use strict";let t=(0,e.i(24929).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],75025)},46194,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text)]"},s={coral:{icon:"text-[var(--sc-coral)]",iconBg:"bg-[var(--sc-coral)]/10",trendUp:"text-[var(--sc-coral)]",trendDown:"text-[var(--sc-cyan)]"},cyan:{icon:"text-[var(--sc-cyan)]",iconBg:"bg-[var(--sc-cyan)]/10",trendUp:"text-[var(--sc-cyan)]",trendDown:"text-[var(--sc-coral)]"},amber:{icon:"text-[var(--sc-amber)]",iconBg:"bg-[var(--sc-amber)]/10",trendUp:"text-[var(--sc-amber)]",trendDown:"text-[var(--sc-text-muted)]"},muted:{icon:"text-[var(--sc-text-secondary)]",iconBg:"bg-[var(--sc-surface-interactive)]",trendUp:"text-[var(--sc-cyan)]",trendDown:"text-[var(--sc-coral)]"}};function i({label:e,value:i,icon:n,trend:c,accent:l="cyan",className:o}){let d=s[l];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center justify-between gap-3 px-4 py-2 border-b border-[var(--term-border)] last:border-0",o),children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsx)(n,{size:14,className:"text-[var(--term-text-muted)] shrink-0","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-xs uppercase tracking-wider text-[var(--term-text-muted)] truncate",children:e})]}),(0,t.jsxs)("div",{className:"flex items-baseline gap-2 shrink-0",children:[(0,t.jsx)("span",{className:(0,a.cn)("text-base tabular-nums",r[l]),children:i}),c&&(0,t.jsxs)("span",{className:(0,a.cn)("text-xs tabular-nums",c.value>=0?"text-[var(--term-neon-fg)]":"text-[var(--term-danger)]"),children:[c.value>=0?"+":"",c.value,"%"]})]})]}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block glass-card p-5",o),children:(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs font-medium uppercase tracking-wider text-[var(--sc-text-muted)]",children:e}),(0,t.jsx)("p",{className:"mt-2 text-2xl font-bold text-[var(--sc-text-primary)]",children:i}),c&&(0,t.jsxs)("p",{className:(0,a.cn)("mt-1 text-xs",c.value>=0?d.trendUp:d.trendDown),children:[c.value>=0?"+":"",c.value,"% ",c.label]})]}),(0,t.jsx)("div",{className:(0,a.cn)("rounded-xl p-2.5",d.iconBg),children:(0,t.jsx)(n,{size:20,className:d.icon})})]})})]})}e.s(["StatCard",()=>i])},15771,63312,50279,e=>{"use strict";let t=(0,e.i(24929).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],15771);var a=e.i(22534),r=e.i(45688),s=e.i(71921),i=e.i(1235),n=e.i(88969);let c=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function l(){let e=await (0,n.authFetch)(`${c}/api/license/status`);if(!e.ok)throw Error("Failed to fetch license status");return e.json()}async function o(e){let t=await (0,n.authFetch)(`${c}/api/license/activate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e})});if(!t.ok)throw Error((await t.json().catch(()=>({error:"Activation failed"}))).error||"Activation failed");return t.json()}async function d(){let e=await (0,n.authFetch)(`${c}/api/license/deactivate`,{method:"POST"});if(!e.ok)throw Error("Failed to deactivate license");return e.json()}function u(){return(0,r.useQuery)({queryKey:["license-status"],queryFn:l,refetchInterval:6e4,retry:2})}function m(){let e=(0,i.useQueryClient)();return(0,s.useMutation)({mutationFn:e=>o(e),onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}function h(){let e=(0,i.useQueryClient)();return(0,s.useMutation)({mutationFn:d,onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}e.s(["useActivateLicense",()=>m,"useDeactivateLicense",()=>h,"useLicenseStatus",()=>u],63312),e.s(["PLAN_PRICING",0,{pro:{label:"Pro",price:"£29/mo"},team:{label:"Team",price:"£99/mo"}},"TIER_BG",0,{free:"bg-[var(--sc-surface-interactive)]",pro:"bg-[var(--sc-cyan)]/10",team:"bg-[var(--sc-coral)]/10",enterprise:"bg-[var(--sc-amber)]/10"},"TIER_COLOURS",0,{free:"text-[var(--sc-text-muted)]",pro:"text-[var(--sc-cyan)]",team:"text-[var(--sc-coral)]",enterprise:"text-[var(--sc-amber)]"},"TIER_LABELS",0,{free:"Free",pro:"Pro",team:"Team",enterprise:"Enterprise"}],50279)},18509,e=>{"use strict";let t=(0,e.i(24929).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",()=>t],18509)},95659,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"text-[var(--term-danger)]",high:"text-[var(--term-danger)]",medium:"text-[var(--term-warn)]",low:"text-[var(--term-electric-fg)]",safe:"text-[var(--term-neon-fg)]",info:"text-[var(--term-text-muted)]",coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text-muted)]"},s={critical:"bg-[var(--term-danger)]",high:"bg-[var(--term-danger)]",medium:"bg-[var(--term-warn)]",low:"bg-[var(--term-electric)]",safe:"bg-[var(--term-neon)]",info:"bg-[var(--term-text-muted)]",coral:"bg-[var(--term-electric)]",cyan:"bg-[var(--term-neon)]",amber:"bg-[var(--term-warn)]",muted:"bg-[var(--term-text-muted)]"},i={critical:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",high:"theme-glass:bg-[var(--sc-coral-mid)]/15 theme-glass:border-[var(--sc-coral-mid)]/30",medium:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",low:"theme-glass:bg-[var(--sc-cyan-mid)]/15 theme-glass:border-[var(--sc-cyan-mid)]/30",safe:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",info:"theme-glass:bg-[var(--sc-text-muted)]/15 theme-glass:border-[var(--sc-text-muted)]/30",coral:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",cyan:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",amber:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",muted:"theme-glass:bg-[var(--sc-surface-interactive)] theme-glass:border-[var(--sc-border)]"};function n({children:e,variant:n="muted",className:c,dot:l=!1,pulse:o=!1}){return(0,t.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 px-1 text-[11px] font-semibold uppercase tracking-wider whitespace-nowrap",r[n],"theme-glass:rounded-full theme-glass:border theme-glass:px-2.5 theme-glass:py-0.5",i[n],c),children:[l&&(0,t.jsx)("span",{className:(0,a.cn)("h-1.5 w-1.5 rounded-full",s[n],o&&"animate-pulse"),"aria-hidden":!0}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"["}),(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"]"})]})}function c(e){let t=e.toUpperCase();return"CRITICAL"===t?"critical":"HIGH"===t?"high":"MEDIUM"===t?"medium":"LOW"===t?"low":"SAFE"===t?"safe":"info"}e.s(["Badge",()=>n,"riskVariant",()=>c])},81523,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(4);let s={coral:"border border-[var(--term-electric)] text-[var(--term-electric-fg)] bg-transparent hover:bg-[var(--term-electric)]/10",cyan:"border border-[var(--term-neon)] text-[var(--term-neon-fg)] bg-transparent hover:bg-[var(--term-neon)]/10",ghost:"border border-transparent text-[var(--term-text-muted)] bg-transparent hover:text-[var(--term-text)] hover:border-[var(--term-border)]",outline:"border border-[var(--term-border)] text-[var(--term-text-dim)] bg-transparent hover:border-[var(--term-text-muted)] hover:text-[var(--term-text)]"},i={sm:"px-2 py-1 text-xs",md:"px-3 py-1.5 text-sm",lg:"px-4 py-2 text-sm"},n={coral:"theme-glass:border-0 theme-glass:bg-gradient-to-br theme-glass:from-[var(--sc-coral)] theme-glass:to-[var(--sc-coral-dark)] theme-glass:text-white theme-glass:hover:shadow-[0_8px_30px_var(--sc-glow-coral-mid)]",cyan:"theme-glass:border-0 theme-glass:bg-[var(--sc-cyan)] theme-glass:text-[var(--sc-bg-deep)] theme-glass:hover:bg-[var(--sc-cyan-mid)]",ghost:"theme-glass:bg-transparent theme-glass:text-[var(--sc-text-secondary)] theme-glass:hover:bg-[var(--sc-surface-interactive)]",outline:"theme-glass:bg-transparent theme-glass:border theme-glass:border-[var(--sc-border)] theme-glass:text-[var(--sc-text-secondary)]"},c={sm:"theme-glass:px-3 theme-glass:py-1.5 theme-glass:text-xs theme-glass:rounded-lg",md:"theme-glass:px-4 theme-glass:py-2 theme-glass:text-sm theme-glass:rounded-xl",lg:"theme-glass:px-6 theme-glass:py-3 theme-glass:text-sm theme-glass:rounded-xl"},l=(0,r.forwardRef)(({variant:e="coral",size:r="md",glow:l=!1,pulse:o=!1,className:d,children:u,...m},h)=>(0,t.jsxs)("button",{ref:h,className:(0,a.cn)("inline-flex items-center justify-center gap-2 rounded-md font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",o?"disabled:pointer-events-none":"disabled:pointer-events-none disabled:opacity-50",s[e],i[r],"theme-glass:font-semibold theme-glass:transition-all theme-glass:hover:-translate-y-0.5",n[e],c[r],l&&"coral"===e&&"theme-glass:glow-coral-subtle",l&&"cyan"===e&&"theme-glass:glow-cyan-subtle",o&&"theme-glass:glow-cyan-pulse",d),type:"button",...m,children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-2 theme-glass:hidden",children:[o&&(0,t.jsx)("span",{className:"cli-cursor","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"["}),(0,t.jsx)("span",{className:"leading-none",children:u}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"]"})]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline-flex items-center gap-2",children:u})]}));l.displayName="Button",e.s(["Button",0,l])},66949,e=>{"use strict";let t=(0,e.i(24929).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",()=>t],66949)},40950,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(66949);function s({tabs:e,activeTab:s,onChange:i,className:n}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center gap-4 overflow-x-auto border-b border-[var(--term-border)] px-1 scrollbar-hide","theme-glass:gap-1 theme-glass:rounded-xl theme-glass:border-0 theme-glass:bg-[var(--sc-bg-surface)] theme-glass:p-1",n),role:"tablist",children:e.map(e=>{let n=e.id===s;return(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":n?"true":"false",onClick:()=>i(e.id),className:(0,a.cn)("relative flex shrink-0 items-center gap-2 px-1 py-2 text-xs font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",n?"text-[var(--term-electric-fg)]":"text-[var(--term-text-muted)] hover:text-[var(--term-text)]","theme-glass:font-medium theme-glass:font-sans theme-glass:rounded-lg theme-glass:px-3 theme-glass:py-2 sm:theme-glass:px-4 sm:theme-glass:text-sm",n&&"theme-glass:bg-[var(--sc-bg-elevated)] theme-glass:text-[var(--sc-text-primary)]",!n&&"theme-glass:hover:text-[var(--sc-text-secondary)]"),children:[e.icon,(0,t.jsx)("span",{children:e.label}),e.locked&&(0,t.jsx)(r.Lock,{size:11,className:"text-[var(--term-warn)] theme-glass:text-[var(--sc-coral)]"}),void 0!==e.count&&e.count>0&&(0,t.jsxs)("span",{className:"text-[var(--term-text-muted)] theme-glass:ml-0.5 theme-glass:rounded-full theme-glass:bg-[var(--sc-coral)]/15 theme-glass:px-1.5 theme-glass:py-0.5 theme-glass:text-[10px] theme-glass:font-bold theme-glass:text-[var(--sc-coral)]",children:[(0,t.jsxs)("span",{className:"theme-glass:hidden",children:["(",e.count,")"]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline",children:e.count})]}),n&&(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -bottom-px left-0 right-0 h-px bg-[var(--term-electric)] theme-glass:hidden"})]},e.id)})})}function i({eyebrow:e,title:r,subtitle:i,actions:n,tabs:c,activeTab:l,onTabChange:o,className:d}){return(0,t.jsxs)("div",{className:(0,a.cn)("space-y-3 theme-glass:space-y-4",d),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-4 theme-glass:gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"theme-glass:hidden",children:[e&&(0,t.jsxs)("p",{className:"text-[11px] uppercase tracking-wider text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]",children:"›"})," ",e]}),(0,t.jsxs)("h1",{className:"mt-1 flex items-baseline flex-wrap gap-2 text-base font-mono text-[var(--term-text)] sm:text-lg",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]","aria-hidden":!0,children:"$"}),(0,t.jsx)("span",{children:"shieldcortex"}),(0,t.jsx)("span",{className:"text-[var(--term-text-dim)]",children:r.toLowerCase()}),(0,t.jsx)("span",{className:"cli-cursor text-[var(--term-electric-fg)]","aria-hidden":!0})]}),i&&(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:"#"})," ",i]})]}),(0,t.jsxs)("div",{className:"hidden theme-glass:block",children:[e&&(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-[0.2em] text-[var(--sc-coral)] sm:text-[11px]",children:e}),(0,t.jsx)("h1",{className:"mt-1 text-xl font-bold text-[var(--sc-text-primary)] sm:text-2xl",children:r}),i&&(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)] sm:text-sm",children:i})]})]}),n&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:n})]}),c&&l&&o&&(0,t.jsx)(s,{tabs:c,activeTab:l,onChange:o})]})}e.s(["PageHeader",()=>i],40950)},19331,e=>{"use strict";let t=(0,e.i(24929).default)("clock-3",[["path",{d:"M12 6v6h4",key:"135r8i"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock3",()=>t],19331)},87353,e=>{"use strict";var t=e.i(22534),a=e.i(45688),r=e.i(71921),s=e.i(1235),i=e.i(88969),n=e.i(23147),c=e.i(35372);let l=t.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function o(e){let t=new URLSearchParams;e?.startTime&&t.set("startTime",e.startTime),e?.endTime&&t.set("endTime",e.endTime),e?.source&&t.set("source",e.source),e?.firewallResult&&t.set("firewallResult",e.firewallResult),e?.project&&t.set("project",e.project),e?.limit&&t.set("limit",e.limit.toString());let a=await (0,i.authFetch)(`${l}/api/v1/audit?${t}`);if(!a.ok)throw Error(await (0,i.readApiError)(a,"Failed to fetch audit logs"));return a.json()}async function d(e,t){let a=new URLSearchParams({timeRange:e});t&&a.set("project",t);let r=await (0,i.authFetch)(`${l}/api/v1/audit/stats?${a}`);if(!r.ok)throw Error(await (0,i.readApiError)(r,"Failed to fetch audit stats"));return r.json()}async function u(e="pending",t=50,a,r){let s=new URLSearchParams({status:e,limit:t.toString()});a&&s.set("project",a),r&&s.set("sourceType",r);let n=await (0,i.authFetch)(`${l}/api/v1/quarantine?${s}`);if(!n.ok)throw Error(await (0,i.readApiError)(n,"Failed to fetch quarantine"));return n.json()}async function m(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/${e}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reviewedBy:"dashboard"})});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to approve quarantined item"));return t.json()}async function h(e,t){let a=await (0,i.authFetch)(`${l}/api/v1/quarantine/${e}/reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reviewedBy:"dashboard",notes:t})});if(!a.ok)throw Error(await (0,i.readApiError)(a,"Failed to reject quarantined item"));return a.json()}async function x(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/bulk-approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e,reviewedBy:"dashboard"})});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to bulk approve quarantined items"));return t.json()}async function v(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/bulk-reject`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ids:e,reviewedBy:"dashboard"})});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to bulk reject quarantined items"));return t.json()}async function y(){let e=await (0,i.authFetch)(`${l}/api/v1/review-copilot/status`);if(!e.ok)throw Error(await (0,i.readApiError)(e,"Failed to fetch Local AI status"));return e.json()}async function p(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/${e}/annotate`,{method:"POST",headers:{"Content-Type":"application/json"}});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to explain quarantined item"));return t.json()}async function g(e){let t=await (0,i.authFetch)(`${l}/api/v1/quarantine/annotate-pending`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,i.readApiError)(t,"Failed to explain pending quarantine"));return t.json()}function f(e){let{isConnected:t}=(0,c.useWebSocketStatus)();return(0,a.useQuery)({queryKey:["audit-logs",e],queryFn:()=>o(e),refetchInterval:(0,n.wsGatedInterval)(t,3e4),retry:2})}function b(e="24h",t){let{isConnected:r}=(0,c.useWebSocketStatus)();return(0,a.useQuery)({queryKey:["audit-stats",e,t],queryFn:()=>d(e,t),refetchInterval:(0,n.wsGatedInterval)(r,3e4),retry:2})}function j(e="pending",t=50,r,s){let{isConnected:i}=(0,c.useWebSocketStatus)();return(0,a.useQuery)({queryKey:["quarantine",e,t,r,s],queryFn:()=>u(e,t,r,s),refetchInterval:(0,n.wsGatedInterval)(i,3e4),retry:2})}function w(){return(0,a.useQuery)({queryKey:["review-copilot-status"],queryFn:y,refetchInterval:3e4,retry:2})}function N(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:m,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["memories"]}),e.invalidateQueries({queryKey:["stats"]}),e.invalidateQueries({queryKey:["review-queue"]}),e.invalidateQueries({queryKey:["openclaw-sessions"]}),e.invalidateQueries({queryKey:["quality"]})}})}function k(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:({id:e,notes:t})=>h(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["review-queue"]})}})}function S(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:x,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["memories"]}),e.invalidateQueries({queryKey:["stats"]}),e.invalidateQueries({queryKey:["review-queue"]}),e.invalidateQueries({queryKey:["openclaw-sessions"]}),e.invalidateQueries({queryKey:["quality"]})}})}function q(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:v,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["audit-stats"]}),e.invalidateQueries({queryKey:["review-queue"]})}})}function C(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:p,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["review-copilot-status"]})}})}function F(){let e=(0,s.useQueryClient)();return(0,r.useMutation)({mutationFn:g,onSuccess:()=>{e.invalidateQueries({queryKey:["quarantine"]}),e.invalidateQueries({queryKey:["review-copilot-status"]})}})}e.s(["useAnnotatePendingQuarantine",()=>F,"useAnnotateQuarantine",()=>C,"useApproveQuarantine",()=>N,"useAuditLogs",()=>f,"useAuditStats",()=>b,"useBulkApproveQuarantine",()=>S,"useBulkRejectQuarantine",()=>q,"useQuarantine",()=>j,"useRejectQuarantine",()=>k,"useReviewCopilotStatus",()=>w])},14612,e=>{"use strict";var t=e.i(27493),a=e.i(4),r=e.i(56640),s=e.i(18509),i=e.i(36062),n=e.i(15771),c=e.i(19331),l=e.i(7571),o=e.i(75025),d=e.i(76344),u=e.i(27528),m=e.i(51069),h=e.i(16467),x=e.i(46194),v=e.i(95659),y=e.i(81523),p=e.i(40950),g=e.i(13808);let f=(0,e.i(24929).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);function b({ready:e,memoryCount:a,scanCount:r,blockedCount:s}){return!e||a>0||r>0||s>0?null:(0,t.jsxs)(h.GlassCard,{strong:!0,className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(g.Sparkles,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Welcome to ShieldCortex"})]}),(0,t.jsxs)("p",{className:"mt-2 max-w-2xl text-sm text-[var(--sc-text-secondary)]",children:["Nothing here yet. The dashboard is for ",(0,t.jsx)("strong",{className:"text-[var(--sc-text-primary)]",children:"visual review and bulk decisions"}),"; the ",(0,t.jsx)("code",{className:"font-mono",children:"shieldcortex"})," CLI and the agent hooks are for ",(0,t.jsx)("strong",{className:"text-[var(--sc-text-primary)]",children:"automation"}),". It fills in as your agents capture memories and the defence pipeline runs."]}),(0,t.jsxs)("div",{className:"mt-5 grid gap-3 sm:grid-cols-3",children:[(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(l.Database,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:"Capture memories"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:["Captured automatically as you work (Claude Code / OpenClaw hooks), or via the"," ",(0,t.jsx)("code",{className:"font-mono",children:"remember"})," MCP tool."]})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(f,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:"Generate audit data"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:["Run ",(0,t.jsx)("code",{className:"font-mono",children:"shieldcortex scan <file>"})," to push content through the defence pipeline and populate the audit log."]})]}),(0,t.jsxs)("div",{className:"rounded-xl border border-[var(--sc-border)] bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(d.ScanSearch,{size:16,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-2 text-sm font-medium text-[var(--sc-text-primary)]",children:"Scan supply chain"}),(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:["Run an X-Ray scan from the X-Ray page, or"," ",(0,t.jsx)("code",{className:"font-mono",children:"shieldcortex xray <path>"})," from the CLI."]})]})]})]})}var j=e.i(88069),w=e.i(87353),N=e.i(63312),k=e.i(31309),S=e.i(50279);function q(){let{data:e}=(0,j.useStats)(),{data:g}=(0,w.useAuditStats)("24h"),{data:f}=(0,w.useQuarantine)("pending",10),{data:q}=(0,w.useQuarantine)("pending",1,void 0,"memory_file"),{data:C}=(0,j.useQuality)(),{data:F}=(0,j.useContradictions)(),{data:Q}=(0,N.useLicenseStatus)(),{data:T}=(0,k.useXRayStatus)(),R=e?.total??0,$=e?.decayDistribution?.healthy??0,K=e?.decayDistribution?.fading??0,A=e?.decayDistribution?.critical??0,E=e?.decayDistribution?Math.round($/Math.max(1,R)*100):0,L=F?.count??F?.contradictions?.length??0,I=f?.total??0,M=q?.total??0,P=Math.max(0,I-M),O=g?.blockedCount??0,B=C?.duplicates?.count??0,z=C?.stale?.count??0,U=C?.neverAccessed?.count??0,D=T?.summary?.scans??0,X=(0,a.useMemo)(()=>{let e=[];return M>0&&e.push({title:`${M} memory file finding${1===M?"":"s"} need review`,detail:"These are scanned agent memory files, not stored ShieldCortex memories. Review or dismiss them without editing files.",severity:M>10?"critical":"medium",href:"/protection?tab=quarantine",cta:"Review files"}),P>0&&e.push({title:`${P} memory write${1===P?"":"s"} in quarantine`,detail:"Review blocked writes before they become silent operator debt.",severity:P>10?"critical":"medium",href:"/protection?tab=quarantine",cta:"Review writes"}),L>0&&e.push({title:`${L} contradiction${1===L?"":"s"} detected`,detail:"Conflicting facts reduce recall trust.",severity:L>5?"high":"medium",href:"/memory?tab=review",cta:"Resolve"}),O>0&&e.push({title:`${O} blocked operation${1===O?"":"s"} (24h)`,detail:"Defence pipeline blocked suspicious writes.",severity:"high",href:"/protection?tab=audit",cta:"View audit"}),z+B>0&&e.push({title:"Memory cleanup available",detail:`${z} stale, ${B} duplicate, ${U} unused memories.`,severity:"low",href:"/memory?tab=review",cta:"Clean up"}),e.slice(0,4)},[M,P,L,O,z,B,U]),_=M>0&&P>0?`${M} file finding${1===M?"":"s"}, ${P} write${1===P?"":"s"} pending.`:M>0?`${M} memory-file finding${1===M?"":"s"} pending.`:`${I} item${1===I?"":"s"} pending review.`;return(0,t.jsx)("div",{className:"h-full overflow-y-auto",children:(0,t.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,t.jsx)(p.PageHeader,{eyebrow:"ShieldCortex",title:"Command Centre",subtitle:"Stored-memory health, memory-file findings, threat pressure, and operational status at a glance."}),(0,t.jsx)(b,{ready:void 0!==e,memoryCount:R,scanCount:D,blockedCount:O}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-5",children:[(0,t.jsx)(x.StatCard,{label:"Stored Memories",value:R.toLocaleString(),icon:l.Database,accent:"cyan",trend:E>0?{value:E,label:"healthy"}:void 0}),(0,t.jsx)(x.StatCard,{label:"Memory Files Flagged",value:M.toLocaleString(),icon:o.FileText,accent:M>0?"amber":"muted"}),(0,t.jsx)(x.StatCard,{label:"Threats Blocked",value:O.toLocaleString(),icon:m.ShieldAlert,accent:O>0?"coral":"muted"}),(0,t.jsx)(x.StatCard,{label:"X-Ray Scans",value:D.toLocaleString(),icon:d.ScanSearch,accent:"cyan"}),(0,t.jsx)(x.StatCard,{label:"Health Score",value:`${E}%`,icon:u.Shield,accent:E>=80?"cyan":E>=50?"amber":"coral"})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 gap-6 lg:grid-cols-[1fr_1fr]",children:[(0,t.jsxs)(h.GlassCard,{className:"p-6",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Stored Memory Health"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-muted)]",children:"Decay distribution across ShieldCortex stored memories."}),(0,t.jsx)("div",{className:"mt-6 flex items-center justify-center",children:(0,t.jsxs)("div",{className:"relative h-40 w-40",children:[(0,t.jsxs)("svg",{viewBox:"0 0 100 100",className:"h-full w-full -rotate-90",children:[(0,t.jsx)("circle",{cx:"50",cy:"50",r:"42",fill:"none",stroke:"var(--sc-bg-elevated)",strokeWidth:"8"}),(0,t.jsx)("circle",{cx:"50",cy:"50",r:"42",fill:"none",stroke:"var(--sc-cyan)",strokeWidth:"8",strokeDasharray:`${2.64*E} 264`,strokeLinecap:"round",className:"transition-all duration-1000"})]}),(0,t.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center",children:[(0,t.jsxs)("span",{className:"text-3xl font-bold text-[var(--sc-text-primary)]",children:[E,"%"]}),(0,t.jsx)("span",{className:"text-xs text-[var(--sc-text-muted)]",children:"healthy"})]})]})}),(0,t.jsxs)("div",{className:"mt-6 grid grid-cols-3 gap-3 text-center",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-lg font-semibold text-[var(--sc-cyan)]",children:$}),(0,t.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"Healthy"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-lg font-semibold text-[var(--sc-amber)]",children:K}),(0,t.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"Fading"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"text-lg font-semibold text-[var(--sc-coral)]",children:A}),(0,t.jsx)("div",{className:"text-xs text-[var(--sc-text-muted)]",children:"Critical"})]})]})]}),(0,t.jsxs)(h.GlassCard,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Urgent Actions"}),X.length>0&&(0,t.jsxs)(v.Badge,{variant:"coral",dot:!0,pulse:!0,children:[X.length," active"]})]}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-muted)]",children:"Quickest wins for trust, safety, and recall quality."}),(0,t.jsx)("div",{className:"mt-4 space-y-3",children:0===X.length?(0,t.jsxs)("div",{className:"flex items-center gap-3 rounded-xl bg-[var(--sc-bg-elevated)] p-4",children:[(0,t.jsx)(n.CheckCircle2,{size:18,className:"shrink-0 text-[var(--sc-cyan)]"}),(0,t.jsxs)("div",{children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"All clear"}),(0,t.jsx)("p",{className:"text-xs text-[var(--sc-text-muted)]",children:"No urgent issues right now. Memory health looks stable."})]})]}):X.map(e=>(0,t.jsxs)(r.default,{href:e.href,className:"group flex items-start gap-3 rounded-xl bg-[var(--sc-bg-elevated)] p-4 transition-all hover:bg-[var(--sc-surface-interactive-hover)]",children:["critical"===e.severity||"high"===e.severity?(0,t.jsx)(s.AlertTriangle,{size:16,className:"mt-0.5 shrink-0 text-[var(--sc-coral)]"}):"medium"===e.severity?(0,t.jsx)(c.Clock3,{size:16,className:"mt-0.5 shrink-0 text-[var(--sc-amber)]"}):(0,t.jsx)(n.CheckCircle2,{size:16,className:"mt-0.5 shrink-0 text-[var(--sc-cyan)]"}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:e.title}),(0,t.jsx)("p",{className:"mt-0.5 text-xs text-[var(--sc-text-muted)]",children:e.detail})]}),(0,t.jsxs)("span",{className:"flex shrink-0 items-center gap-1 text-xs font-medium text-[var(--sc-cyan)] opacity-0 transition-opacity group-hover:opacity-100",children:[e.cta," ",(0,t.jsx)(i.ArrowRight,{size:12})]})]},e.title))})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(r.default,{href:"/xray",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(d.ScanSearch,{size:20,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Run X-Ray Scan"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Inspect packages and files for hidden risk."})]})}),(0,t.jsx)(r.default,{href:"/protection?tab=quarantine",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(s.AlertTriangle,{size:20,className:"text-[var(--sc-amber)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Review Quarantine"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:_})]})}),(0,t.jsx)(r.default,{href:"/memory?tab=recall",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(l.Database,{size:20,className:"text-[var(--sc-cyan)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Debug Recall"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Test queries and inspect ranking factors."})]})}),(0,t.jsx)(r.default,{href:"/protection?tab=dome",children:(0,t.jsxs)(h.GlassCard,{hover:!0,className:"p-5",children:[(0,t.jsx)(m.ShieldAlert,{size:20,className:"text-[var(--sc-coral)]"}),(0,t.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:"Iron Dome"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Kill switch and behaviour gates."})]})})]}),(0,t.jsxs)(h.GlassCard,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-[var(--sc-text-primary)]",children:"Licence"}),(0,t.jsx)("p",{className:"mt-1 text-sm text-[var(--sc-text-muted)]",children:"Current tier and feature access."})]}),(0,t.jsx)(v.Badge,{variant:Q?.tier==="pro"?"cyan":Q?.tier==="team"?"coral":"muted",children:S.TIER_LABELS[Q?.tier??"free"]})]}),Q?.tier==="free"&&(0,t.jsxs)("div",{className:"mt-4 flex items-center gap-4 rounded-xl bg-gradient-to-r from-[var(--sc-coral)]/5 to-[var(--sc-cyan)]/5 p-4",children:[(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsx)("p",{className:"text-sm font-medium text-[var(--sc-text-primary)]",children:"Unlock deep scanning, custom policies, and audit exports"}),(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-muted)]",children:"Pro starts at £29/mo with 10K cloud scans and 90-day retention."})]}),(0,t.jsx)("a",{href:"https://shieldcortex.ai/pricing",target:"_blank",rel:"noopener noreferrer",children:(0,t.jsx)(y.Button,{variant:"coral",size:"sm",glow:!0,children:"Upgrade"})})]})]})]})})}function C(){return(0,t.jsx)(q,{})}e.s(["default",()=>C],14612)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67307,e=>{"use strict";let t=(0,e.i(24929).default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);e.s(["RefreshCw",()=>t],67307)},87927,e=>{"use strict";let t="shieldcortex.graph.intensity",a=new Set(["subtle","moderate","strong"]);function s(e){let s=e??window.localStorage;if(!s)return"moderate";let r=s.getItem(t);return"string"==typeof r&&a.has(r)?r:"moderate"}function r(e,a){let s=a??window.localStorage;s&&(s.setItem(t,e),"u">typeof CustomEvent&&window.dispatchEvent(new CustomEvent("shieldcortex:intensity-changed",{detail:e})))}function l(){return!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}e.s(["INTENSITY",0,{subtle:{breathPeriod:6e3,breathAmp:.03,particleCap:20,decayCreate:.98,decayRecall:.96},moderate:{breathPeriod:3e3,breathAmp:.08,particleCap:60,decayCreate:.96,decayRecall:.93},strong:{breathPeriod:1600,breathAmp:.14,particleCap:120,decayCreate:.94,decayRecall:.9}},"REDUCED_INTENSITY",0,{breathPeriod:1/0,breathAmp:0,particleCap:0,decayCreate:0,decayRecall:0},"isReducedMotion",()=>l,"loadIntensity",()=>s,"saveIntensity",()=>r])},16467,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let s={critical:"severity-critical",high:"severity-high",medium:"severity-medium",low:"severity-low",safe:"severity-safe",info:"severity-info"};function r({children:e,className:r,hover:l=!1,hoverCyan:c=!1,strong:i=!1,severity:n,onClick:m,selected:d=!1,title:o,statusLine:h,bodyPadding:x=!0}){let g=m?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),m())}:void 0;return(0,t.jsxs)("div",{className:(0,a.cn)("glass-card overflow-hidden",l&&"glass-card-hover cursor-pointer",c&&"glass-card-hover-cyan cursor-pointer",m&&!l&&!c&&"cursor-pointer",n&&s[n],d&&"border-[var(--term-electric)]",r),onClick:m,onKeyDown:g,role:m?"button":void 0,tabIndex:m?0:void 0,children:[void 0!==o&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--term-border)] bg-[var(--term-surface-2)] theme-glass:hidden",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-red)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-yellow)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-green)]"}),(0,t.jsx)("span",{className:"ml-2 text-xs select-none truncate text-[var(--term-text-muted)]",children:o})]}),(0,t.jsx)("div",{className:(0,a.cn)(x?"p-5":""),children:e}),void 0!==h&&(0,t.jsx)("div",{className:"px-4 py-2 text-xs border-t border-[var(--term-border)] bg-[var(--term-surface-2)] text-[var(--term-text-muted)] theme-glass:hidden",children:h})]})}e.s(["GlassCard",()=>r])},6847,e=>{"use strict";let t=(0,e.i(24929).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);e.s(["Search",()=>t],6847)},84012,e=>{"use strict";let t=(0,e.i(24929).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],84012)},77744,e=>{"use strict";let t=(0,e.i(24929).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",()=>t],77744)},53615,e=>{"use strict";var t=e.i(27493),a=e.i(76490);function s({className:e}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center overflow-hidden rounded-md bg-[var(--term-surface-2)] text-[var(--term-text-muted)] text-xs leading-none animate-pulse px-2",e),"aria-busy":"true","aria-live":"polite",children:(0,t.jsx)("span",{className:"select-none whitespace-nowrap tracking-tighter",children:"█▓▓▓▒▒▒░░░░ ▓▓▒▒░░ █▓▒░ ▓▓▒░░ █▓▓▒░░░ ▓▒░░ █▒▒░"})}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block animate-pulse rounded-xl bg-[var(--sc-surface-interactive)]",e),"aria-busy":"true","aria-live":"polite"})]})}function r(){return(0,t.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(s,{className:"h-3 w-24"}),(0,t.jsx)(s,{className:"h-7 w-56"}),(0,t.jsx)(s,{className:"h-4 w-80"})]}),(0,t.jsx)(s,{className:"h-10 w-96"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(s,{className:"h-24"}),(0,t.jsx)(s,{className:"h-24"}),(0,t.jsx)(s,{className:"h-24"}),(0,t.jsx)(s,{className:"h-24"})]}),(0,t.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,t.jsx)(s,{className:"h-64"}),(0,t.jsx)(s,{className:"h-64"})]})]})}e.s(["PageSkeleton",()=>r,"Skeleton",()=>s])},15771,63312,50279,e=>{"use strict";let t=(0,e.i(24929).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],15771);var a=e.i(22534),s=e.i(45688),r=e.i(71921),l=e.i(1235),c=e.i(88969);let i=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function n(){let e=await (0,c.authFetch)(`${i}/api/license/status`);if(!e.ok)throw Error("Failed to fetch license status");return e.json()}async function m(e){let t=await (0,c.authFetch)(`${i}/api/license/activate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e})});if(!t.ok)throw Error((await t.json().catch(()=>({error:"Activation failed"}))).error||"Activation failed");return t.json()}async function d(){let e=await (0,c.authFetch)(`${i}/api/license/deactivate`,{method:"POST"});if(!e.ok)throw Error("Failed to deactivate license");return e.json()}function o(){return(0,s.useQuery)({queryKey:["license-status"],queryFn:n,refetchInterval:6e4,retry:2})}function h(){let e=(0,l.useQueryClient)();return(0,r.useMutation)({mutationFn:e=>m(e),onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}function x(){let e=(0,l.useQueryClient)();return(0,r.useMutation)({mutationFn:d,onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}e.s(["useActivateLicense",()=>h,"useDeactivateLicense",()=>x,"useLicenseStatus",()=>o],63312),e.s(["PLAN_PRICING",0,{pro:{label:"Pro",price:"£29/mo"},team:{label:"Team",price:"£99/mo"}},"TIER_BG",0,{free:"bg-[var(--sc-surface-interactive)]",pro:"bg-[var(--sc-cyan)]/10",team:"bg-[var(--sc-coral)]/10",enterprise:"bg-[var(--sc-amber)]/10"},"TIER_COLOURS",0,{free:"text-[var(--sc-text-muted)]",pro:"text-[var(--sc-cyan)]",team:"text-[var(--sc-coral)]",enterprise:"text-[var(--sc-amber)]"},"TIER_LABELS",0,{free:"Free",pro:"Pro",team:"Team",enterprise:"Enterprise"}],50279)},18509,e=>{"use strict";let t=(0,e.i(24929).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",()=>t],18509)},95659,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let s={critical:"text-[var(--term-danger)]",high:"text-[var(--term-danger)]",medium:"text-[var(--term-warn)]",low:"text-[var(--term-electric-fg)]",safe:"text-[var(--term-neon-fg)]",info:"text-[var(--term-text-muted)]",coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text-muted)]"},r={critical:"bg-[var(--term-danger)]",high:"bg-[var(--term-danger)]",medium:"bg-[var(--term-warn)]",low:"bg-[var(--term-electric)]",safe:"bg-[var(--term-neon)]",info:"bg-[var(--term-text-muted)]",coral:"bg-[var(--term-electric)]",cyan:"bg-[var(--term-neon)]",amber:"bg-[var(--term-warn)]",muted:"bg-[var(--term-text-muted)]"},l={critical:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",high:"theme-glass:bg-[var(--sc-coral-mid)]/15 theme-glass:border-[var(--sc-coral-mid)]/30",medium:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",low:"theme-glass:bg-[var(--sc-cyan-mid)]/15 theme-glass:border-[var(--sc-cyan-mid)]/30",safe:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",info:"theme-glass:bg-[var(--sc-text-muted)]/15 theme-glass:border-[var(--sc-text-muted)]/30",coral:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",cyan:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",amber:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",muted:"theme-glass:bg-[var(--sc-surface-interactive)] theme-glass:border-[var(--sc-border)]"};function c({children:e,variant:c="muted",className:i,dot:n=!1,pulse:m=!1}){return(0,t.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 px-1 text-[11px] font-semibold uppercase tracking-wider whitespace-nowrap",s[c],"theme-glass:rounded-full theme-glass:border theme-glass:px-2.5 theme-glass:py-0.5",l[c],i),children:[n&&(0,t.jsx)("span",{className:(0,a.cn)("h-1.5 w-1.5 rounded-full",r[c],m&&"animate-pulse"),"aria-hidden":!0}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"["}),(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"]"})]})}function i(e){let t=e.toUpperCase();return"CRITICAL"===t?"critical":"HIGH"===t?"high":"MEDIUM"===t?"medium":"LOW"===t?"low":"SAFE"===t?"safe":"info"}e.s(["Badge",()=>c,"riskVariant",()=>i])},66949,e=>{"use strict";let t=(0,e.i(24929).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",()=>t],66949)},40950,e=>{"use strict";var t=e.i(27493),a=e.i(76490),s=e.i(66949);function r({tabs:e,activeTab:r,onChange:l,className:c}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center gap-4 overflow-x-auto border-b border-[var(--term-border)] px-1 scrollbar-hide","theme-glass:gap-1 theme-glass:rounded-xl theme-glass:border-0 theme-glass:bg-[var(--sc-bg-surface)] theme-glass:p-1",c),role:"tablist",children:e.map(e=>{let c=e.id===r;return(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":c?"true":"false",onClick:()=>l(e.id),className:(0,a.cn)("relative flex shrink-0 items-center gap-2 px-1 py-2 text-xs font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",c?"text-[var(--term-electric-fg)]":"text-[var(--term-text-muted)] hover:text-[var(--term-text)]","theme-glass:font-medium theme-glass:font-sans theme-glass:rounded-lg theme-glass:px-3 theme-glass:py-2 sm:theme-glass:px-4 sm:theme-glass:text-sm",c&&"theme-glass:bg-[var(--sc-bg-elevated)] theme-glass:text-[var(--sc-text-primary)]",!c&&"theme-glass:hover:text-[var(--sc-text-secondary)]"),children:[e.icon,(0,t.jsx)("span",{children:e.label}),e.locked&&(0,t.jsx)(s.Lock,{size:11,className:"text-[var(--term-warn)] theme-glass:text-[var(--sc-coral)]"}),void 0!==e.count&&e.count>0&&(0,t.jsxs)("span",{className:"text-[var(--term-text-muted)] theme-glass:ml-0.5 theme-glass:rounded-full theme-glass:bg-[var(--sc-coral)]/15 theme-glass:px-1.5 theme-glass:py-0.5 theme-glass:text-[10px] theme-glass:font-bold theme-glass:text-[var(--sc-coral)]",children:[(0,t.jsxs)("span",{className:"theme-glass:hidden",children:["(",e.count,")"]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline",children:e.count})]}),c&&(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -bottom-px left-0 right-0 h-px bg-[var(--term-electric)] theme-glass:hidden"})]},e.id)})})}function l({eyebrow:e,title:s,subtitle:l,actions:c,tabs:i,activeTab:n,onTabChange:m,className:d}){return(0,t.jsxs)("div",{className:(0,a.cn)("space-y-3 theme-glass:space-y-4",d),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-4 theme-glass:gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"theme-glass:hidden",children:[e&&(0,t.jsxs)("p",{className:"text-[11px] uppercase tracking-wider text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]",children:"›"})," ",e]}),(0,t.jsxs)("h1",{className:"mt-1 flex items-baseline flex-wrap gap-2 text-base font-mono text-[var(--term-text)] sm:text-lg",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]","aria-hidden":!0,children:"$"}),(0,t.jsx)("span",{children:"shieldcortex"}),(0,t.jsx)("span",{className:"text-[var(--term-text-dim)]",children:s.toLowerCase()}),(0,t.jsx)("span",{className:"cli-cursor text-[var(--term-electric-fg)]","aria-hidden":!0})]}),l&&(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:"#"})," ",l]})]}),(0,t.jsxs)("div",{className:"hidden theme-glass:block",children:[e&&(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-[0.2em] text-[var(--sc-coral)] sm:text-[11px]",children:e}),(0,t.jsx)("h1",{className:"mt-1 text-xl font-bold text-[var(--sc-text-primary)] sm:text-2xl",children:s}),l&&(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)] sm:text-sm",children:l})]})]}),c&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:c})]}),i&&n&&m&&(0,t.jsx)(r,{tabs:i,activeTab:n,onChange:m})]})}e.s(["PageHeader",()=>l],40950)},81523,e=>{"use strict";var t=e.i(27493),a=e.i(76490),s=e.i(4);let r={coral:"border border-[var(--term-electric)] text-[var(--term-electric-fg)] bg-transparent hover:bg-[var(--term-electric)]/10",cyan:"border border-[var(--term-neon)] text-[var(--term-neon-fg)] bg-transparent hover:bg-[var(--term-neon)]/10",ghost:"border border-transparent text-[var(--term-text-muted)] bg-transparent hover:text-[var(--term-text)] hover:border-[var(--term-border)]",outline:"border border-[var(--term-border)] text-[var(--term-text-dim)] bg-transparent hover:border-[var(--term-text-muted)] hover:text-[var(--term-text)]"},l={sm:"px-2 py-1 text-xs",md:"px-3 py-1.5 text-sm",lg:"px-4 py-2 text-sm"},c={coral:"theme-glass:border-0 theme-glass:bg-gradient-to-br theme-glass:from-[var(--sc-coral)] theme-glass:to-[var(--sc-coral-dark)] theme-glass:text-white theme-glass:hover:shadow-[0_8px_30px_var(--sc-glow-coral-mid)]",cyan:"theme-glass:border-0 theme-glass:bg-[var(--sc-cyan)] theme-glass:text-[var(--sc-bg-deep)] theme-glass:hover:bg-[var(--sc-cyan-mid)]",ghost:"theme-glass:bg-transparent theme-glass:text-[var(--sc-text-secondary)] theme-glass:hover:bg-[var(--sc-surface-interactive)]",outline:"theme-glass:bg-transparent theme-glass:border theme-glass:border-[var(--sc-border)] theme-glass:text-[var(--sc-text-secondary)]"},i={sm:"theme-glass:px-3 theme-glass:py-1.5 theme-glass:text-xs theme-glass:rounded-lg",md:"theme-glass:px-4 theme-glass:py-2 theme-glass:text-sm theme-glass:rounded-xl",lg:"theme-glass:px-6 theme-glass:py-3 theme-glass:text-sm theme-glass:rounded-xl"},n=(0,s.forwardRef)(({variant:e="coral",size:s="md",glow:n=!1,pulse:m=!1,className:d,children:o,...h},x)=>(0,t.jsxs)("button",{ref:x,className:(0,a.cn)("inline-flex items-center justify-center gap-2 rounded-md font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",m?"disabled:pointer-events-none":"disabled:pointer-events-none disabled:opacity-50",r[e],l[s],"theme-glass:font-semibold theme-glass:transition-all theme-glass:hover:-translate-y-0.5",c[e],i[s],n&&"coral"===e&&"theme-glass:glow-coral-subtle",n&&"cyan"===e&&"theme-glass:glow-cyan-subtle",m&&"theme-glass:glow-cyan-pulse",d),type:"button",...h,children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-2 theme-glass:hidden",children:[m&&(0,t.jsx)("span",{className:"cli-cursor","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"["}),(0,t.jsx)("span",{className:"leading-none",children:o}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"]"})]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline-flex items-center gap-2",children:o})]}));n.displayName="Button",e.s(["Button",0,n])},84982,e=>{"use strict";let t=(0,e.i(24929).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],84982)},19331,e=>{"use strict";let t=(0,e.i(24929).default)("clock-3",[["path",{d:"M12 6v6h4",key:"135r8i"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Clock3",()=>t],19331)},71259,e=>{"use strict";let t=(0,e.i(24929).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);e.s(["Eye",()=>t],71259)},77715,e=>{"use strict";let t=(0,e.i(24929).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["XCircle",()=>t],77715)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16467,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"severity-critical",high:"severity-high",medium:"severity-medium",low:"severity-low",safe:"severity-safe",info:"severity-info"};function s({children:e,className:s,hover:l=!1,hoverCyan:n=!1,strong:i=!1,severity:c,onClick:d,selected:o=!1,title:m,statusLine:x,bodyPadding:h=!0}){let u=d?e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),d())}:void 0;return(0,t.jsxs)("div",{className:(0,a.cn)("glass-card overflow-hidden",l&&"glass-card-hover cursor-pointer",n&&"glass-card-hover-cyan cursor-pointer",d&&!l&&!n&&"cursor-pointer",c&&r[c],o&&"border-[var(--term-electric)]",s),onClick:d,onKeyDown:u,role:d?"button":void 0,tabIndex:d?0:void 0,children:[void 0!==m&&(0,t.jsxs)("div",{className:"flex items-center gap-2 px-4 py-2 border-b border-[var(--term-border)] bg-[var(--term-surface-2)] theme-glass:hidden",children:[(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-red)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-yellow)]"}),(0,t.jsx)("span",{"aria-hidden":!0,className:"w-2.5 h-2.5 rounded-full bg-[var(--term-light-green)]"}),(0,t.jsx)("span",{className:"ml-2 text-xs select-none truncate text-[var(--term-text-muted)]",children:m})]}),(0,t.jsx)("div",{className:(0,a.cn)(h?"p-5":""),children:e}),void 0!==x&&(0,t.jsx)("div",{className:"px-4 py-2 text-xs border-t border-[var(--term-border)] bg-[var(--term-surface-2)] text-[var(--term-text-muted)] theme-glass:hidden",children:x})]})}e.s(["GlassCard",()=>s])},6847,e=>{"use strict";let t=(0,e.i(24929).default)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]);e.s(["Search",()=>t],6847)},84012,e=>{"use strict";let t=(0,e.i(24929).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],84012)},25903,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"BailoutToCSR",{enumerable:!0,get:function(){return s}});let r=e.r(40909);function s({reason:e,children:t}){if("u"<typeof window)throw Object.defineProperty(new r.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},6848,(e,t,a)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"encodeURIPath",{enumerable:!0,get:function(){return r}})},54220,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"PreloadChunks",{enumerable:!0,get:function(){return c}});let r=e.r(27493),s=e.r(9854),l=e.r(13595),n=e.r(6848),i=e.r(54218);function c({moduleIds:e}){if("u">typeof window)return null;let t=l.workAsyncStorage.getStore();if(void 0===t)return null;let a=[];if(t.reactLoadableManifest&&e){let r=t.reactLoadableManifest;for(let t of e){if(!r[t])continue;let e=r[t].files;a.push(...e)}}if(0===a.length)return null;let c=(0,i.getDeploymentIdQueryOrEmptyString)();return(0,r.jsx)(r.Fragment,{children:a.map(e=>{let a=`${t.assetPrefix}/_next/${(0,n.encodeURIPath)(e)}${c}`;return e.endsWith(".css")?(0,r.jsx)("link",{precedence:"dynamic",href:a,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,s.preload)(a,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},73735,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return d}});let r=e.r(27493),s=e.r(4),l=e.r(25903),n=e.r(54220);function i(e){return{default:e&&"default"in e?e.default:e}}let c={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},d=function(e){let t={...c,...e},a=(0,s.lazy)(()=>t.loader().then(i)),d=t.loading;function o(e){let i=d?(0,r.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,c=!t.ssr||!!t.loading,o=c?s.Suspense:s.Fragment,m=t.ssr?(0,r.jsxs)(r.Fragment,{children:["u"<typeof window?(0,r.jsx)(n.PreloadChunks,{moduleIds:t.modules}):null,(0,r.jsx)(a,{...e})]}):(0,r.jsx)(l.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(a,{...e})});return(0,r.jsx)(o,{...c?{fallback:i}:{},children:m})}return o.displayName="LoadableComponent",o}},74133,(e,t,a)=>{"use strict";Object.defineProperty(a,"__esModule",{value:!0}),Object.defineProperty(a,"default",{enumerable:!0,get:function(){return s}});let r=e.r(77637)._(e.r(73735));function s(e,t){let a={};"function"==typeof e&&(a.loader=e);let s={...a,...t};return(0,r.default)({...s,modules:s.loadableGenerated?.modules})}("function"==typeof a.default||"object"==typeof a.default&&null!==a.default)&&void 0===a.default.__esModule&&(Object.defineProperty(a.default,"__esModule",{value:!0}),Object.assign(a.default,a),t.exports=a.default)},75025,e=>{"use strict";let t=(0,e.i(24929).default)("file-text",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);e.s(["FileText",()=>t],75025)},46194,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text)]"},s={coral:{icon:"text-[var(--sc-coral)]",iconBg:"bg-[var(--sc-coral)]/10",trendUp:"text-[var(--sc-coral)]",trendDown:"text-[var(--sc-cyan)]"},cyan:{icon:"text-[var(--sc-cyan)]",iconBg:"bg-[var(--sc-cyan)]/10",trendUp:"text-[var(--sc-cyan)]",trendDown:"text-[var(--sc-coral)]"},amber:{icon:"text-[var(--sc-amber)]",iconBg:"bg-[var(--sc-amber)]/10",trendUp:"text-[var(--sc-amber)]",trendDown:"text-[var(--sc-text-muted)]"},muted:{icon:"text-[var(--sc-text-secondary)]",iconBg:"bg-[var(--sc-surface-interactive)]",trendUp:"text-[var(--sc-cyan)]",trendDown:"text-[var(--sc-coral)]"}};function l({label:e,value:l,icon:n,trend:i,accent:c="cyan",className:d}){let o=s[c];return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center justify-between gap-3 px-4 py-2 border-b border-[var(--term-border)] last:border-0",d),children:[(0,t.jsxs)("div",{className:"flex items-center gap-3 min-w-0",children:[(0,t.jsx)(n,{size:14,className:"text-[var(--term-text-muted)] shrink-0","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-xs uppercase tracking-wider text-[var(--term-text-muted)] truncate",children:e})]}),(0,t.jsxs)("div",{className:"flex items-baseline gap-2 shrink-0",children:[(0,t.jsx)("span",{className:(0,a.cn)("text-base tabular-nums",r[c]),children:l}),i&&(0,t.jsxs)("span",{className:(0,a.cn)("text-xs tabular-nums",i.value>=0?"text-[var(--term-neon-fg)]":"text-[var(--term-danger)]"),children:[i.value>=0?"+":"",i.value,"%"]})]})]}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block glass-card p-5",d),children:(0,t.jsxs)("div",{className:"flex items-start justify-between",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsx)("p",{className:"text-xs font-medium uppercase tracking-wider text-[var(--sc-text-muted)]",children:e}),(0,t.jsx)("p",{className:"mt-2 text-2xl font-bold text-[var(--sc-text-primary)]",children:l}),i&&(0,t.jsxs)("p",{className:(0,a.cn)("mt-1 text-xs",i.value>=0?o.trendUp:o.trendDown),children:[i.value>=0?"+":"",i.value,"% ",i.label]})]}),(0,t.jsx)("div",{className:(0,a.cn)("rounded-xl p-2.5",o.iconBg),children:(0,t.jsx)(n,{size:20,className:o.icon})})]})})]})}e.s(["StatCard",()=>l])},15771,63312,50279,e=>{"use strict";let t=(0,e.i(24929).default)("circle-check",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);e.s(["CheckCircle2",()=>t],15771);var a=e.i(22534),r=e.i(45688),s=e.i(71921),l=e.i(1235),n=e.i(88969);let i=a.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function c(){let e=await (0,n.authFetch)(`${i}/api/license/status`);if(!e.ok)throw Error("Failed to fetch license status");return e.json()}async function d(e){let t=await (0,n.authFetch)(`${i}/api/license/activate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e})});if(!t.ok)throw Error((await t.json().catch(()=>({error:"Activation failed"}))).error||"Activation failed");return t.json()}async function o(){let e=await (0,n.authFetch)(`${i}/api/license/deactivate`,{method:"POST"});if(!e.ok)throw Error("Failed to deactivate license");return e.json()}function m(){return(0,r.useQuery)({queryKey:["license-status"],queryFn:c,refetchInterval:6e4,retry:2})}function x(){let e=(0,l.useQueryClient)();return(0,s.useMutation)({mutationFn:e=>d(e),onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}function h(){let e=(0,l.useQueryClient)();return(0,s.useMutation)({mutationFn:o,onSuccess:()=>{e.invalidateQueries({queryKey:["license-status"]})}})}e.s(["useActivateLicense",()=>x,"useDeactivateLicense",()=>h,"useLicenseStatus",()=>m],63312),e.s(["PLAN_PRICING",0,{pro:{label:"Pro",price:"£29/mo"},team:{label:"Team",price:"£99/mo"}},"TIER_BG",0,{free:"bg-[var(--sc-surface-interactive)]",pro:"bg-[var(--sc-cyan)]/10",team:"bg-[var(--sc-coral)]/10",enterprise:"bg-[var(--sc-amber)]/10"},"TIER_COLOURS",0,{free:"text-[var(--sc-text-muted)]",pro:"text-[var(--sc-cyan)]",team:"text-[var(--sc-coral)]",enterprise:"text-[var(--sc-amber)]"},"TIER_LABELS",0,{free:"Free",pro:"Pro",team:"Team",enterprise:"Enterprise"}],50279)},18509,e=>{"use strict";let t=(0,e.i(24929).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);e.s(["AlertTriangle",()=>t],18509)},95659,e=>{"use strict";var t=e.i(27493),a=e.i(76490);let r={critical:"text-[var(--term-danger)]",high:"text-[var(--term-danger)]",medium:"text-[var(--term-warn)]",low:"text-[var(--term-electric-fg)]",safe:"text-[var(--term-neon-fg)]",info:"text-[var(--term-text-muted)]",coral:"text-[var(--term-electric-fg)]",cyan:"text-[var(--term-neon-fg)]",amber:"text-[var(--term-warn)]",muted:"text-[var(--term-text-muted)]"},s={critical:"bg-[var(--term-danger)]",high:"bg-[var(--term-danger)]",medium:"bg-[var(--term-warn)]",low:"bg-[var(--term-electric)]",safe:"bg-[var(--term-neon)]",info:"bg-[var(--term-text-muted)]",coral:"bg-[var(--term-electric)]",cyan:"bg-[var(--term-neon)]",amber:"bg-[var(--term-warn)]",muted:"bg-[var(--term-text-muted)]"},l={critical:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",high:"theme-glass:bg-[var(--sc-coral-mid)]/15 theme-glass:border-[var(--sc-coral-mid)]/30",medium:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",low:"theme-glass:bg-[var(--sc-cyan-mid)]/15 theme-glass:border-[var(--sc-cyan-mid)]/30",safe:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",info:"theme-glass:bg-[var(--sc-text-muted)]/15 theme-glass:border-[var(--sc-text-muted)]/30",coral:"theme-glass:bg-[var(--sc-coral)]/15 theme-glass:border-[var(--sc-coral)]/30",cyan:"theme-glass:bg-[var(--sc-cyan)]/15 theme-glass:border-[var(--sc-cyan)]/30",amber:"theme-glass:bg-[var(--sc-amber)]/15 theme-glass:border-[var(--sc-amber)]/30",muted:"theme-glass:bg-[var(--sc-surface-interactive)] theme-glass:border-[var(--sc-border)]"};function n({children:e,variant:n="muted",className:i,dot:c=!1,pulse:d=!1}){return(0,t.jsxs)("span",{className:(0,a.cn)("inline-flex items-center gap-1.5 px-1 text-[11px] font-semibold uppercase tracking-wider whitespace-nowrap",r[n],"theme-glass:rounded-full theme-glass:border theme-glass:px-2.5 theme-glass:py-0.5",l[n],i),children:[c&&(0,t.jsx)("span",{className:(0,a.cn)("h-1.5 w-1.5 rounded-full",s[n],d&&"animate-pulse"),"aria-hidden":!0}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"["}),(0,t.jsx)("span",{children:e}),(0,t.jsx)("span",{"aria-hidden":!0,className:"text-[var(--term-text-muted)] theme-glass:hidden",children:"]"})]})}function i(e){let t=e.toUpperCase();return"CRITICAL"===t?"critical":"HIGH"===t?"high":"MEDIUM"===t?"medium":"LOW"===t?"low":"SAFE"===t?"safe":"info"}e.s(["Badge",()=>n,"riskVariant",()=>i])},66949,e=>{"use strict";let t=(0,e.i(24929).default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);e.s(["Lock",()=>t],66949)},40950,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(66949);function s({tabs:e,activeTab:s,onChange:l,className:n}){return(0,t.jsx)("div",{className:(0,a.cn)("flex items-center gap-4 overflow-x-auto border-b border-[var(--term-border)] px-1 scrollbar-hide","theme-glass:gap-1 theme-glass:rounded-xl theme-glass:border-0 theme-glass:bg-[var(--sc-bg-surface)] theme-glass:p-1",n),role:"tablist",children:e.map(e=>{let n=e.id===s;return(0,t.jsxs)("button",{type:"button",role:"tab","aria-selected":n?"true":"false",onClick:()=>l(e.id),className:(0,a.cn)("relative flex shrink-0 items-center gap-2 px-1 py-2 text-xs font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",n?"text-[var(--term-electric-fg)]":"text-[var(--term-text-muted)] hover:text-[var(--term-text)]","theme-glass:font-medium theme-glass:font-sans theme-glass:rounded-lg theme-glass:px-3 theme-glass:py-2 sm:theme-glass:px-4 sm:theme-glass:text-sm",n&&"theme-glass:bg-[var(--sc-bg-elevated)] theme-glass:text-[var(--sc-text-primary)]",!n&&"theme-glass:hover:text-[var(--sc-text-secondary)]"),children:[e.icon,(0,t.jsx)("span",{children:e.label}),e.locked&&(0,t.jsx)(r.Lock,{size:11,className:"text-[var(--term-warn)] theme-glass:text-[var(--sc-coral)]"}),void 0!==e.count&&e.count>0&&(0,t.jsxs)("span",{className:"text-[var(--term-text-muted)] theme-glass:ml-0.5 theme-glass:rounded-full theme-glass:bg-[var(--sc-coral)]/15 theme-glass:px-1.5 theme-glass:py-0.5 theme-glass:text-[10px] theme-glass:font-bold theme-glass:text-[var(--sc-coral)]",children:[(0,t.jsxs)("span",{className:"theme-glass:hidden",children:["(",e.count,")"]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline",children:e.count})]}),n&&(0,t.jsx)("span",{"aria-hidden":!0,className:"absolute -bottom-px left-0 right-0 h-px bg-[var(--term-electric)] theme-glass:hidden"})]},e.id)})})}function l({eyebrow:e,title:r,subtitle:l,actions:n,tabs:i,activeTab:c,onTabChange:d,className:o}){return(0,t.jsxs)("div",{className:(0,a.cn)("space-y-3 theme-glass:space-y-4",o),children:[(0,t.jsxs)("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between sm:gap-4 theme-glass:gap-3",children:[(0,t.jsxs)("div",{className:"min-w-0",children:[(0,t.jsxs)("div",{className:"theme-glass:hidden",children:[e&&(0,t.jsxs)("p",{className:"text-[11px] uppercase tracking-wider text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]",children:"›"})," ",e]}),(0,t.jsxs)("h1",{className:"mt-1 flex items-baseline flex-wrap gap-2 text-base font-mono text-[var(--term-text)] sm:text-lg",children:[(0,t.jsx)("span",{className:"text-[var(--term-electric-fg)]","aria-hidden":!0,children:"$"}),(0,t.jsx)("span",{children:"shieldcortex"}),(0,t.jsx)("span",{className:"text-[var(--term-text-dim)]",children:r.toLowerCase()}),(0,t.jsx)("span",{className:"cli-cursor text-[var(--term-electric-fg)]","aria-hidden":!0})]}),l&&(0,t.jsxs)("p",{className:"mt-1 text-xs text-[var(--term-text-muted)]",children:[(0,t.jsx)("span",{"aria-hidden":!0,children:"#"})," ",l]})]}),(0,t.jsxs)("div",{className:"hidden theme-glass:block",children:[e&&(0,t.jsx)("p",{className:"text-[10px] font-semibold uppercase tracking-[0.2em] text-[var(--sc-coral)] sm:text-[11px]",children:e}),(0,t.jsx)("h1",{className:"mt-1 text-xl font-bold text-[var(--sc-text-primary)] sm:text-2xl",children:r}),l&&(0,t.jsx)("p",{className:"mt-1 text-xs text-[var(--sc-text-secondary)] sm:text-sm",children:l})]})]}),n&&(0,t.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:n})]}),i&&c&&d&&(0,t.jsx)(s,{tabs:i,activeTab:c,onChange:d})]})}e.s(["PageHeader",()=>l],40950)},81523,e=>{"use strict";var t=e.i(27493),a=e.i(76490),r=e.i(4);let s={coral:"border border-[var(--term-electric)] text-[var(--term-electric-fg)] bg-transparent hover:bg-[var(--term-electric)]/10",cyan:"border border-[var(--term-neon)] text-[var(--term-neon-fg)] bg-transparent hover:bg-[var(--term-neon)]/10",ghost:"border border-transparent text-[var(--term-text-muted)] bg-transparent hover:text-[var(--term-text)] hover:border-[var(--term-border)]",outline:"border border-[var(--term-border)] text-[var(--term-text-dim)] bg-transparent hover:border-[var(--term-text-muted)] hover:text-[var(--term-text)]"},l={sm:"px-2 py-1 text-xs",md:"px-3 py-1.5 text-sm",lg:"px-4 py-2 text-sm"},n={coral:"theme-glass:border-0 theme-glass:bg-gradient-to-br theme-glass:from-[var(--sc-coral)] theme-glass:to-[var(--sc-coral-dark)] theme-glass:text-white theme-glass:hover:shadow-[0_8px_30px_var(--sc-glow-coral-mid)]",cyan:"theme-glass:border-0 theme-glass:bg-[var(--sc-cyan)] theme-glass:text-[var(--sc-bg-deep)] theme-glass:hover:bg-[var(--sc-cyan-mid)]",ghost:"theme-glass:bg-transparent theme-glass:text-[var(--sc-text-secondary)] theme-glass:hover:bg-[var(--sc-surface-interactive)]",outline:"theme-glass:bg-transparent theme-glass:border theme-glass:border-[var(--sc-border)] theme-glass:text-[var(--sc-text-secondary)]"},i={sm:"theme-glass:px-3 theme-glass:py-1.5 theme-glass:text-xs theme-glass:rounded-lg",md:"theme-glass:px-4 theme-glass:py-2 theme-glass:text-sm theme-glass:rounded-xl",lg:"theme-glass:px-6 theme-glass:py-3 theme-glass:text-sm theme-glass:rounded-xl"},c=(0,r.forwardRef)(({variant:e="coral",size:r="md",glow:c=!1,pulse:d=!1,className:o,children:m,...x},h)=>(0,t.jsxs)("button",{ref:h,className:(0,a.cn)("inline-flex items-center justify-center gap-2 rounded-md font-mono transition-colors","focus-visible:outline-1 focus-visible:outline-offset-2 focus-visible:outline-[var(--term-electric)]",d?"disabled:pointer-events-none":"disabled:pointer-events-none disabled:opacity-50",s[e],l[r],"theme-glass:font-semibold theme-glass:transition-all theme-glass:hover:-translate-y-0.5",n[e],i[r],c&&"coral"===e&&"theme-glass:glow-coral-subtle",c&&"cyan"===e&&"theme-glass:glow-cyan-subtle",d&&"theme-glass:glow-cyan-pulse",o),type:"button",...x,children:[(0,t.jsxs)("span",{className:"inline-flex items-center gap-2 theme-glass:hidden",children:[d&&(0,t.jsx)("span",{className:"cli-cursor","aria-hidden":!0}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"["}),(0,t.jsx)("span",{className:"leading-none",children:m}),(0,t.jsx)("span",{className:"text-[var(--term-text-muted)]","aria-hidden":!0,children:"]"})]}),(0,t.jsx)("span",{className:"hidden theme-glass:inline-flex items-center gap-2",children:m})]}));c.displayName="Button",e.s(["Button",0,c])},45256,76624,e=>{"use strict";let t=(0,e.i(24929).default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);e.s(["ExternalLink",()=>t],45256);var a=e.i(27493),r=e.i(95659),s=e.i(81523);function l({explanation:e,actions:t}){let l=t?.filter(Boolean)??[];return(0,a.jsxs)("div",{className:"rounded-lg border border-[var(--sc-border)] bg-[var(--sc-bg-deep)]/70 p-3",children:[(0,a.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,a.jsx)(r.Badge,{variant:e.synthetic?"amber":"cyan",children:e.synthetic?"Fallback":"Local AI"}),(0,a.jsxs)(r.Badge,{variant:"muted",children:[Math.round(100*e.confidence),"% confidence"]})]}),(0,a.jsx)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:e.summary}),(0,a.jsx)("p",{className:"mt-1 text-sm leading-6 text-[var(--sc-text-secondary)]",children:e.whyItMatters}),e.riskSignals.length>0&&(0,a.jsx)("div",{className:"mt-3 flex flex-wrap gap-1.5",children:e.riskSignals.map(e=>(0,a.jsx)("span",{className:"rounded bg-[var(--sc-bg-elevated)] px-2 py-1 text-[11px] text-[var(--sc-text-secondary)]",children:e},e))}),e.evidence.length>0&&(0,a.jsx)("div",{className:"mt-3 space-y-2",children:e.evidence.map((e,t)=>(0,a.jsxs)("div",{className:"rounded border border-[var(--sc-border)] bg-[var(--sc-bg-surface)] px-2 py-1.5",children:[(0,a.jsx)("div",{className:"text-[10px] uppercase tracking-[0.14em] text-[var(--sc-text-muted)]",children:e.reason}),(0,a.jsxs)("div",{className:"mt-1 break-words text-xs text-[var(--sc-text-primary)]",children:['"',e.snippet,'"']})]},`${e.snippet}-${t}`))}),e.nextSteps.length>0&&(0,a.jsxs)("div",{className:"mt-3 border-t border-[var(--sc-border)] pt-3",children:[(0,a.jsx)("div",{className:"text-[10px] font-semibold uppercase tracking-[0.16em] text-[var(--sc-text-muted)]",children:"Next steps"}),(0,a.jsx)("div",{className:"mt-2 space-y-1",children:e.nextSteps.map(e=>(0,a.jsx)("div",{className:"text-xs leading-5 text-[var(--sc-text-secondary)]",children:e},e))})]}),l.length>0&&(0,a.jsx)("div",{className:"mt-3 flex flex-wrap gap-2 border-t border-[var(--sc-border)] pt-3",children:l.map(e=>(0,a.jsxs)(s.Button,{variant:e.variant??"outline",size:"sm",onClick:e.onClick,disabled:e.disabled||e.pending,children:[e.icon,e.pending?"Working":e.label]},e.key))})]})}e.s(["LocalAiExplanationPanel",()=>l],76624)},44250,e=>{"use strict";function t(e,t){let a=e.trim();if(!a)return"";let r=a.replace(/^file:\/+/,""),s=r.startsWith("/")?r:`/${r}`,l="number"==typeof t&&Number.isFinite(t)&&t>0?`:${t}`:"";return`vscode://file${s}${l}`}e.s(["buildEditorUrl",()=>t])},23457,e=>{"use strict";var t=e.i(22534),a=e.i(71921),r=e.i(88969);let s=t.default.env.NEXT_PUBLIC_API_URL||"http://localhost:3001";async function l(e){let t=await (0,r.gatedFetch)(`${s}/api/v1/local-ai/explain`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok)throw Error(await (0,r.readApiError)(t,"Failed to generate local explanation"));return t.json()}function n(){return(0,a.useMutation)({mutationFn:l})}e.s(["useLocalAiExplain",()=>n])},84982,e=>{"use strict";let t=(0,e.i(24929).default)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);e.s(["Loader2",()=>t],84982)},77744,e=>{"use strict";let t=(0,e.i(24929).default)("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]);e.s(["Trash2",()=>t],77744)},53615,e=>{"use strict";var t=e.i(27493),a=e.i(76490);function r({className:e}){return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:(0,a.cn)("theme-glass:hidden flex items-center overflow-hidden rounded-md bg-[var(--term-surface-2)] text-[var(--term-text-muted)] text-xs leading-none animate-pulse px-2",e),"aria-busy":"true","aria-live":"polite",children:(0,t.jsx)("span",{className:"select-none whitespace-nowrap tracking-tighter",children:"█▓▓▓▒▒▒░░░░ ▓▓▒▒░░ █▓▒░ ▓▓▒░░ █▓▓▒░░░ ▓▒░░ █▒▒░"})}),(0,t.jsx)("div",{className:(0,a.cn)("hidden theme-glass:block animate-pulse rounded-xl bg-[var(--sc-surface-interactive)]",e),"aria-busy":"true","aria-live":"polite"})]})}function s(){return(0,t.jsxs)("div",{className:"mx-auto max-w-7xl space-y-6 p-6",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(r,{className:"h-3 w-24"}),(0,t.jsx)(r,{className:"h-7 w-56"}),(0,t.jsx)(r,{className:"h-4 w-80"})]}),(0,t.jsx)(r,{className:"h-10 w-96"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 gap-4 lg:grid-cols-4",children:[(0,t.jsx)(r,{className:"h-24"}),(0,t.jsx)(r,{className:"h-24"}),(0,t.jsx)(r,{className:"h-24"}),(0,t.jsx)(r,{className:"h-24"})]}),(0,t.jsxs)("div",{className:"grid gap-6 lg:grid-cols-2",children:[(0,t.jsx)(r,{className:"h-64"}),(0,t.jsx)(r,{className:"h-64"})]})]})}e.s(["PageSkeleton",()=>s,"Skeleton",()=>r])},19711,e=>{"use strict";var t=e.i(27493),a=e.i(66949),r=e.i(45256),s=e.i(63312),l=e.i(50279),n=e.i(81523);function i({feature:e,children:i,label:c}){let{data:d}=(0,s.useLicenseStatus)();if(!d)return(0,t.jsx)(t.Fragment,{children:i});let o=d.features.find(t=>t.feature===e);if(!o||o.enabled)return(0,t.jsx)(t.Fragment,{children:i});let m=o.requiredTier;return(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"pointer-events-none select-none opacity-20 blur-[3px]",children:i}),(0,t.jsxs)("div",{className:"absolute inset-0 flex flex-col items-center justify-center rounded-2xl bg-[var(--sc-card-bg-strong)] backdrop-blur-sm",children:[(0,t.jsx)("div",{className:"rounded-xl bg-[var(--sc-coral)]/10 p-3",children:(0,t.jsx)(a.Lock,{size:24,className:"text-[var(--sc-coral)]"})}),(0,t.jsxs)("p",{className:"mt-3 text-sm font-semibold text-[var(--sc-text-primary)]",children:[l.TIER_LABELS[m]," Feature"]}),c&&(0,t.jsx)("p",{className:"mt-1 max-w-xs text-center text-xs text-[var(--sc-text-muted)]",children:c}),(0,t.jsx)("a",{href:"https://shieldcortex.ai/pricing",target:"_blank",rel:"noopener noreferrer",className:"mt-4",children:(0,t.jsxs)(n.Button,{variant:"coral",size:"sm",glow:!0,children:["Upgrade to ",l.TIER_LABELS[m],(0,t.jsx)(r.ExternalLink,{size:12})]})})]})]})}e.s(["ProFeatureGate",()=>i])},9070,e=>{e.v(t=>Promise.all(["static/chunks/61aaa0c660c32b96.js"].map(t=>e.l(t))).then(()=>t(13213)))}]);
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "source-map",
3
+ "description": "Generates and consumes source maps",
4
+ "version": "0.6.1",
5
+ "homepage": "https://github.com/mozilla/source-map",
6
+ "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
7
+ "contributors": [
8
+ "Tobias Koppers <tobias.koppers@googlemail.com>",
9
+ "Duncan Beevers <duncan@dweebd.com>",
10
+ "Stephen Crane <scrane@mozilla.com>",
11
+ "Ryan Seddon <seddon.ryan@gmail.com>",
12
+ "Miles Elam <miles.elam@deem.com>",
13
+ "Mihai Bazon <mihai.bazon@gmail.com>",
14
+ "Michael Ficarra <github.public.email@michael.ficarra.me>",
15
+ "Todd Wolfson <todd@twolfson.com>",
16
+ "Alexander Solovyov <alexander@solovyov.net>",
17
+ "Felix Gnass <fgnass@gmail.com>",
18
+ "Conrad Irwin <conrad.irwin@gmail.com>",
19
+ "usrbincc <usrbincc@yahoo.com>",
20
+ "David Glasser <glasser@davidglasser.net>",
21
+ "Chase Douglas <chase@newrelic.com>",
22
+ "Evan Wallace <evan.exe@gmail.com>",
23
+ "Heather Arthur <fayearthur@gmail.com>",
24
+ "Hugh Kennedy <hughskennedy@gmail.com>",
25
+ "David Glasser <glasser@davidglasser.net>",
26
+ "Simon Lydell <simon.lydell@gmail.com>",
27
+ "Jmeas Smith <jellyes2@gmail.com>",
28
+ "Michael Z Goddard <mzgoddard@gmail.com>",
29
+ "azu <azu@users.noreply.github.com>",
30
+ "John Gozde <john@gozde.ca>",
31
+ "Adam Kirkton <akirkton@truefitinnovation.com>",
32
+ "Chris Montgomery <christopher.montgomery@dowjones.com>",
33
+ "J. Ryan Stinnett <jryans@gmail.com>",
34
+ "Jack Herrington <jherrington@walmartlabs.com>",
35
+ "Chris Truter <jeffpalentine@gmail.com>",
36
+ "Daniel Espeset <daniel@danielespeset.com>",
37
+ "Jamie Wong <jamie.lf.wong@gmail.com>",
38
+ "Eddy Bruël <ejpbruel@mozilla.com>",
39
+ "Hawken Rives <hawkrives@gmail.com>",
40
+ "Gilad Peleg <giladp007@gmail.com>",
41
+ "djchie <djchie.dev@gmail.com>",
42
+ "Gary Ye <garysye@gmail.com>",
43
+ "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
44
+ ],
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "http://github.com/mozilla/source-map.git"
48
+ },
49
+ "main": "./source-map.js",
50
+ "files": [
51
+ "source-map.js",
52
+ "source-map.d.ts",
53
+ "lib/",
54
+ "dist/source-map.debug.js",
55
+ "dist/source-map.js",
56
+ "dist/source-map.min.js",
57
+ "dist/source-map.min.js.map"
58
+ ],
59
+ "engines": {
60
+ "node": ">=0.10.0"
61
+ },
62
+ "license": "BSD-3-Clause",
63
+ "scripts": {
64
+ "test": "npm run build && node test/run-tests.js",
65
+ "build": "webpack --color",
66
+ "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
67
+ },
68
+ "devDependencies": {
69
+ "doctoc": "^0.15.0",
70
+ "webpack": "^1.12.0"
71
+ },
72
+ "typings": "source-map"
73
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "source-map-support",
3
+ "description": "Fixes stack traces for files with source maps",
4
+ "version": "0.5.13",
5
+ "main": "./source-map-support.js",
6
+ "scripts": {
7
+ "build": "node build.js",
8
+ "serve-tests": "http-server -p 1336",
9
+ "prepublish": "npm run build",
10
+ "test": "mocha"
11
+ },
12
+ "dependencies": {
13
+ "buffer-from": "^1.0.0",
14
+ "source-map": "^0.6.0"
15
+ },
16
+ "devDependencies": {
17
+ "browserify": "^4.2.3",
18
+ "coffeescript": "^1.12.7",
19
+ "http-server": "^0.11.1",
20
+ "mocha": "^3.5.3",
21
+ "webpack": "^1.15.0"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/evanw/node-source-map-support"
26
+ },
27
+ "bugs": {
28
+ "url": "https://github.com/evanw/node-source-map-support/issues"
29
+ },
30
+ "license": "MIT"
31
+ }
@@ -7,15 +7,12 @@
7
7
  "dev": "next dev -p 3030",
8
8
  "build": "next build && node scripts/copy-static.mjs",
9
9
  "start": "next start -p 3030",
10
- "lint": "eslint"
10
+ "lint": "eslint",
11
+ "test": "jest"
11
12
  },
12
13
  "dependencies": {
13
14
  "@radix-ui/react-slot": "^1.2.4",
14
- "@react-three/drei": "^10.7.7",
15
- "@react-three/fiber": "^9.5.0",
16
- "@react-three/postprocessing": "^3.0.4",
17
15
  "@tanstack/react-query": "^5.90.19",
18
- "@types/three": "^0.182.0",
19
16
  "class-variance-authority": "^0.7.1",
20
17
  "clsx": "^2.1.1",
21
18
  "framer-motion": "^12.29.0",
@@ -28,16 +25,21 @@
28
25
  "recharts": "^3.7.0",
29
26
  "sonner": "^2.0.7",
30
27
  "tailwind-merge": "^3.4.0",
31
- "three": "^0.182.0",
32
28
  "zustand": "^5.0.10"
33
29
  },
34
30
  "devDependencies": {
35
31
  "@tailwindcss/postcss": "^4",
32
+ "@testing-library/dom": "^10.4.1",
33
+ "@testing-library/jest-dom": "^6.9.1",
34
+ "@testing-library/react": "^16.3.2",
35
+ "@types/jest": "^30.0.0",
36
36
  "@types/node": "^20",
37
37
  "@types/react": "^19",
38
38
  "@types/react-dom": "^19",
39
39
  "eslint": "^9",
40
40
  "eslint-config-next": "16.1.4",
41
+ "jest": "^30.4.2",
42
+ "jest-environment-jsdom": "^30.4.1",
41
43
  "tailwindcss": "^4",
42
44
  "tw-animate-css": "^1.4.0",
43
45
  "typescript": "^5"
@@ -58,7 +58,11 @@ export function registerRecallRoutes(app, requireNotLocked) {
58
58
  return false;
59
59
  if (memory.status === 'archived' || memory.status === 'suppressed')
60
60
  return false;
61
- return memory.salience >= 0.65 || memory.pinned;
61
+ // Phase 1b: use EFFECTIVE (decayed) salience so this "near-miss" explainer
62
+ // matches real recall ranking — a stale-saturated row (raw 1.0) is no
63
+ // longer shown as a high-salience near-miss. decayedScore COALESCEs to
64
+ // raw salience in rowToMemory, so never-scored rows are unaffected.
65
+ return memory.decayedScore >= 0.65 || memory.pinned;
62
66
  }).slice(0, 5).map((memory) => ({
63
67
  id: memory.id,
64
68
  title: memory.title,
@@ -4,6 +4,7 @@
4
4
  import { isDatabaseInitialized } from '../database/init.js';
5
5
  import { getLifetimeStats } from '../defence/audit/queries.js';
6
6
  import { getAuditStats } from '../defence/audit/queries.js';
7
+ import { getSalienceDistribution, getHookYield } from '../memory/metrics.js';
7
8
  import { getLicense } from '../license/store.js';
8
9
  import { getTrialStatus } from '../license/trial.js';
9
10
  import { existsSync } from 'fs';
@@ -62,6 +63,35 @@ export async function runStatsCommand() {
62
63
  console.log(row('Scans', last7d.totalOperations));
63
64
  console.log(row('Blocked', last7d.blockedCount));
64
65
  console.log(row('Quarantined', last7d.quarantinedCount));
66
+ // Phase 0 (measure-first): the salience-wall instrument. A high wall % means
67
+ // raw salience has saturated and stopped discriminating among survivors.
68
+ try {
69
+ const sal = getSalienceDistribution();
70
+ if (sal.total > 0) {
71
+ console.log(section('Memory Quality'));
72
+ console.log(row('Long-term memories', sal.wall.ltmTotal));
73
+ console.log(row('At salience wall (≥0.95)', `${sal.wall.ltmAtOrAbove095} (${sal.wall.ltmPct}%)`));
74
+ console.log(row('Fragments in wall', `${sal.fragments.atOrAbove095} (${sal.fragments.pctOfWall}%)`));
75
+ for (const w of sal.warnings)
76
+ console.log(` ${DIM}⚠ ${w}${RESET}`);
77
+ }
78
+ }
79
+ catch { /* metrics are best-effort; never break the report */ }
80
+ // Phase 0: hook yield — fires vs extracted per hook. Surfaces the capture
81
+ // imbalance (e.g. pre-compact fires rarely vs stop firing every turn) and
82
+ // the recall-injection count ("is the store actually read into prompts?").
83
+ try {
84
+ const yld = getHookYield();
85
+ if (yld.totalFires > 0) {
86
+ console.log(section('Hook Activity (all-time)'));
87
+ for (const h of yld.hooks.slice(0, 6)) {
88
+ console.log(row(h.hook, `${n(h.fires)} fires · ${n(h.extracted)} extracted`));
89
+ }
90
+ const recall = yld.hooks.find((h) => h.hook === 'prompt-recall');
91
+ console.log(row('Recall injections', recall ? recall.extracted : 0));
92
+ }
93
+ }
94
+ catch { /* best-effort */ }
65
95
  const threats = last7d.threatBreakdown;
66
96
  const threatEntries = Object.entries(threats).sort((a, b) => b[1] - a[1]).slice(0, 5);
67
97
  if (threatEntries.length > 0) {
@@ -20,6 +20,7 @@ export declare function calculateDecayedScore(memory: Memory, config?: MemoryCon
20
20
  /**
21
21
  * Calculate reinforcement boost when memory is accessed
22
22
  */
23
+ export declare const AUTO_EXTRACT_SALIENCE_CAP = 0.6;
23
24
  export declare function calculateReinforcementBoost(memory: Memory, config?: MemoryConfig): number;
24
25
  /**
25
26
  * Determine if a memory should be promoted from short-term to long-term
@@ -44,13 +44,21 @@ export function calculateDecayedScore(memory, config = DEFAULT_CONFIG) {
44
44
  /**
45
45
  * Calculate reinforcement boost when memory is accessed
46
46
  */
47
+ // Auto-extracted captures must never reinforce past the extraction cap — the
48
+ // salience ratchet (reinforcement-on-access) is exactly what drove the 0.6-capped
49
+ // auto memories up to the 1.0 wall (Phase 1a, 2026-06-14). Mirrors the canonical
50
+ // AUTO_EXTRACT_SALIENCE_CAP in scripts/lib/extract-memorable-segments.mjs:24 (a
51
+ // build-script .mjs outside the compiled src/ surface, so the value is mirrored).
52
+ export const AUTO_EXTRACT_SALIENCE_CAP = 0.6;
47
53
  export function calculateReinforcementBoost(memory, config = DEFAULT_CONFIG) {
48
54
  // Diminishing returns on reinforcement
49
55
  const currentBoost = Math.min(0.5, (config.reinforcementFactor - 1) * Math.pow(0.9, memory.accessCount));
50
56
  // New score after reinforcement
51
57
  let newScore = memory.salience + currentBoost;
52
- // Cap at 1.0
53
- return Math.min(1.0, newScore);
58
+ // Ceiling: 0.6 for auto-extracted captures (forward-only ratchet cap; lazily
59
+ // corrects a saturated legacy auto row on its next access), 1.0 otherwise.
60
+ const ceiling = memory.captureMethod === 'auto' ? AUTO_EXTRACT_SALIENCE_CAP : 1.0;
61
+ return Math.min(ceiling, newScore);
54
62
  }
55
63
  /**
56
64
  * Determine if a memory should be promoted from short-term to long-term
@@ -21,7 +21,7 @@
21
21
  */
22
22
  import { getDatabase } from '../database/init.js';
23
23
  import { DEFAULT_CONFIG, } from './types.js';
24
- import { calculateReinforcementBoost, calculateDecayedScore, } from './decay.js';
24
+ import { calculateReinforcementBoost, calculateDecayedScore, AUTO_EXTRACT_SALIENCE_CAP, } from './decay.js';
25
25
  import { activateMemory as spreadActivation } from './activation.js';
26
26
  import { jaccardSimilarity } from './similarity.js';
27
27
  import { emitMemoryAccessed, emitMemoryUpdated, persistEvent, } from '../api/events.js';
@@ -108,12 +108,15 @@ export function accessMemory(id, config = DEFAULT_CONFIG, source) {
108
108
  */
109
109
  export function reinforceFromSearch(memoryId) {
110
110
  const db = getDatabase();
111
- const memory = db.prepare('SELECT salience, access_count FROM memories WHERE id = ?').get(memoryId);
111
+ const memory = db.prepare('SELECT salience, access_count, capture_method FROM memories WHERE id = ?').get(memoryId);
112
112
  if (!memory)
113
113
  return;
114
114
  // Small salience boost per search appearance (diminishing returns)
115
115
  const boost = Math.max(0.005, 0.02 / (1 + memory.access_count * 0.1));
116
- const newSalience = Math.min(1.0, memory.salience + boost);
116
+ // Forward-only ratchet cap (Phase 1a): auto-extracted captures never reinforce
117
+ // past the 0.6 extraction cap; deliberate captures keep the 1.0 ceiling.
118
+ const ceiling = memory.capture_method === 'auto' ? AUTO_EXTRACT_SALIENCE_CAP : 1.0;
119
+ const newSalience = Math.min(ceiling, memory.salience + boost);
117
120
  db.prepare(`
118
121
  UPDATE memories
119
122
  SET last_accessed = CURRENT_TIMESTAMP,
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Memory-quality metrics (Phase 0, measure-first).
3
+ *
4
+ * Read-only instruments that make memory-quality problems QUERYABLE before any
5
+ * model change — so a fix can be validated against the same number, not vibes.
6
+ * Nothing here mutates or deletes; every function is a pure read of the store.
7
+ *
8
+ * The headline instrument is `getSalienceDistribution`: it quantifies the
9
+ * "salience wall" (raw salience saturates at 1.0 for long-lived memories, so it
10
+ * stops discriminating) and the fragment pollution within that wall — the exact
11
+ * shape the edith field report exposed (43/43 long-term at ≥0.99, 81% of them
12
+ * mid-sentence fragments). Re-run it after a change to prove the wall spread and
13
+ * the fragments fell.
14
+ */
15
+ import { getDatabase } from '../database/init.js';
16
+ type DB = ReturnType<typeof getDatabase>;
17
+ export interface SalienceBand {
18
+ /** Human label, e.g. "0.95–1.00". */
19
+ band: string;
20
+ count: number;
21
+ long_term: number;
22
+ short_term: number;
23
+ episodic: number;
24
+ }
25
+ export interface SalienceDistribution {
26
+ total: number;
27
+ bands: SalienceBand[];
28
+ /** The salience wall: how saturated long-term memory is. */
29
+ wall: {
30
+ ltmAtOrAbove095: number;
31
+ ltmTotal: number;
32
+ ltmPct: number;
33
+ };
34
+ /** Fragment pollution within the high-salience (≥0.95) cohort. */
35
+ fragments: {
36
+ atOrAbove095: number;
37
+ pctOfWall: number;
38
+ };
39
+ /** Human-readable WARN lines when a threshold is breached. */
40
+ warnings: string[];
41
+ }
42
+ export declare function looksLikeFragmentContent(content: unknown): boolean;
43
+ /**
44
+ * Compute the salience distribution + wall + fragment metrics for the store.
45
+ *
46
+ * @param db Optional better-sqlite3 handle (defaults to the live DB). Passing a
47
+ * handle keeps it unit-testable without touching the real store.
48
+ * @param project Optional project filter (NULL-project rows always included).
49
+ */
50
+ export declare function getSalienceDistribution(db?: DB, project?: string): SalienceDistribution;
51
+ export interface HookYield {
52
+ hooks: Array<{
53
+ hook: string;
54
+ fires: number;
55
+ extracted: number;
56
+ avgPerFire: number;
57
+ }>;
58
+ totalFires: number;
59
+ totalExtracted: number;
60
+ }
61
+ /**
62
+ * Aggregate hook_invocations into a fires-vs-extracted yield per hook — the
63
+ * instrument behind EDITH's "pre-compact fired once vs 270 stop-fires" finding.
64
+ * Once the recall hook records an invocation (memories_extracted = injected
65
+ * count), the `prompt-recall` row becomes the cumulative "is the store actually
66
+ * being read into prompts?" signal. Pure read; tolerates a missing table.
67
+ *
68
+ * @param sinceIso Optional ISO-8601 lower bound on `invoked_at` (lexicographic,
69
+ * safe because telemetry writes ISO-8601 UTC). Omit for all-time.
70
+ */
71
+ export declare function getHookYield(db?: DB, sinceIso?: string): HookYield;
72
+ export {};