shieldcortex 4.25.1 → 4.25.2

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 (229) 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/server/app/_global-error.html +2 -2
  4. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
  5. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  6. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  7. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  8. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  9. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  10. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +2 -2
  11. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +1 -1
  12. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  13. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  14. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  15. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  16. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  17. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  18. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.html +1 -1
  19. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.rsc +1 -1
  20. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin/__PAGE__.segment.rsc +1 -1
  21. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin.segment.rsc +1 -1
  22. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  23. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +1 -1
  24. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_head.segment.rsc +1 -1
  25. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_index.segment.rsc +1 -1
  26. package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
  27. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.html +1 -1
  28. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.rsc +1 -1
  29. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud/__PAGE__.segment.rsc +1 -1
  30. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud.segment.rsc +1 -1
  31. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  32. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +1 -1
  33. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_head.segment.rsc +1 -1
  34. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_index.segment.rsc +1 -1
  35. package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_tree.segment.rsc +1 -1
  36. package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
  37. package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +1 -1
  38. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  39. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +1 -1
  40. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  41. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +1 -1
  42. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  43. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.html +1 -1
  44. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.rsc +1 -1
  45. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture/__PAGE__.segment.rsc +1 -1
  46. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture.segment.rsc +1 -1
  47. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  48. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  49. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +1 -1
  50. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_head.segment.rsc +1 -1
  51. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_index.segment.rsc +1 -1
  52. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_tree.segment.rsc +1 -1
  53. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.html +1 -1
  54. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.rsc +1 -1
  55. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph/__PAGE__.segment.rsc +1 -1
  56. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph.segment.rsc +1 -1
  57. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  58. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  59. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +1 -1
  60. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_head.segment.rsc +1 -1
  61. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_index.segment.rsc +1 -1
  62. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_tree.segment.rsc +1 -1
  63. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.html +1 -1
  64. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.rsc +1 -1
  65. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall/__PAGE__.segment.rsc +1 -1
  66. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall.segment.rsc +1 -1
  67. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  68. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  69. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +1 -1
  70. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_head.segment.rsc +1 -1
  71. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_index.segment.rsc +1 -1
  72. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_tree.segment.rsc +1 -1
  73. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.html +2 -2
  74. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.rsc +1 -1
  75. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay/__PAGE__.segment.rsc +1 -1
  76. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay.segment.rsc +1 -1
  77. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  78. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  79. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_full.segment.rsc +1 -1
  80. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_head.segment.rsc +1 -1
  81. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_index.segment.rsc +1 -1
  82. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_tree.segment.rsc +1 -1
  83. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.html +1 -1
  84. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.rsc +1 -1
  85. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review/__PAGE__.segment.rsc +1 -1
  86. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review.segment.rsc +1 -1
  87. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  88. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  89. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +1 -1
  90. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_head.segment.rsc +1 -1
  91. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_index.segment.rsc +1 -1
  92. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_tree.segment.rsc +1 -1
  93. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.html +1 -1
  94. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.rsc +1 -1
  95. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline/__PAGE__.segment.rsc +1 -1
  96. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline.segment.rsc +1 -1
  97. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  98. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  99. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +1 -1
  100. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_head.segment.rsc +1 -1
  101. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_index.segment.rsc +1 -1
  102. package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_tree.segment.rsc +1 -1
  103. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.html +2 -2
  104. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +1 -1
  105. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory/__PAGE__.segment.rsc +1 -1
  106. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
  107. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  108. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +1 -1
  109. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_head.segment.rsc +1 -1
  110. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_index.segment.rsc +1 -1
  111. package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_tree.segment.rsc +1 -1
  112. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.html +2 -2
  113. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +1 -1
  114. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +1 -1
  115. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview.segment.rsc +1 -1
  116. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  117. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +1 -1
  118. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_head.segment.rsc +1 -1
  119. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_index.segment.rsc +1 -1
  120. package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_tree.segment.rsc +1 -1
  121. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.html +1 -1
  122. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.rsc +1 -1
  123. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit/__PAGE__.segment.rsc +1 -1
  124. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit.segment.rsc +1 -1
  125. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  126. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  127. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +1 -1
  128. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_head.segment.rsc +1 -1
  129. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_index.segment.rsc +1 -1
  130. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_tree.segment.rsc +1 -1
  131. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.html +1 -1
  132. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.rsc +1 -1
  133. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts/__PAGE__.segment.rsc +1 -1
  134. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts.segment.rsc +1 -1
  135. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  136. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  137. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +1 -1
  138. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_head.segment.rsc +1 -1
  139. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_index.segment.rsc +1 -1
  140. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_tree.segment.rsc +1 -1
  141. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.html +1 -1
  142. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.rsc +1 -1
  143. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome/__PAGE__.segment.rsc +1 -1
  144. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome.segment.rsc +1 -1
  145. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  146. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  147. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +1 -1
  148. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_head.segment.rsc +1 -1
  149. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_index.segment.rsc +1 -1
  150. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_tree.segment.rsc +1 -1
  151. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.html +1 -1
  152. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.rsc +1 -1
  153. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies/__PAGE__.segment.rsc +1 -1
  154. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies.segment.rsc +1 -1
  155. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  156. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  157. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +1 -1
  158. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_head.segment.rsc +1 -1
  159. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_index.segment.rsc +1 -1
  160. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_tree.segment.rsc +1 -1
  161. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.html +1 -1
  162. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.rsc +1 -1
  163. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine/__PAGE__.segment.rsc +1 -1
  164. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine.segment.rsc +1 -1
  165. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  166. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  167. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +1 -1
  168. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_head.segment.rsc +1 -1
  169. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_index.segment.rsc +1 -1
  170. package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_tree.segment.rsc +1 -1
  171. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.html +2 -2
  172. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +1 -1
  173. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection/__PAGE__.segment.rsc +1 -1
  174. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
  175. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  176. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +1 -1
  177. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_head.segment.rsc +1 -1
  178. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_index.segment.rsc +1 -1
  179. package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_tree.segment.rsc +1 -1
  180. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.html +2 -2
  181. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +1 -1
  182. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +1 -1
  183. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
  184. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  185. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +1 -1
  186. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_head.segment.rsc +1 -1
  187. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_index.segment.rsc +1 -1
  188. package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
  189. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.html +1 -1
  190. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.rsc +1 -1
  191. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray/__PAGE__.segment.rsc +1 -1
  192. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray.segment.rsc +1 -1
  193. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
  194. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  195. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +1 -1
  196. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_head.segment.rsc +1 -1
  197. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_index.segment.rsc +1 -1
  198. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_tree.segment.rsc +1 -1
  199. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.html +1 -1
  200. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.rsc +1 -1
  201. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain/__PAGE__.segment.rsc +1 -1
  202. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
  203. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  204. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +1 -1
  205. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_head.segment.rsc +1 -1
  206. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_index.segment.rsc +1 -1
  207. package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_tree.segment.rsc +1 -1
  208. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.html +2 -2
  209. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +1 -1
  210. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray/__PAGE__.segment.rsc +1 -1
  211. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray.segment.rsc +1 -1
  212. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
  213. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +1 -1
  214. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_head.segment.rsc +1 -1
  215. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_index.segment.rsc +1 -1
  216. package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_tree.segment.rsc +1 -1
  217. package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +2 -2
  218. package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
  219. package/dist/cli/doctor.d.ts +27 -0
  220. package/dist/cli/doctor.js +97 -0
  221. package/package.json +1 -2
  222. package/plugins/openclaw/dist/cloud-sync.js +0 -19
  223. package/plugins/openclaw/dist/index.js +0 -703
  224. package/plugins/openclaw/dist/intercept-ingest.js +0 -18
  225. package/plugins/openclaw/dist/interceptor.js +0 -346
  226. package/plugins/openclaw/dist/openclaw.plugin.json +0 -205
  227. /package/dashboard/.next/standalone/dashboard/.next/static/{EItbSW_ccG_F0ufC_s7dD → Cl3bBJxPrtXsvyaKu3Y4x}/_buildManifest.js +0 -0
  228. /package/dashboard/.next/standalone/dashboard/.next/static/{EItbSW_ccG_F0ufC_s7dD → Cl3bBJxPrtXsvyaKu3Y4x}/_clientMiddlewareManifest.json +0 -0
  229. /package/dashboard/.next/standalone/dashboard/.next/static/{EItbSW_ccG_F0ufC_s7dD → Cl3bBJxPrtXsvyaKu3Y4x}/_ssgManifest.js +0 -0
@@ -1,18 +0,0 @@
1
- export function syncInterceptEvent(event, config) {
2
- if (!config.cloudEnabled || !config.cloudApiKey)
3
- return;
4
- const url = `${config.cloudBaseUrl}/v1/audit/ingest`;
5
- fetch(url, {
6
- method: 'POST',
7
- headers: {
8
- 'Content-Type': 'application/json',
9
- Authorization: `Bearer ${config.cloudApiKey}`,
10
- },
11
- body: JSON.stringify({
12
- events: [{ ...event, source: 'openclaw-interceptor' }],
13
- }),
14
- signal: AbortSignal.timeout(5_000),
15
- }).catch(() => {
16
- // Fire-and-forget — never block on cloud sync failure
17
- });
18
- }
@@ -1,346 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { mkdirSync, appendFileSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { homedir } from 'node:os';
5
- const WATCHED_TOOLS = ['remember', 'mcp__memory__remember'];
6
- const CONTENT_FIELDS = {
7
- remember: ['content', 'title'],
8
- mcp__memory__remember: ['content', 'title'],
9
- };
10
- // Defaults relaxed in v4.11.0: critical/high no longer block the tool call with
11
- // a synchronous approval prompt. The defence pipeline still runs and
12
- // `failurePolicy` still denies on critical/high, so the block is preserved —
13
- // what changes is the user-facing approval gate. Opt back in with
14
- // `severityActions: { high: 'require_approval', critical: 'require_approval' }`.
15
- const DEFAULT_CONFIG = {
16
- enabled: true,
17
- severityActions: {
18
- low: 'log',
19
- medium: 'log',
20
- high: 'warn',
21
- critical: 'log',
22
- },
23
- failurePolicy: {
24
- low: 'allow',
25
- medium: 'allow',
26
- high: 'deny',
27
- critical: 'deny',
28
- },
29
- };
30
- export { WATCHED_TOOLS, CONTENT_FIELDS, DEFAULT_CONFIG };
31
- export function extractContent(toolName, args) {
32
- const fields = CONTENT_FIELDS[toolName];
33
- if (!fields)
34
- return { title: '', content: '' };
35
- const title = typeof args.title === 'string' ? args.title : '';
36
- const content = typeof args.content === 'string' ? args.content : '';
37
- return { title, content };
38
- }
39
- export function mapSeverity(firewall) {
40
- if (firewall.result === 'BLOCK')
41
- return 'critical';
42
- if (firewall.result === 'QUARANTINE')
43
- return 'high';
44
- if (firewall.result === 'ALLOW' && firewall.anomalyScore >= 0.3)
45
- return 'medium';
46
- return 'low';
47
- }
48
- // --- Deny Cache ---
49
- // Exact replica of normalizeMemoryText() from index.ts (lines 426-434).
50
- // Must produce identical output for SHA-256 hash consistency.
51
- function normaliseContent(text) {
52
- return String(text || '')
53
- .toLowerCase()
54
- .replace(/[`"'\\]/g, ' ')
55
- .replace(/https?:\/\/\S+/g, ' ')
56
- .replace(/[^a-z0-9\s]/g, ' ')
57
- .replace(/\s+/g, ' ')
58
- .trim();
59
- }
60
- function hashContent(text) {
61
- return createHash('sha256').update(normaliseContent(text)).digest('hex');
62
- }
63
- const TWO_HOURS_MS = 2 * 60 * 60 * 1000;
64
- export class DenyCache {
65
- cache = new Map();
66
- maxPerTool;
67
- ttlMs;
68
- constructor(maxPerTool = 200, ttlMs = TWO_HOURS_MS) {
69
- this.maxPerTool = maxPerTool;
70
- this.ttlMs = ttlMs;
71
- }
72
- isDenied(tool, content) {
73
- const entries = this.cache.get(tool);
74
- if (!entries)
75
- return false;
76
- const hash = hashContent(content);
77
- const now = Date.now();
78
- return entries.some(e => e.hash === hash && (now - e.ts) < this.ttlMs);
79
- }
80
- addDenial(tool, content) {
81
- const hash = hashContent(content);
82
- const now = Date.now();
83
- if (!this.cache.has(tool)) {
84
- this.cache.set(tool, []);
85
- }
86
- const entries = this.cache.get(tool);
87
- const live = entries.filter(e => (now - e.ts) < this.ttlMs);
88
- if (live.some(e => e.hash === hash))
89
- return;
90
- live.push({ hash, ts: now });
91
- while (live.length > this.maxPerTool) {
92
- live.shift();
93
- }
94
- this.cache.set(tool, live);
95
- }
96
- reset() {
97
- this.cache.clear();
98
- }
99
- }
100
- // --- Rate Limiter ---
101
- export class RateLimiter {
102
- timestamps = [];
103
- maxPerWindow;
104
- windowMs;
105
- constructor(maxPerWindow = 5, windowMs = 60_000) {
106
- this.maxPerWindow = maxPerWindow;
107
- this.windowMs = windowMs;
108
- }
109
- shouldAllow() {
110
- const now = Date.now();
111
- this.timestamps = this.timestamps.filter(t => now - t < this.windowMs);
112
- if (this.timestamps.length >= this.maxPerWindow)
113
- return false;
114
- this.timestamps.push(now);
115
- return true;
116
- }
117
- }
118
- export function formatApprovalPrompt(input) {
119
- const preview = input.content.length > 200
120
- ? input.content.slice(0, 200) + '...'
121
- : input.content;
122
- const threatList = input.threats.length > 0
123
- ? input.threats.join(', ')
124
- : 'none identified';
125
- return [
126
- '🛡️ ShieldCortex — Tool Call Intercepted',
127
- '',
128
- `Tool: ${input.tool}`,
129
- `Risk: ${input.severity} (${input.firewallResult})`,
130
- `Threats: ${threatList}`,
131
- `Content: "${preview}"`,
132
- '',
133
- '[Approve] [Deny]',
134
- ].join('\n');
135
- }
136
- // --- Audit Logging (local JSONL) ---
137
- const AUDIT_DIR = join(homedir(), '.shieldcortex', 'audit');
138
- function writeAuditEntry(entry) {
139
- try {
140
- mkdirSync(AUDIT_DIR, { recursive: true });
141
- const date = new Date().toISOString().slice(0, 10);
142
- const file = join(AUDIT_DIR, `realtime-${date}.jsonl`);
143
- appendFileSync(file, JSON.stringify(entry) + '\n');
144
- }
145
- catch {
146
- // Best-effort — never block on audit failure
147
- }
148
- }
149
- // --- X-Ray Inline Guard ---
150
- // Lightweight inline version of xrayMemoryContent for the plugin build boundary.
151
- // Detects AI directive injection patterns in memory content.
152
- const XRAY_AI_DIRECTIVE_PATTERNS = [
153
- /ignore\s+(all\s+)?(previous|prior|above)\s+(instructions?|prompts?|context)/i,
154
- /disregard\s+(all\s+)?(previous|prior|above)\s+(instructions?|rules?)/i,
155
- /override\s+(previous|prior|all)\s+(instructions?|rules?|constraints?)/i,
156
- /you\s+are\s+now\s+(?:in\s+)?(?:developer|god|admin|root|unrestricted)\s+mode/i,
157
- /enter\s+(?:developer|god|admin|DAN|jailbreak)\s+mode/i,
158
- /(?:system|hidden|secret)\s*(?:prompt|instruction|directive)\s*:/i,
159
- /\[SYSTEM\]\s*:/i,
160
- /\[INST\]/i,
161
- /<\|(?:system|user|assistant|im_start|im_end)\|>/i,
162
- /(?:decode|execute|follow)\s+(?:the\s+)?hidden\s+(?:instructions?|payload|message)/i,
163
- /(?:hidden|embedded|encoded)\s+(?:instructions?|directive|command)\s+(?:in|within|inside)/i,
164
- ];
165
- const XRAY_FILENAME_PATTERNS = [
166
- /ignore_previous/i, /decode_hidden/i, /execute_instructions/i,
167
- /override_previous/i, /developer_mode/i, /system_prompt/i,
168
- /jailbreak/i, /\[SYSTEM\]/i, /\[INST\]/i,
169
- ];
170
- function xrayMemoryGuard(content, title) {
171
- const findings = [];
172
- const text = content.length > 50000 ? content.slice(0, 50000) : content;
173
- for (const pattern of XRAY_AI_DIRECTIVE_PATTERNS) {
174
- if (pattern.test(text)) {
175
- findings.push({ category: 'ai-directive', title: 'AI directive injection detected', severity: 'critical' });
176
- break;
177
- }
178
- }
179
- if (title) {
180
- for (const pattern of XRAY_FILENAME_PATTERNS) {
181
- if (pattern.test(title)) {
182
- findings.push({ category: 'ai-directive', title: 'AI directive in title', severity: 'critical' });
183
- break;
184
- }
185
- }
186
- }
187
- // Score: 100 - 60 per critical finding (single critical = blocked)
188
- const score = Math.max(0, 100 - findings.length * 60);
189
- const riskLevel = score >= 80 ? 'SAFE' : score >= 60 ? 'LOW' : score >= 40 ? 'MEDIUM' : score >= 20 ? 'HIGH' : 'CRITICAL';
190
- return { allowed: score >= 60, findings, riskLevel };
191
- }
192
- export function createInterceptor(config, pipeline, options) {
193
- const denyCache = new DenyCache();
194
- const rateLimiter = new RateLimiter(options?.maxPromptsPerMinute ?? 5);
195
- const log = config.logger ?? { info: console.log, warn: console.warn };
196
- const onAuditEntry = options?.onAuditEntry;
197
- function emitAudit(entry) {
198
- writeAuditEntry(entry);
199
- onAuditEntry?.(entry);
200
- }
201
- async function handleToolCall(context) {
202
- if (!WATCHED_TOOLS.includes(context.toolName))
203
- return;
204
- const { title, content } = extractContent(context.toolName, context.arguments);
205
- const fullContent = [title, content].filter(Boolean).join(' ');
206
- if (!fullContent.trim())
207
- return;
208
- // X-Ray content scan — fast, synchronous, no I/O
209
- const xrayResult = xrayMemoryGuard(content, title || undefined);
210
- if (!xrayResult.allowed) {
211
- const xrayEntry = {
212
- type: 'intercept', tool: context.toolName, severity: 'critical',
213
- firewallResult: 'BLOCK', threats: xrayResult.findings.map(f => f.category),
214
- anomalyScore: 1, action: 'auto_deny', outcome: 'auto_denied',
215
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
216
- };
217
- emitAudit(xrayEntry);
218
- throw new Error(`ShieldCortex: tool call blocked by X-Ray memory guard (risk: ${xrayResult.riskLevel}, findings: ${xrayResult.findings.length})`);
219
- }
220
- let severity;
221
- let firewallResult;
222
- let threats;
223
- let anomalyScore;
224
- try {
225
- const result = pipeline(content, title, { type: 'agent', identifier: 'openclaw' });
226
- severity = mapSeverity(result.firewall);
227
- firewallResult = result.firewall.result;
228
- threats = result.firewall.threatIndicators;
229
- anomalyScore = result.firewall.anomalyScore;
230
- }
231
- catch (err) {
232
- log.warn(`[shieldcortex] ⚠️ Defence pipeline error: ${err instanceof Error ? err.message : err}`);
233
- const failAction = config.failurePolicy.high;
234
- const entry = {
235
- type: 'intercept', tool: context.toolName, severity: 'high',
236
- firewallResult: 'ERROR', threats: ['pipeline_error'], anomalyScore: 0,
237
- action: 'require_approval', outcome: failAction === 'deny' ? 'failure_denied' : 'failure_allowed',
238
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
239
- };
240
- emitAudit(entry);
241
- if (failAction === 'deny') {
242
- throw new Error('ShieldCortex: tool call blocked — pipeline error, failure policy: deny');
243
- }
244
- return;
245
- }
246
- if (denyCache.isDenied(context.toolName, fullContent)) {
247
- const entry = {
248
- type: 'intercept', tool: context.toolName, severity, firewallResult,
249
- threats, anomalyScore, action: 'auto_deny', outcome: 'auto_denied',
250
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
251
- };
252
- emitAudit(entry);
253
- throw new Error('ShieldCortex: tool call auto-denied (previously denied content)');
254
- }
255
- const action = config.severityActions[severity];
256
- if (action === 'log') {
257
- const entry = {
258
- type: 'intercept', tool: context.toolName, severity, firewallResult,
259
- threats, anomalyScore, action: 'log', outcome: 'logged',
260
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
261
- };
262
- emitAudit(entry);
263
- return;
264
- }
265
- if (action === 'warn') {
266
- log.warn(`[shieldcortex] ⚠️ ${severity} risk in ${context.toolName}: ${threats.join(', ') || 'anomaly detected'}`);
267
- const entry = {
268
- type: 'intercept', tool: context.toolName, severity, firewallResult,
269
- threats, anomalyScore, action: 'warn', outcome: 'warned',
270
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
271
- };
272
- emitAudit(entry);
273
- return;
274
- }
275
- // action === 'require_approval'
276
- if (typeof context.requireApproval !== 'function') {
277
- // requireApproval unavailable (pre-v2026.3.28) — apply failurePolicy, not blanket allow
278
- const failAction = config.failurePolicy[severity];
279
- log.warn(`[shieldcortex] ⚠️ requireApproval not available for ${severity} risk in ${context.toolName} — failure policy: ${failAction}`);
280
- const entry = {
281
- type: 'intercept', tool: context.toolName, severity, firewallResult,
282
- threats, anomalyScore, action: 'require_approval',
283
- outcome: failAction === 'deny' ? 'failure_denied' : 'failure_allowed',
284
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
285
- };
286
- emitAudit(entry);
287
- if (failAction === 'deny') {
288
- throw new Error(`ShieldCortex: tool call blocked — requireApproval unavailable, failure policy: deny`);
289
- }
290
- return;
291
- }
292
- if (!rateLimiter.shouldAllow()) {
293
- log.warn('[shieldcortex] ⚠️ Too many approval prompts — auto-denying');
294
- const entry = {
295
- type: 'intercept', tool: context.toolName, severity, firewallResult,
296
- threats, anomalyScore, action: 'rate_limit', outcome: 'auto_denied',
297
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
298
- };
299
- emitAudit(entry);
300
- denyCache.addDenial(context.toolName, fullContent);
301
- throw new Error('ShieldCortex: tool call auto-denied (rate limit exceeded)');
302
- }
303
- const message = formatApprovalPrompt({ tool: context.toolName, severity, firewallResult, threats, content: fullContent });
304
- let approved;
305
- try {
306
- approved = await context.requireApproval(message);
307
- }
308
- catch (err) {
309
- const failAction = config.failurePolicy[severity];
310
- log.warn(`[shieldcortex] ⚠️ requireApproval error: ${err instanceof Error ? err.message : err} — failure policy: ${failAction}`);
311
- const entry = {
312
- type: 'intercept', tool: context.toolName, severity, firewallResult,
313
- threats, anomalyScore, action: 'require_approval',
314
- outcome: failAction === 'deny' ? 'failure_denied' : 'failure_allowed',
315
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
316
- };
317
- emitAudit(entry);
318
- if (failAction === 'deny') {
319
- throw new Error(`ShieldCortex: tool call blocked — requireApproval error, failure policy: deny`);
320
- }
321
- return;
322
- }
323
- if (approved) {
324
- const entry = {
325
- type: 'intercept', tool: context.toolName, severity, firewallResult,
326
- threats, anomalyScore, action: 'require_approval', outcome: 'approved',
327
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
328
- };
329
- emitAudit(entry);
330
- return;
331
- }
332
- // Denied
333
- denyCache.addDenial(context.toolName, fullContent);
334
- const entry = {
335
- type: 'intercept', tool: context.toolName, severity, firewallResult,
336
- threats, anomalyScore, action: 'require_approval', outcome: 'denied',
337
- preview: fullContent.slice(0, 200), ts: new Date().toISOString(),
338
- };
339
- emitAudit(entry);
340
- throw new Error('ShieldCortex: tool call denied by user');
341
- }
342
- function resetSession() {
343
- denyCache.reset();
344
- }
345
- return { handleToolCall, resetSession };
346
- }
@@ -1,205 +0,0 @@
1
- {
2
- "id": "shieldcortex-realtime",
3
- "version": "4.25.1",
4
- "name": "ShieldCortex Real-time Scanner",
5
- "description": "Real-time defence scanning on LLM input, memory extraction on LLM output, and active tool call interception with approval gating.",
6
- "kind": null,
7
- "engines": {
8
- "openclaw": ">=2026.3.22",
9
- "recommended": ">=2026.4.23"
10
- },
11
- "enabledByDefault": false,
12
- "activation": {
13
- "onStartup": false,
14
- "hooks": [
15
- "llm_input",
16
- "llm_output",
17
- "before_tool_call",
18
- "session_end"
19
- ],
20
- "commands": [
21
- "shieldcortex-status"
22
- ]
23
- },
24
- "contracts": {},
25
- "commandAliases": {
26
- "shieldcortex-status": "shieldcortex-status"
27
- },
28
- "uiHints": {
29
- "binaryPath": {
30
- "label": "ShieldCortex Binary Path",
31
- "help": "Optional absolute path to the shieldcortex CLI when it is not on PATH.",
32
- "placeholder": "/usr/local/bin/shieldcortex",
33
- "advanced": true
34
- },
35
- "cloudApiKey": {
36
- "label": "Cloud API Key",
37
- "help": "Optional ShieldCortex Cloud API key used for realtime threat forwarding.",
38
- "placeholder": "sc_...",
39
- "sensitive": true
40
- },
41
- "cloudBaseUrl": {
42
- "label": "Cloud Base URL",
43
- "help": "Override the ShieldCortex Cloud API base URL if you use a self-hosted or staging endpoint.",
44
- "placeholder": "https://api.shieldcortex.ai",
45
- "advanced": true
46
- },
47
- "openclawAutoMemory": {
48
- "label": "Auto Memory Extraction",
49
- "help": "Extract high-signal decisions and learnings from LLM output into ShieldCortex memory."
50
- },
51
- "openclawAutoMemoryDedupe": {
52
- "label": "Dedupe Auto Memory",
53
- "help": "Skip near-duplicate memories before they are written to ShieldCortex.",
54
- "advanced": true
55
- },
56
- "openclawAutoMemoryNoveltyThreshold": {
57
- "label": "Novelty Threshold",
58
- "help": "Similarity threshold for duplicate suppression. Higher values keep more memories.",
59
- "advanced": true
60
- },
61
- "openclawAutoMemoryMaxRecent": {
62
- "label": "Recent Memory Cache Size",
63
- "help": "How many recent extracted memories to keep in the dedupe cache.",
64
- "advanced": true
65
- },
66
- "interceptor.enabled": {
67
- "label": "Enable Tool Call Interceptor",
68
- "description": "Scan memory-write tool calls and gate suspicious content behind user approval",
69
- "type": "boolean"
70
- },
71
- "interceptor.severityActions.high": {
72
- "label": "High Severity Action",
73
- "description": "Action for high-severity threats (log, warn, require_approval)",
74
- "type": "string"
75
- },
76
- "interceptor.severityActions.critical": {
77
- "label": "Critical Severity Action",
78
- "description": "Action for critical-severity threats (log, warn, require_approval)",
79
- "type": "string"
80
- }
81
- },
82
- "configSchema": {
83
- "type": "object",
84
- "additionalProperties": false,
85
- "properties": {
86
- "enabled": {
87
- "type": "boolean"
88
- },
89
- "binaryPath": {
90
- "type": "string"
91
- },
92
- "cloudApiKey": {
93
- "type": "string"
94
- },
95
- "cloudBaseUrl": {
96
- "type": "string"
97
- },
98
- "openclawAutoMemory": {
99
- "type": "boolean"
100
- },
101
- "openclawAutoMemoryDedupe": {
102
- "type": "boolean"
103
- },
104
- "openclawAutoMemoryNoveltyThreshold": {
105
- "type": "number",
106
- "minimum": 0.6,
107
- "maximum": 0.99
108
- },
109
- "openclawAutoMemoryMaxRecent": {
110
- "type": "integer",
111
- "minimum": 50,
112
- "maximum": 1000
113
- },
114
- "interceptor": {
115
- "type": "object",
116
- "properties": {
117
- "enabled": {
118
- "type": "boolean",
119
- "default": true
120
- },
121
- "severityActions": {
122
- "type": "object",
123
- "additionalProperties": false,
124
- "properties": {
125
- "low": {
126
- "type": "string",
127
- "enum": [
128
- "log",
129
- "warn",
130
- "require_approval"
131
- ],
132
- "default": "log"
133
- },
134
- "medium": {
135
- "type": "string",
136
- "enum": [
137
- "log",
138
- "warn",
139
- "require_approval"
140
- ],
141
- "default": "log"
142
- },
143
- "high": {
144
- "type": "string",
145
- "enum": [
146
- "log",
147
- "warn",
148
- "require_approval"
149
- ],
150
- "default": "warn"
151
- },
152
- "critical": {
153
- "type": "string",
154
- "enum": [
155
- "log",
156
- "warn",
157
- "require_approval"
158
- ],
159
- "default": "log"
160
- }
161
- }
162
- },
163
- "failurePolicy": {
164
- "type": "object",
165
- "additionalProperties": false,
166
- "properties": {
167
- "low": {
168
- "type": "string",
169
- "enum": [
170
- "allow",
171
- "deny"
172
- ],
173
- "default": "allow"
174
- },
175
- "medium": {
176
- "type": "string",
177
- "enum": [
178
- "allow",
179
- "deny"
180
- ],
181
- "default": "allow"
182
- },
183
- "high": {
184
- "type": "string",
185
- "enum": [
186
- "allow",
187
- "deny"
188
- ],
189
- "default": "deny"
190
- },
191
- "critical": {
192
- "type": "string",
193
- "enum": [
194
- "allow",
195
- "deny"
196
- ],
197
- "default": "deny"
198
- }
199
- }
200
- }
201
- }
202
- }
203
- }
204
- }
205
- }