shieldcortex 4.15.0 → 4.17.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.
- package/README.md +4 -0
- package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
- package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +2 -2
- package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +3 -3
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk/admin.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/admin.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk/cloud.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/cloud.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory/capture.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/capture.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory/graph.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/graph.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory/recall.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/recall.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory/review.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/review.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory/timeline.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/timeline.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk/overview.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/overview.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection/audit.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/audit.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection/intercepts.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/intercepts.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection/iron-dome.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/iron-dome.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection/policies.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/policies.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection/quarantine.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection/quarantine.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk/protection.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/protection.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk/settings.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain/xray.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain/xray.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.html +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk/supply-chain.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/supply-chain.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk/xray.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_tree.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dist/api/routes/sessions.d.ts +19 -0
- package/dist/api/routes/sessions.js +153 -0
- package/dist/api/visualization-server.js +2 -0
- package/dist/cli/import-jsonl.d.ts +12 -0
- package/dist/cli/import-jsonl.js +88 -0
- package/dist/cli/migrate-legacy.d.ts +18 -0
- package/dist/cli/migrate-legacy.js +96 -0
- package/dist/database/init.js +65 -0
- package/dist/database/schema.sql +32 -0
- package/dist/database/seed-firewall-rules.d.ts +21 -0
- package/dist/database/seed-firewall-rules.js +105 -0
- package/dist/defence/custom-rules/store.d.ts +4 -1
- package/dist/defence/custom-rules/store.js +7 -3
- package/dist/defence/firewall/instruction-detector.js +15 -0
- package/dist/defence/pipeline.js +19 -13
- package/dist/defence/types.d.ts +1 -1
- package/dist/index.js +8 -0
- package/dist/sessions/capture.d.ts +45 -0
- package/dist/sessions/capture.js +59 -0
- package/dist/sessions/import-jsonl.d.ts +85 -0
- package/dist/sessions/import-jsonl.js +193 -0
- package/dist/sessions/timeline.d.ts +28 -0
- package/dist/sessions/timeline.js +52 -0
- package/hooks/openclaw/cortex-memory/HOOK.md +37 -0
- package/package.json +1 -1
- package/plugins/openclaw/dist/openclaw.plugin.json +1 -1
- package/scripts/lib/extract-memorable-segments.mjs +555 -0
- package/scripts/lib/save-memory.mjs +198 -13
- package/scripts/lib/session-capture.mjs +102 -0
- package/scripts/pre-compact-hook.mjs +38 -375
- package/scripts/prompt-recall-hook.mjs +30 -4
- package/scripts/session-end-hook.mjs +35 -307
- package/scripts/stop-hook.mjs +28 -159
- /package/dashboard/.next/standalone/dashboard/.next/static/{10a_MRwbHFUuDdfr86RUu → 9C0MR5ahRDqnfBA64wKCY}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{10a_MRwbHFUuDdfr86RUu → 9C0MR5ahRDqnfBA64wKCY}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{10a_MRwbHFUuDdfr86RUu → 9C0MR5ahRDqnfBA64wKCY}/_ssgManifest.js +0 -0
|
@@ -1,27 +1,84 @@
|
|
|
1
1
|
import { randomUUID } from 'crypto';
|
|
2
|
+
import { dirname, resolve } from 'path';
|
|
3
|
+
import { fileURLToPath, pathToFileURL } from 'url';
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
|
-
* Insert an auto-extracted memory into the SC database
|
|
6
|
+
* Insert an auto-extracted memory into the SC database, routed through the
|
|
7
|
+
* full defence pipeline.
|
|
5
8
|
*
|
|
6
|
-
* Single source of truth for hook-side memory writes
|
|
7
|
-
* and
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* Single source of truth for hook-side memory writes (session-end,
|
|
10
|
+
* pre-compact, and stop hooks all converge here). Every byte that lands in
|
|
11
|
+
* `memories` must have passed `runDefencePipeline()` first — that guarantees:
|
|
12
|
+
* - a defence_audit row exists for every capture (good or bad)
|
|
13
|
+
* - injection-shaped content lands in `quarantine`, not in `memories`
|
|
14
|
+
* - a hard BLOCK is dropped with an audit trail (no silent loss)
|
|
10
15
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
16
|
+
* If the pipeline cannot be loaded (no dist build, e.g. dev workspace before
|
|
17
|
+
* `npm run build`) the call is fail-closed: nothing is written to memories
|
|
18
|
+
* and a stderr warning is printed. A fallback defence_audit row is logged.
|
|
13
19
|
*
|
|
14
|
-
*
|
|
20
|
+
* Async: the pipeline lives in dist/ as ESM and is loaded via dynamic import.
|
|
21
|
+
*
|
|
22
|
+
* @param {import('better-sqlite3').Database} db
|
|
15
23
|
* @param {{ title: string, content: string, category: string, salience: number, tags: string[] }} memory
|
|
16
|
-
* @param {string|null} [project]
|
|
24
|
+
* @param {string|null} [project]
|
|
25
|
+
* @param {{ source?: string }} [opts] — `source` identifies the calling hook
|
|
26
|
+
* ('session-end-hook' | 'pre-compact-hook' | 'stop-hook' | 'hook').
|
|
17
27
|
*/
|
|
18
|
-
export function saveAutoExtractedMemory(db, memory, project) {
|
|
28
|
+
export async function saveAutoExtractedMemory(db, memory, project, opts = {}) {
|
|
29
|
+
const sourceIdentifier = opts.source ?? 'hook';
|
|
30
|
+
const source = { type: 'hook', identifier: sourceIdentifier };
|
|
31
|
+
|
|
32
|
+
const defence = await loadDefenceModules(db);
|
|
33
|
+
|
|
34
|
+
if (!defence) {
|
|
35
|
+
writeFallbackAudit(db, memory, project, sourceIdentifier, 'defence_pipeline_unavailable: dist build missing');
|
|
36
|
+
process.stderr.write(`[shieldcortex save-memory] dropped (defence pipeline unavailable): ${memory.title}\n`);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
let result;
|
|
41
|
+
try {
|
|
42
|
+
result = defence.runDefencePipeline(memory.content, memory.title, source, undefined, project ?? undefined);
|
|
43
|
+
} catch (err) {
|
|
44
|
+
const msg = err && typeof err === 'object' && 'message' in err ? String(err.message) : String(err);
|
|
45
|
+
writeFallbackAudit(db, memory, project, sourceIdentifier, `pipeline_error: ${msg}`);
|
|
46
|
+
process.stderr.write(`[shieldcortex save-memory] dropped (pipeline error): ${memory.title} — ${msg}\n`);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const decision = result.firewall.result;
|
|
51
|
+
|
|
52
|
+
if (decision === 'ALLOW') {
|
|
53
|
+
insertMemoryRow(db, memory, project);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (decision === 'QUARANTINE') {
|
|
58
|
+
// Route quarantine writes through the singleton's connection so the
|
|
59
|
+
// audit_id FK reference resolves against the same connection that
|
|
60
|
+
// wrote the audit row a few lines up in pipeline.ts.
|
|
61
|
+
const quarantineDb = (typeof _getDatabase === 'function' && defence.isDatabaseInitialized && defence.isDatabaseInitialized())
|
|
62
|
+
? _getDatabase()
|
|
63
|
+
: db;
|
|
64
|
+
insertQuarantineRow(quarantineDb, memory, project, source, result);
|
|
65
|
+
process.stderr.write(`[shieldcortex save-memory] quarantined: ${memory.title} — ${result.firewall.reason}\n`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// BLOCK — defence_audit row already written by the pipeline. Drop with
|
|
70
|
+
// a single stderr line for operator visibility.
|
|
71
|
+
process.stderr.write(`[shieldcortex save-memory] blocked: ${memory.title} — ${result.firewall.reason}\n`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ==================== Internal: writes ====================
|
|
75
|
+
|
|
76
|
+
function insertMemoryRow(db, memory, project) {
|
|
19
77
|
const timestamp = new Date().toISOString();
|
|
20
|
-
|
|
78
|
+
db.prepare(`
|
|
21
79
|
INSERT INTO memories (uuid, title, content, type, category, salience, tags, project, created_at, last_accessed)
|
|
22
80
|
VALUES (?, ?, ?, 'short_term', ?, ?, ?, ?, ?, ?)
|
|
23
|
-
`)
|
|
24
|
-
stmt.run(
|
|
81
|
+
`).run(
|
|
25
82
|
randomUUID(),
|
|
26
83
|
memory.title,
|
|
27
84
|
memory.content,
|
|
@@ -33,3 +90,131 @@ export function saveAutoExtractedMemory(db, memory, project) {
|
|
|
33
90
|
timestamp,
|
|
34
91
|
);
|
|
35
92
|
}
|
|
93
|
+
|
|
94
|
+
function insertQuarantineRow(db, memory, project, source, result) {
|
|
95
|
+
// Mirrors the canonical SQL used by src/memory/store.ts:quarantineMemory
|
|
96
|
+
// so QUARANTINE decisions from any path produce schema-identical rows.
|
|
97
|
+
const firewallResult = result.firewall.result === 'ALLOW' ? 'BLOCK' : result.firewall.result;
|
|
98
|
+
db.prepare(`
|
|
99
|
+
INSERT INTO quarantine (
|
|
100
|
+
original_title, original_content, project,
|
|
101
|
+
source_type, source_identifier, reason,
|
|
102
|
+
threat_indicators, anomaly_score, firewall_result, audit_id, status
|
|
103
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending')
|
|
104
|
+
`).run(
|
|
105
|
+
memory.title,
|
|
106
|
+
memory.content,
|
|
107
|
+
project || null,
|
|
108
|
+
source.type,
|
|
109
|
+
source.identifier,
|
|
110
|
+
result.firewall.reason,
|
|
111
|
+
JSON.stringify(result.firewall.threatIndicators),
|
|
112
|
+
result.firewall.anomalyScore,
|
|
113
|
+
firewallResult,
|
|
114
|
+
result.auditId ?? null,
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function writeFallbackAudit(db, memory, project, sourceIdentifier, reason) {
|
|
119
|
+
// Synthetic audit row for cases where the pipeline could not run.
|
|
120
|
+
try {
|
|
121
|
+
db.prepare(`
|
|
122
|
+
INSERT INTO defence_audit (
|
|
123
|
+
memory_id, project, timestamp,
|
|
124
|
+
source_type, source_identifier,
|
|
125
|
+
trust_score, sensitivity_level, firewall_result,
|
|
126
|
+
anomaly_score, threat_indicators, blocked_patterns,
|
|
127
|
+
reason, fragmentation_score, pipeline_duration_ms
|
|
128
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, 'BLOCK', ?, ?, ?, ?, ?, ?)
|
|
129
|
+
`).run(
|
|
130
|
+
null,
|
|
131
|
+
project || null,
|
|
132
|
+
new Date().toISOString(),
|
|
133
|
+
'hook',
|
|
134
|
+
sourceIdentifier,
|
|
135
|
+
0,
|
|
136
|
+
'INTERNAL',
|
|
137
|
+
0,
|
|
138
|
+
'[]',
|
|
139
|
+
'[]',
|
|
140
|
+
reason,
|
|
141
|
+
null,
|
|
142
|
+
0,
|
|
143
|
+
);
|
|
144
|
+
} catch {
|
|
145
|
+
// Schema may be older than the audit columns. Better silent here than
|
|
146
|
+
// raising into the hook — the stderr line above carries the signal.
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// ==================== Internal: lazy dist loader ====================
|
|
151
|
+
|
|
152
|
+
let _defenceCache = null;
|
|
153
|
+
let _defenceCacheKey = null;
|
|
154
|
+
let _getDatabase = null;
|
|
155
|
+
|
|
156
|
+
async function loadDefenceModules(db) {
|
|
157
|
+
// Resolve the dist build relative to this file's location. save-memory.mjs
|
|
158
|
+
// lives at scripts/lib/, so dist is two directories up.
|
|
159
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
160
|
+
const distRoot = resolve(here, '..', '..', 'dist');
|
|
161
|
+
|
|
162
|
+
if (_defenceCache && _defenceCacheKey === distRoot) {
|
|
163
|
+
ensureDatabaseSingleton(db, _defenceCache);
|
|
164
|
+
return _defenceCache;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
const pipelineUrl = pathToFileURL(resolve(distRoot, 'defence', 'pipeline.js')).href;
|
|
169
|
+
const initUrl = pathToFileURL(resolve(distRoot, 'database', 'init.js')).href;
|
|
170
|
+
|
|
171
|
+
const [pipelineMod, initMod] = await Promise.all([
|
|
172
|
+
import(pipelineUrl),
|
|
173
|
+
import(initUrl),
|
|
174
|
+
]);
|
|
175
|
+
|
|
176
|
+
if (typeof pipelineMod.runDefencePipeline !== 'function') return null;
|
|
177
|
+
if (typeof initMod.initDatabase !== 'function') return null;
|
|
178
|
+
|
|
179
|
+
_defenceCache = {
|
|
180
|
+
runDefencePipeline: pipelineMod.runDefencePipeline,
|
|
181
|
+
initDatabase: initMod.initDatabase,
|
|
182
|
+
isDatabaseInitialized: initMod.isDatabaseInitialized,
|
|
183
|
+
getDatabase: initMod.getDatabase,
|
|
184
|
+
closeDatabase: initMod.closeDatabase,
|
|
185
|
+
};
|
|
186
|
+
_defenceCacheKey = distRoot;
|
|
187
|
+
_getDatabase = initMod.getDatabase;
|
|
188
|
+
|
|
189
|
+
ensureDatabaseSingleton(db, _defenceCache);
|
|
190
|
+
return _defenceCache;
|
|
191
|
+
} catch {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function ensureDatabaseSingleton(db, defence) {
|
|
197
|
+
// The pipeline's audit + custom-rules layers use getDatabase() (singleton).
|
|
198
|
+
// Initialise it against the same path the hook is writing to so audit
|
|
199
|
+
// rows are visible across connections (and to the dashboard).
|
|
200
|
+
const targetPath = db && db.name ? db.name : null;
|
|
201
|
+
if (!targetPath || targetPath === ':memory:') return;
|
|
202
|
+
|
|
203
|
+
if (defence.isDatabaseInitialized && defence.isDatabaseInitialized()) {
|
|
204
|
+
try {
|
|
205
|
+
const current = defence.getDatabase();
|
|
206
|
+
if (current && current.name === targetPath) return; // already pointed here
|
|
207
|
+
// Path mismatch (typical in tests using per-case temp DBs) — re-init.
|
|
208
|
+
if (defence.closeDatabase) defence.closeDatabase();
|
|
209
|
+
} catch {
|
|
210
|
+
// If anything throws, fall through and try to (re-)init.
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
try {
|
|
215
|
+
defence.initDatabase(targetPath);
|
|
216
|
+
} catch {
|
|
217
|
+
// Recoverable: pipeline.ts skips audit + custom-rules gracefully when
|
|
218
|
+
// the singleton isn't initialised.
|
|
219
|
+
}
|
|
220
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook-side session_events writer.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the API of `src/sessions/capture.ts` but for `.mjs` hook
|
|
5
|
+
* scripts that import `better-sqlite3` directly and can't reach into
|
|
6
|
+
* the TS module without a build step. The two implementations write
|
|
7
|
+
* the same rows and share the same dedupe constraints.
|
|
8
|
+
*
|
|
9
|
+
* Hooks (prompt-recall, stop, session-end, pre-compact) call
|
|
10
|
+
* `recordSessionEvent(db, event)` with an already-open writable DB
|
|
11
|
+
* connection. Failures are caught + logged at the call site so a
|
|
12
|
+
* defective event capture never blocks the hook's primary job.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const VALID_KINDS = new Set([
|
|
16
|
+
'prompt',
|
|
17
|
+
'response',
|
|
18
|
+
'tool_call',
|
|
19
|
+
'tool_result',
|
|
20
|
+
'tool_error',
|
|
21
|
+
'hook_fire',
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
const INSERT_SQL = `
|
|
25
|
+
INSERT INTO session_events
|
|
26
|
+
(session_id, project, ts, kind, actor, payload, duration_ms, audit_id)
|
|
27
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
28
|
+
`;
|
|
29
|
+
|
|
30
|
+
/** Stringify payload — objects → JSON, strings pass through verbatim. */
|
|
31
|
+
function serialisePayload(payload) {
|
|
32
|
+
if (typeof payload === 'string') return payload;
|
|
33
|
+
return JSON.stringify(payload ?? null);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Insert one event row. Returns the new row id, or `null` on validation
|
|
38
|
+
* failure (the caller decides whether that's an error or expected —
|
|
39
|
+
* e.g. session_id missing from hook data is "expected, skip" not "throw").
|
|
40
|
+
*
|
|
41
|
+
* Does NOT throw on SQL errors — the caller's hook flow must keep going.
|
|
42
|
+
* Captures the error message and returns null so the hook can log it.
|
|
43
|
+
*/
|
|
44
|
+
export function recordSessionEvent(db, event) {
|
|
45
|
+
if (!db || typeof db.prepare !== 'function') return null;
|
|
46
|
+
if (!event || typeof event !== 'object') return null;
|
|
47
|
+
if (typeof event.session_id !== 'string' || event.session_id.length === 0) return null;
|
|
48
|
+
if (typeof event.ts !== 'string' || event.ts.length === 0) return null;
|
|
49
|
+
if (!VALID_KINDS.has(event.kind)) return null;
|
|
50
|
+
if (event.payload === undefined) return null;
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
const stmt = db.prepare(INSERT_SQL);
|
|
54
|
+
const result = stmt.run(
|
|
55
|
+
event.session_id,
|
|
56
|
+
event.project ?? null,
|
|
57
|
+
event.ts,
|
|
58
|
+
event.kind,
|
|
59
|
+
event.actor ?? null,
|
|
60
|
+
serialisePayload(event.payload),
|
|
61
|
+
event.duration_ms ?? null,
|
|
62
|
+
event.audit_id ?? null,
|
|
63
|
+
);
|
|
64
|
+
return Number(result.lastInsertRowid);
|
|
65
|
+
} catch (err) {
|
|
66
|
+
return { error: err.message };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Batched insert under a single transaction. Returns an array of
|
|
72
|
+
* inserted row ids; rolls back the lot if any row violates a
|
|
73
|
+
* constraint. Empty input returns [] without opening a transaction.
|
|
74
|
+
*/
|
|
75
|
+
export function recordSessionEvents(db, events) {
|
|
76
|
+
if (!Array.isArray(events) || events.length === 0) return [];
|
|
77
|
+
const stmt = db.prepare(INSERT_SQL);
|
|
78
|
+
const ids = [];
|
|
79
|
+
const tx = db.transaction((rows) => {
|
|
80
|
+
for (const event of rows) {
|
|
81
|
+
if (typeof event?.session_id !== 'string') {
|
|
82
|
+
throw new Error('session_id required');
|
|
83
|
+
}
|
|
84
|
+
if (!VALID_KINDS.has(event.kind)) {
|
|
85
|
+
throw new Error(`invalid kind: ${event.kind}`);
|
|
86
|
+
}
|
|
87
|
+
const result = stmt.run(
|
|
88
|
+
event.session_id,
|
|
89
|
+
event.project ?? null,
|
|
90
|
+
event.ts,
|
|
91
|
+
event.kind,
|
|
92
|
+
event.actor ?? null,
|
|
93
|
+
serialisePayload(event.payload),
|
|
94
|
+
event.duration_ms ?? null,
|
|
95
|
+
event.audit_id ?? null,
|
|
96
|
+
);
|
|
97
|
+
ids.push(Number(result.lastInsertRowid));
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
tx(events);
|
|
101
|
+
return ids;
|
|
102
|
+
}
|