shieldcortex 4.31.2 → 4.32.1
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 +78 -2
- 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/replay.html +2 -2
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay/__PAGE__.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory/replay.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk/memory.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/!KGRhc2hib2FyZCk.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_full.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_head.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.segments/_index.segment.rsc +1 -1
- package/dashboard/.next/standalone/dashboard/.next/server/app/memory/replay.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/control.d.ts +2 -0
- package/dist/api/control.js +119 -2
- package/dist/api/routes/memories.js +19 -14
- package/dist/api/routes/system.js +2 -3
- package/dist/api/visualization-server.d.ts +13 -1
- package/dist/api/visualization-server.js +57 -1
- package/dist/audit/env-scanner.js +5 -2
- package/dist/audit/index.d.ts +4 -1
- package/dist/audit/index.js +2 -1
- package/dist/audit/mcp-config-scanner.d.ts +23 -0
- package/dist/audit/mcp-config-scanner.js +110 -0
- package/dist/audit/mcp-tools-scanner.d.ts +112 -0
- package/dist/audit/mcp-tools-scanner.js +299 -0
- package/dist/cli/audit.d.ts +1 -0
- package/dist/cli/audit.js +12 -1
- package/dist/cli/doctor.js +4 -1
- package/dist/cli/mcp.d.ts +13 -0
- package/dist/cli/mcp.js +0 -0
- package/dist/cli/remember.d.ts +75 -0
- package/dist/cli/remember.js +195 -0
- package/dist/cli/repair.d.ts +8 -0
- package/dist/cli/repair.js +34 -0
- package/dist/cli/update.js +34 -0
- package/dist/cloud/config.d.ts +23 -1
- package/dist/cloud/config.js +453 -193
- package/dist/cloud/quarantine-sync.d.ts +12 -2
- package/dist/cloud/quarantine-sync.js +28 -6
- package/dist/cloud/sync-queue.d.ts +21 -2
- package/dist/cloud/sync-queue.js +124 -29
- package/dist/database/better-sqlite3-guard.d.ts +21 -2
- package/dist/database/better-sqlite3-guard.js +29 -5
- package/dist/database/init.js +68 -16
- package/dist/database/inline-schema.js +35 -1
- package/dist/database/migrations.js +104 -8
- package/dist/database/schema.sql +39 -1
- package/dist/defence/audit/queries.d.ts +10 -2
- package/dist/defence/audit/queries.js +30 -4
- package/dist/defence/audit/retention.d.ts +50 -0
- package/dist/defence/audit/retention.js +161 -0
- package/dist/defence/credential-leak/entropy.d.ts +11 -0
- package/dist/defence/credential-leak/entropy.js +27 -0
- package/dist/defence/credential-leak/index.js +27 -1
- package/dist/defence/credential-leak/patterns.d.ts +9 -0
- package/dist/defence/credential-leak/patterns.js +21 -0
- package/dist/defence/custom-patterns/store.js +8 -1
- package/dist/defence/custom-rules/store.d.ts +18 -0
- package/dist/defence/custom-rules/store.js +63 -0
- package/dist/defence/firewall/confusables.d.ts +30 -0
- package/dist/defence/firewall/confusables.js +87 -0
- package/dist/defence/firewall/encoding-detector.js +23 -9
- package/dist/defence/firewall/index.d.ts +11 -1
- package/dist/defence/firewall/index.js +34 -1
- package/dist/defence/firewall/instruction-detector.js +18 -7
- package/dist/defence/firewall/markdown-image-detector.d.ts +34 -0
- package/dist/defence/firewall/markdown-image-detector.js +83 -0
- package/dist/defence/fragmentation/entity-extractor.js +17 -6
- package/dist/defence/index.d.ts +5 -0
- package/dist/defence/index.js +8 -0
- package/dist/defence/iron-dome/index.js +7 -1
- package/dist/defence/pipeline.js +62 -10
- package/dist/defence/scan-windows.d.ts +41 -0
- package/dist/defence/scan-windows.js +61 -0
- package/dist/defence/semantic/attack-corpus.d.ts +22 -0
- package/dist/defence/semantic/attack-corpus.js +75 -0
- package/dist/defence/semantic/index.d.ts +67 -0
- package/dist/defence/semantic/index.js +138 -0
- package/dist/defence/skill-scanner/deep-scan.js +35 -15
- package/dist/defence/skill-scanner/patterns.d.ts +1 -1
- package/dist/defence/skill-scanner/patterns.js +8 -7
- package/dist/defence/tool-response-scanner.d.ts +21 -5
- package/dist/defence/tool-response-scanner.js +111 -22
- package/dist/defence/types.d.ts +11 -1
- package/dist/index.d.ts +29 -0
- package/dist/index.js +112 -21
- package/dist/memory/consolidate.js +1 -1
- package/dist/memory/decay.js +3 -1
- package/dist/memory/embedding.d.ts +18 -2
- package/dist/memory/embedding.js +32 -11
- package/dist/memory/expiry.js +1 -1
- package/dist/memory/search-recall.js +107 -49
- package/dist/memory/search.d.ts +19 -3
- package/dist/memory/search.js +25 -10
- package/dist/memory/store.d.ts +13 -2
- package/dist/memory/store.js +115 -11
- package/dist/scan-only.d.ts +64 -0
- package/dist/scan-only.js +173 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.js +6 -4
- package/dist/setup/claude-md.js +39 -34
- package/dist/setup/codex.js +9 -2
- package/dist/setup/copilot.js +160 -47
- package/dist/setup/json-config.d.ts +99 -0
- package/dist/setup/json-config.js +167 -0
- package/dist/setup/migrate.js +1 -1
- package/dist/setup/native-binding.d.ts +75 -0
- package/dist/setup/native-binding.js +146 -0
- package/dist/setup/settings-hooks.js +8 -13
- package/dist/setup/uninstall.js +1 -21
- package/dist/tools/context.d.ts +8 -8
- package/dist/tools/forget.d.ts +9 -8
- package/dist/tools/forget.js +17 -4
- package/dist/tools/recall.d.ts +13 -13
- package/dist/tools/remember.d.ts +16 -16
- package/dist/tools/remember.js +19 -8
- package/dist/worker/brain-worker.d.ts +1 -0
- package/dist/worker/brain-worker.js +79 -16
- package/dist/worker/types.d.ts +8 -0
- package/dist/worker/types.js +8 -0
- package/dist/xray/dir-scanner.d.ts +18 -0
- package/dist/xray/dir-scanner.js +23 -1
- package/dist/xray/file-scanner.js +16 -1
- package/dist/xray/findings-store.js +9 -1
- package/dist/xray/index.d.ts +2 -0
- package/dist/xray/index.js +10 -1
- package/dist/xray/npm-inspector.d.ts +31 -0
- package/dist/xray/npm-inspector.js +135 -29
- package/dist/xray/patterns.d.ts +1 -1
- package/dist/xray/patterns.js +20 -23
- package/dist/xray/sarif.d.ts +78 -0
- package/dist/xray/sarif.js +166 -0
- package/dist/xray/watch.d.ts +1 -0
- package/dist/xray/watch.js +10 -1
- package/hooks/openclaw/cortex-memory/handler.ts +122 -18
- package/hooks/openclaw/cortex-memory/runtime.mjs +10 -4
- package/package.json +10 -3
- package/scripts/postinstall.mjs +8 -3
- package/dist/memory/embedding-cache.d.ts +0 -20
- package/dist/memory/embedding-cache.js +0 -91
- /package/dashboard/.next/standalone/dashboard/.next/static/{_j4TeMpss-w79QtNNWqZw → tjJ3X8xQ-2_WQTPGF3zCA}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{_j4TeMpss-w79QtNNWqZw → tjJ3X8xQ-2_WQTPGF3zCA}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{_j4TeMpss-w79QtNNWqZw → tjJ3X8xQ-2_WQTPGF3zCA}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Self-healing for the better-sqlite3 native binding.
|
|
3
|
+
*
|
|
4
|
+
* better-sqlite3 ships prebuilt binaries for common platform/ABI combos; when
|
|
5
|
+
* none matches (e.g. a newer Node than the prebuilds, or arm64 with no prebuilt)
|
|
6
|
+
* it must compile from source, which needs a C/C++ toolchain. If that hasn't
|
|
7
|
+
* happened the binding is missing and every DB operation fails with
|
|
8
|
+
* "Could not locate the bindings file".
|
|
9
|
+
*
|
|
10
|
+
* The trap (observed on an arm64 fleet box): `npm rebuild better-sqlite3` only
|
|
11
|
+
* works when run IN THE PACKAGE'S INSTALL DIR. Run from anywhere else (e.g. the
|
|
12
|
+
* user's home dir) it matches nothing and reports "rebuilt dependencies
|
|
13
|
+
* successfully" — a no-op. So this module resolves the install dir from the
|
|
14
|
+
* running code's own location and rebuilds there.
|
|
15
|
+
*
|
|
16
|
+
* Used by: `shieldcortex update` (verify+heal step), `shieldcortex repair`,
|
|
17
|
+
* `shieldcortex doctor` (correct remediation text), and the postinstall guidance.
|
|
18
|
+
*/
|
|
19
|
+
import path from 'path';
|
|
20
|
+
import { spawn } from 'child_process';
|
|
21
|
+
import { fileURLToPath } from 'url';
|
|
22
|
+
import { createRequire } from 'module';
|
|
23
|
+
const require = createRequire(import.meta.url);
|
|
24
|
+
/**
|
|
25
|
+
* The package's own install root — the directory whose `package.json` is this
|
|
26
|
+
* package, and which contains `node_modules/better-sqlite3`. Derived from the
|
|
27
|
+
* running module's location, NOT `npm root -g` (which points at the wrong tree
|
|
28
|
+
* when the package was installed under a custom prefix or via a registry shim).
|
|
29
|
+
*
|
|
30
|
+
* From `dist/setup/native-binding.js` → `../../` is the package root.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveSelfInstallDir() {
|
|
33
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
34
|
+
return path.resolve(here, '..', '..');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Smoke-test the native binding: load it, open an in-memory DB, run a probe.
|
|
38
|
+
* Synchronous (the load is sync) and never throws — returns a verdict.
|
|
39
|
+
*/
|
|
40
|
+
export function verifyNativeBinding() {
|
|
41
|
+
try {
|
|
42
|
+
const Database = require('better-sqlite3');
|
|
43
|
+
const db = new Database(':memory:');
|
|
44
|
+
db.exec('CREATE TABLE _sc_probe(x)');
|
|
45
|
+
db.close();
|
|
46
|
+
return { ok: true };
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
return { ok: false, error: err instanceof Error ? err.message : String(err) };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Run `npm rebuild better-sqlite3` in the install dir. Async (the rebuild can
|
|
54
|
+
* take tens of seconds) so callers can keep a spinner alive. Never throws.
|
|
55
|
+
*/
|
|
56
|
+
export function rebuildNativeBinding(installDir) {
|
|
57
|
+
return new Promise((resolve) => {
|
|
58
|
+
let output = '';
|
|
59
|
+
let settled = false;
|
|
60
|
+
const finish = (ok) => { if (!settled) {
|
|
61
|
+
settled = true;
|
|
62
|
+
resolve({ ok, output });
|
|
63
|
+
} };
|
|
64
|
+
let child;
|
|
65
|
+
try {
|
|
66
|
+
child = spawn('npm', ['rebuild', 'better-sqlite3', '--no-audit', '--no-fund'], {
|
|
67
|
+
cwd: installDir,
|
|
68
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
69
|
+
shell: false,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
return resolve({ ok: false, output: err instanceof Error ? err.message : String(err) });
|
|
74
|
+
}
|
|
75
|
+
const timer = setTimeout(() => {
|
|
76
|
+
try {
|
|
77
|
+
child.kill('SIGTERM');
|
|
78
|
+
}
|
|
79
|
+
catch { /* already dead */ }
|
|
80
|
+
output += '\n[timed out after 180s]';
|
|
81
|
+
finish(false);
|
|
82
|
+
}, 180_000);
|
|
83
|
+
timer.unref();
|
|
84
|
+
child.stdout?.setEncoding('utf-8');
|
|
85
|
+
child.stderr?.setEncoding('utf-8');
|
|
86
|
+
child.stdout?.on('data', (c) => { output += c; });
|
|
87
|
+
child.stderr?.on('data', (c) => { output += c; });
|
|
88
|
+
child.on('error', (err) => { clearTimeout(timer); output += String(err?.message ?? err); finish(false); });
|
|
89
|
+
child.on('close', (code) => { clearTimeout(timer); finish(code === 0); });
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Platform-aware build-toolchain hint, tailored by error text when available.
|
|
94
|
+
*/
|
|
95
|
+
function toolchainHint(rebuildOutput) {
|
|
96
|
+
const out = (rebuildOutput ?? '').toLowerCase();
|
|
97
|
+
const needsToolchain = !rebuildOutput || /gyp|python|make|g\+\+|cc1plus|no such file|command not found/.test(out);
|
|
98
|
+
if (!needsToolchain)
|
|
99
|
+
return '';
|
|
100
|
+
if (process.platform === 'darwin') {
|
|
101
|
+
return 'If the rebuild fails for lack of a compiler: xcode-select --install';
|
|
102
|
+
}
|
|
103
|
+
if (process.platform === 'win32') {
|
|
104
|
+
return 'If the rebuild fails for lack of a compiler: install the "Desktop development with C++" workload (Visual Studio Build Tools).';
|
|
105
|
+
}
|
|
106
|
+
return 'If the rebuild fails for lack of a compiler: sudo apt-get install -y python3 make g++ (or your distro\'s build-essential).';
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* The correct copy-paste remediation — the install-dir `cd` is the bit users
|
|
110
|
+
* miss (a bare `npm rebuild better-sqlite3` from $HOME is a silent no-op).
|
|
111
|
+
*/
|
|
112
|
+
export function nativeBindingRemediation(installDir, rebuildOutput) {
|
|
113
|
+
const lines = [
|
|
114
|
+
`cd "${installDir}" && npm rebuild better-sqlite3`,
|
|
115
|
+
];
|
|
116
|
+
const hint = toolchainHint(rebuildOutput);
|
|
117
|
+
if (hint)
|
|
118
|
+
lines.push(hint);
|
|
119
|
+
lines.push('Then restart Claude Code / the OpenClaw gateway so processes reload the binding.');
|
|
120
|
+
return lines.join('\n');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Verify the binding; if it fails, rebuild in the install dir and re-verify.
|
|
124
|
+
* - 'ok' — loaded first try (no rebuild).
|
|
125
|
+
* - 'healed' — rebuilt and now loads.
|
|
126
|
+
* - 'failed' — still broken after a rebuild; `remediation` carries the fix.
|
|
127
|
+
*/
|
|
128
|
+
export async function ensureNativeBinding(deps = {}) {
|
|
129
|
+
const verify = deps.verify ?? verifyNativeBinding;
|
|
130
|
+
const rebuild = deps.rebuild ?? rebuildNativeBinding;
|
|
131
|
+
const installDir = deps.installDir ?? resolveSelfInstallDir;
|
|
132
|
+
const first = verify();
|
|
133
|
+
if (first.ok)
|
|
134
|
+
return { status: 'ok' };
|
|
135
|
+
const dir = installDir();
|
|
136
|
+
const rebuilt = await rebuild(dir);
|
|
137
|
+
const after = verify();
|
|
138
|
+
if (after.ok)
|
|
139
|
+
return { status: 'healed', rebuildOutput: rebuilt.output };
|
|
140
|
+
return {
|
|
141
|
+
status: 'failed',
|
|
142
|
+
error: after.error ?? first.error,
|
|
143
|
+
rebuildOutput: rebuilt.output,
|
|
144
|
+
remediation: nativeBindingRemediation(dir, rebuilt.output),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-configure Claude Code hooks in ~/.claude/settings.json.
|
|
3
3
|
*/
|
|
4
|
-
import fs from 'fs';
|
|
5
4
|
import path from 'path';
|
|
6
5
|
import os from 'os';
|
|
7
6
|
import { setAutoMemoryEnableConfig } from '../cloud/config.js';
|
|
7
|
+
import { readJsonConfigOrAbort, writeJsonConfigWithBackup } from './json-config.js';
|
|
8
8
|
const SETTINGS_PATH = path.join(os.homedir(), '.claude', 'settings.json');
|
|
9
9
|
const CORTEX_HOOKS = {
|
|
10
10
|
PreCompact: {
|
|
@@ -52,21 +52,16 @@ const SESSION_END_HOOK = {
|
|
|
52
52
|
function hasCortexHook(entries) {
|
|
53
53
|
return entries.some((e) => e.hooks?.some((h) => typeof h.command === 'string' && h.command.includes('shieldcortex')));
|
|
54
54
|
}
|
|
55
|
+
// Reads settings.json. A missing file yields {} (fresh install); a file that
|
|
56
|
+
// EXISTS but won't parse THROWS — setupHooks() must surface that and abort
|
|
57
|
+
// rather than write a hooks-only file over the user's permissions/env/model
|
|
58
|
+
// settings. Mirrors uninstall.ts's "aborting to avoid corruption" discipline.
|
|
55
59
|
function readSettings() {
|
|
56
|
-
|
|
57
|
-
return {};
|
|
58
|
-
}
|
|
59
|
-
try {
|
|
60
|
-
return JSON.parse(fs.readFileSync(SETTINGS_PATH, 'utf-8'));
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
return {};
|
|
64
|
-
}
|
|
60
|
+
return readJsonConfigOrAbort(SETTINGS_PATH);
|
|
65
61
|
}
|
|
62
|
+
// Backs up an existing settings.json before overwriting it.
|
|
66
63
|
function writeSettings(settings) {
|
|
67
|
-
|
|
68
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
69
|
-
fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
64
|
+
writeJsonConfigWithBackup(SETTINGS_PATH, settings);
|
|
70
65
|
}
|
|
71
66
|
/**
|
|
72
67
|
* Migrate stale `npx shieldcortex hook ...` commands to `shieldcortex hook ...`.
|
package/dist/setup/uninstall.js
CHANGED
|
@@ -12,6 +12,7 @@ import os from 'os';
|
|
|
12
12
|
import readline from 'readline';
|
|
13
13
|
import { uninstallService } from '../service/install.js';
|
|
14
14
|
import { uninstallOpenClawHook } from './openclaw.js';
|
|
15
|
+
import { looksLikeShieldcortex } from './json-config.js';
|
|
15
16
|
/**
|
|
16
17
|
* Check if the current process is running in an agent context.
|
|
17
18
|
* Agents (sub-agents) should not be able to uninstall ShieldCortex.
|
|
@@ -128,27 +129,6 @@ export function removeClaudeMdBlock() {
|
|
|
128
129
|
fs.writeFileSync(CLAUDE_MD_PATH, newContent, 'utf-8');
|
|
129
130
|
console.log('CLAUDE.md: removed ShieldCortex memory instructions block.');
|
|
130
131
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Ownership check: an mcpServers entry "looks like ShieldCortex" if its
|
|
133
|
-
* command path or args contain a shieldcortex / shield-cortex token.
|
|
134
|
-
* `mcpServers.memory` is a generic key — the official upstream
|
|
135
|
-
* `@modelcontextprotocol/server-memory` registers under the same name —
|
|
136
|
-
* so we MUST verify ownership before deletion or risk clobbering an
|
|
137
|
-
* unrelated MCP server the user installed.
|
|
138
|
-
*/
|
|
139
|
-
function looksLikeShieldcortex(entry) {
|
|
140
|
-
if (!entry || typeof entry !== 'object')
|
|
141
|
-
return false;
|
|
142
|
-
const e = entry;
|
|
143
|
-
const tokens = [];
|
|
144
|
-
if (typeof e.command === 'string')
|
|
145
|
-
tokens.push(e.command);
|
|
146
|
-
if (Array.isArray(e.args))
|
|
147
|
-
for (const a of e.args)
|
|
148
|
-
if (typeof a === 'string')
|
|
149
|
-
tokens.push(a);
|
|
150
|
-
return tokens.some((t) => /shield[-]?cortex/i.test(t));
|
|
151
|
-
}
|
|
152
132
|
/**
|
|
153
133
|
* Remove the ShieldCortex MCP server entry from ~/.claude.json.
|
|
154
134
|
*
|
package/dist/tools/context.d.ts
CHANGED
|
@@ -15,27 +15,27 @@ export declare const getContextSchema: z.ZodObject<{
|
|
|
15
15
|
type: z.ZodEnum<["user", "cli", "hook", "email", "web", "agent", "file", "api", "tool_response"]>;
|
|
16
16
|
identifier: z.ZodString;
|
|
17
17
|
}, "strip", z.ZodTypeAny, {
|
|
18
|
-
type: "user" | "cli" | "hook" | "
|
|
18
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
19
19
|
identifier: string;
|
|
20
20
|
}, {
|
|
21
|
-
type: "user" | "cli" | "hook" | "
|
|
21
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
22
22
|
identifier: string;
|
|
23
23
|
}>>;
|
|
24
24
|
}, "strip", z.ZodTypeAny, {
|
|
25
|
-
format: "summary" | "
|
|
25
|
+
format: "summary" | "raw" | "detailed";
|
|
26
26
|
source?: {
|
|
27
|
-
type: "user" | "cli" | "hook" | "
|
|
27
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
28
28
|
identifier: string;
|
|
29
29
|
} | undefined;
|
|
30
30
|
project?: string | undefined;
|
|
31
31
|
query?: string | undefined;
|
|
32
32
|
}, {
|
|
33
33
|
source?: {
|
|
34
|
-
type: "user" | "cli" | "hook" | "
|
|
34
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
35
35
|
identifier: string;
|
|
36
36
|
} | undefined;
|
|
37
37
|
project?: string | undefined;
|
|
38
|
-
format?: "summary" | "
|
|
38
|
+
format?: "summary" | "raw" | "detailed" | undefined;
|
|
39
39
|
query?: string | undefined;
|
|
40
40
|
}>;
|
|
41
41
|
export type GetContextInput = z.infer<typeof getContextSchema>;
|
|
@@ -86,11 +86,11 @@ export declare const consolidateSchema: z.ZodObject<{
|
|
|
86
86
|
force: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
87
87
|
dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
88
88
|
}, "strip", z.ZodTypeAny, {
|
|
89
|
-
dryRun: boolean;
|
|
90
89
|
force: boolean;
|
|
90
|
+
dryRun: boolean;
|
|
91
91
|
}, {
|
|
92
|
-
dryRun?: boolean | undefined;
|
|
93
92
|
force?: boolean | undefined;
|
|
93
|
+
dryRun?: boolean | undefined;
|
|
94
94
|
}>;
|
|
95
95
|
export declare function executeConsolidate(input: {
|
|
96
96
|
force?: boolean;
|
package/dist/tools/forget.d.ts
CHANGED
|
@@ -17,38 +17,38 @@ export declare const forgetSchema: z.ZodObject<{
|
|
|
17
17
|
type: z.ZodEnum<["user", "cli", "hook", "email", "web", "agent", "file", "api", "tool_response"]>;
|
|
18
18
|
identifier: z.ZodString;
|
|
19
19
|
}, "strip", z.ZodTypeAny, {
|
|
20
|
-
type: "user" | "cli" | "hook" | "
|
|
20
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
21
21
|
identifier: string;
|
|
22
22
|
}, {
|
|
23
|
-
type: "user" | "cli" | "hook" | "
|
|
23
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
24
24
|
identifier: string;
|
|
25
25
|
}>>;
|
|
26
26
|
}, "strip", z.ZodTypeAny, {
|
|
27
|
-
dryRun: boolean;
|
|
28
27
|
confirm: boolean;
|
|
28
|
+
dryRun: boolean;
|
|
29
29
|
source?: {
|
|
30
|
-
type: "user" | "cli" | "hook" | "
|
|
30
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
31
31
|
identifier: string;
|
|
32
32
|
} | undefined;
|
|
33
33
|
project?: string | undefined;
|
|
34
34
|
id?: number | undefined;
|
|
35
|
-
category?: "
|
|
35
|
+
category?: "context" | "pattern" | "architecture" | "preference" | "error" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
36
36
|
query?: string | undefined;
|
|
37
37
|
olderThan?: number | undefined;
|
|
38
38
|
belowSalience?: number | undefined;
|
|
39
39
|
}, {
|
|
40
40
|
source?: {
|
|
41
|
-
type: "user" | "cli" | "hook" | "
|
|
41
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
42
42
|
identifier: string;
|
|
43
43
|
} | undefined;
|
|
44
44
|
project?: string | undefined;
|
|
45
45
|
id?: number | undefined;
|
|
46
|
-
category?: "
|
|
46
|
+
category?: "context" | "pattern" | "architecture" | "preference" | "error" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
47
47
|
query?: string | undefined;
|
|
48
|
+
confirm?: boolean | undefined;
|
|
48
49
|
olderThan?: number | undefined;
|
|
49
50
|
belowSalience?: number | undefined;
|
|
50
51
|
dryRun?: boolean | undefined;
|
|
51
|
-
confirm?: boolean | undefined;
|
|
52
52
|
}>;
|
|
53
53
|
export type ForgetInput = z.infer<typeof forgetSchema>;
|
|
54
54
|
/**
|
|
@@ -57,6 +57,7 @@ export type ForgetInput = z.infer<typeof forgetSchema>;
|
|
|
57
57
|
export declare function executeForget(input: ForgetInput): Promise<{
|
|
58
58
|
success: boolean;
|
|
59
59
|
deleted?: number;
|
|
60
|
+
denied?: number;
|
|
60
61
|
wouldDelete?: number;
|
|
61
62
|
memories?: {
|
|
62
63
|
id: number;
|
package/dist/tools/forget.js
CHANGED
|
@@ -131,14 +131,27 @@ export async function executeForget(input) {
|
|
|
131
131
|
error: error.toUserMessage(),
|
|
132
132
|
};
|
|
133
133
|
}
|
|
134
|
-
// Execute deletion within a transaction for atomicity
|
|
134
|
+
// Execute deletion within a transaction for atomicity. Route every
|
|
135
|
+
// affected id through deleteMemory(id, source) — NOT a raw bulk DELETE —
|
|
136
|
+
// so each row gets the same enforcement as the single-ID path: delete-ACL
|
|
137
|
+
// check (+ access-denial audit on refusal), graph cleanup, cloud-sync
|
|
138
|
+
// delete, and the dashboard `memory_deleted` event. A low-trust / non-owner
|
|
139
|
+
// caller therefore can't mass-delete protected memories. better-sqlite3 is
|
|
140
|
+
// synchronous, so the per-row loop stays inside one transaction atomically.
|
|
141
|
+
const deletedMemories = [];
|
|
135
142
|
withTransaction(() => {
|
|
136
|
-
|
|
143
|
+
for (const memory of affected) {
|
|
144
|
+
if (deleteMemory(memory.id, source)) {
|
|
145
|
+
deletedMemories.push(memory);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
137
148
|
});
|
|
149
|
+
const denied = affected.length - deletedMemories.length;
|
|
138
150
|
return {
|
|
139
151
|
success: true,
|
|
140
|
-
deleted:
|
|
141
|
-
|
|
152
|
+
deleted: deletedMemories.length,
|
|
153
|
+
...(denied > 0 ? { denied } : {}),
|
|
154
|
+
memories: deletedMemories,
|
|
142
155
|
};
|
|
143
156
|
}
|
|
144
157
|
catch (error) {
|
package/dist/tools/recall.d.ts
CHANGED
|
@@ -20,10 +20,10 @@ export declare const recallSchema: z.ZodObject<{
|
|
|
20
20
|
type: z.ZodEnum<["user", "cli", "hook", "email", "web", "agent", "file", "api", "tool_response"]>;
|
|
21
21
|
identifier: z.ZodString;
|
|
22
22
|
}, "strip", z.ZodTypeAny, {
|
|
23
|
-
type: "user" | "cli" | "hook" | "
|
|
23
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
24
24
|
identifier: string;
|
|
25
25
|
}, {
|
|
26
|
-
type: "user" | "cli" | "hook" | "
|
|
26
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
27
27
|
identifier: string;
|
|
28
28
|
}>>;
|
|
29
29
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -31,26 +31,26 @@ export declare const recallSchema: z.ZodObject<{
|
|
|
31
31
|
limit: number;
|
|
32
32
|
includeDecayed: boolean;
|
|
33
33
|
includeGlobal: boolean;
|
|
34
|
+
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
34
35
|
source?: {
|
|
35
|
-
type: "user" | "cli" | "hook" | "
|
|
36
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
36
37
|
identifier: string;
|
|
37
38
|
} | undefined;
|
|
38
39
|
project?: string | undefined;
|
|
39
|
-
|
|
40
|
-
category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
40
|
+
category?: "context" | "pattern" | "architecture" | "preference" | "error" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
41
41
|
tags?: string[] | undefined;
|
|
42
42
|
query?: string | undefined;
|
|
43
43
|
}, {
|
|
44
|
+
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
44
45
|
source?: {
|
|
45
|
-
type: "user" | "cli" | "hook" | "
|
|
46
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
46
47
|
identifier: string;
|
|
47
48
|
} | undefined;
|
|
48
49
|
project?: string | undefined;
|
|
49
50
|
mode?: "search" | "important" | "recent" | undefined;
|
|
50
|
-
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
51
|
-
category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
52
|
-
tags?: string[] | undefined;
|
|
53
51
|
limit?: number | undefined;
|
|
52
|
+
category?: "context" | "pattern" | "architecture" | "preference" | "error" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
53
|
+
tags?: string[] | undefined;
|
|
54
54
|
query?: string | undefined;
|
|
55
55
|
includeDecayed?: boolean | undefined;
|
|
56
56
|
includeGlobal?: boolean | undefined;
|
|
@@ -87,22 +87,22 @@ export declare const getMemorySchema: z.ZodObject<{
|
|
|
87
87
|
type: z.ZodEnum<["user", "cli", "hook", "email", "web", "agent", "file", "api", "tool_response"]>;
|
|
88
88
|
identifier: z.ZodString;
|
|
89
89
|
}, "strip", z.ZodTypeAny, {
|
|
90
|
-
type: "user" | "cli" | "hook" | "
|
|
90
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
91
91
|
identifier: string;
|
|
92
92
|
}, {
|
|
93
|
-
type: "user" | "cli" | "hook" | "
|
|
93
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
94
94
|
identifier: string;
|
|
95
95
|
}>>;
|
|
96
96
|
}, "strip", z.ZodTypeAny, {
|
|
97
97
|
id: number;
|
|
98
98
|
source?: {
|
|
99
|
-
type: "user" | "cli" | "hook" | "
|
|
99
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
100
100
|
identifier: string;
|
|
101
101
|
} | undefined;
|
|
102
102
|
}, {
|
|
103
103
|
id: number;
|
|
104
104
|
source?: {
|
|
105
|
-
type: "user" | "cli" | "hook" | "
|
|
105
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
106
106
|
identifier: string;
|
|
107
107
|
} | undefined;
|
|
108
108
|
}>;
|
package/dist/tools/remember.d.ts
CHANGED
|
@@ -21,10 +21,10 @@ export declare const rememberSchema: z.ZodObject<{
|
|
|
21
21
|
type: z.ZodEnum<["user", "cli", "hook", "email", "web", "agent", "file", "api", "tool_response"]>;
|
|
22
22
|
identifier: z.ZodString;
|
|
23
23
|
}, "strip", z.ZodTypeAny, {
|
|
24
|
-
type: "user" | "cli" | "hook" | "
|
|
24
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
25
25
|
identifier: string;
|
|
26
26
|
}, {
|
|
27
|
-
type: "user" | "cli" | "hook" | "
|
|
27
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
28
28
|
identifier: string;
|
|
29
29
|
}>>;
|
|
30
30
|
sourceType: z.ZodOptional<z.ZodEnum<["user", "cli", "hook", "email", "web", "agent", "file", "api", "tool_response"]>>;
|
|
@@ -35,43 +35,43 @@ export declare const rememberSchema: z.ZodObject<{
|
|
|
35
35
|
}, "strip", z.ZodTypeAny, {
|
|
36
36
|
title: string;
|
|
37
37
|
content: string;
|
|
38
|
+
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
38
39
|
scope?: "project" | "global" | undefined;
|
|
39
40
|
transferable?: boolean | undefined;
|
|
40
41
|
source?: {
|
|
41
|
-
type: "user" | "cli" | "hook" | "
|
|
42
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
42
43
|
identifier: string;
|
|
43
44
|
} | undefined;
|
|
44
45
|
project?: string | undefined;
|
|
45
|
-
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
46
|
-
category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
47
|
-
tags?: string[] | undefined;
|
|
48
46
|
sourceIdentifier?: string | undefined;
|
|
47
|
+
category?: "context" | "pattern" | "architecture" | "preference" | "error" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
48
|
+
tags?: string[] | undefined;
|
|
49
|
+
sourceType?: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response" | undefined;
|
|
49
50
|
sessionId?: string | undefined;
|
|
50
|
-
|
|
51
|
-
memoryPurpose?: "project" | "user" | "feedback" | "reference" | undefined;
|
|
51
|
+
memoryPurpose?: "user" | "project" | "feedback" | "reference" | undefined;
|
|
52
52
|
memoryScope?: "private" | "team" | undefined;
|
|
53
|
-
importance?: "
|
|
53
|
+
importance?: "low" | "high" | "critical" | "normal" | undefined;
|
|
54
54
|
agentId?: string | undefined;
|
|
55
55
|
workspaceDir?: string | undefined;
|
|
56
56
|
}, {
|
|
57
57
|
title: string;
|
|
58
58
|
content: string;
|
|
59
|
+
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
59
60
|
scope?: "project" | "global" | undefined;
|
|
60
61
|
transferable?: boolean | undefined;
|
|
61
62
|
source?: {
|
|
62
|
-
type: "user" | "cli" | "hook" | "
|
|
63
|
+
type: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response";
|
|
63
64
|
identifier: string;
|
|
64
65
|
} | undefined;
|
|
65
66
|
project?: string | undefined;
|
|
66
|
-
type?: "short_term" | "long_term" | "episodic" | undefined;
|
|
67
|
-
category?: "architecture" | "pattern" | "preference" | "error" | "context" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
68
|
-
tags?: string[] | undefined;
|
|
69
67
|
sourceIdentifier?: string | undefined;
|
|
68
|
+
category?: "context" | "pattern" | "architecture" | "preference" | "error" | "learning" | "todo" | "note" | "relationship" | "custom" | undefined;
|
|
69
|
+
tags?: string[] | undefined;
|
|
70
|
+
sourceType?: "user" | "cli" | "hook" | "email" | "web" | "agent" | "file" | "api" | "tool_response" | undefined;
|
|
70
71
|
sessionId?: string | undefined;
|
|
71
|
-
|
|
72
|
-
memoryPurpose?: "project" | "user" | "feedback" | "reference" | undefined;
|
|
72
|
+
memoryPurpose?: "user" | "project" | "feedback" | "reference" | undefined;
|
|
73
73
|
memoryScope?: "private" | "team" | undefined;
|
|
74
|
-
importance?: "
|
|
74
|
+
importance?: "low" | "high" | "critical" | "normal" | undefined;
|
|
75
75
|
agentId?: string | undefined;
|
|
76
76
|
workspaceDir?: string | undefined;
|
|
77
77
|
}>;
|
package/dist/tools/remember.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Store memories with automatic salience detection and categorization.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
-
import { addMemory, searchMemories, detectRelationships, createMemoryLink, getLastTruncationInfo } from '../memory/store.js';
|
|
7
|
+
import { addMemory, updateMemory, searchMemories, detectRelationships, createMemoryLink, getLastTruncationInfo } from '../memory/store.js';
|
|
8
8
|
import { calculateSalience, analyzeSalienceFactors, explainSalience } from '../memory/salience.js';
|
|
9
9
|
import { formatErrorForMcp } from '../errors.js';
|
|
10
10
|
import { resolveProject } from '../context/project-context.js';
|
|
@@ -92,18 +92,29 @@ export async function executeRemember(input) {
|
|
|
92
92
|
project: resolvedProject ?? undefined,
|
|
93
93
|
limit: 3,
|
|
94
94
|
});
|
|
95
|
-
// If very similar memory exists,
|
|
95
|
+
// If a very similar memory exists, genuinely UPDATE it with the new
|
|
96
|
+
// content rather than silently discarding the new write. The previous
|
|
97
|
+
// behaviour reported "Updated existing similar memory" but never persisted
|
|
98
|
+
// anything — so a richer follow-up was lost while the report implied a
|
|
99
|
+
// successful update (Phase 17 A4).
|
|
96
100
|
if (existing.length > 0 && existing[0].relevanceScore > 0.9) {
|
|
97
101
|
const existingMemory = existing[0].memory;
|
|
102
|
+
const contentChanged = existingMemory.content !== content;
|
|
103
|
+
const updated = contentChanged
|
|
104
|
+
? updateMemory(existingMemory.id, { content, title })
|
|
105
|
+
: existingMemory;
|
|
106
|
+
const target = updated ?? existingMemory;
|
|
98
107
|
return {
|
|
99
108
|
success: true,
|
|
100
109
|
memory: {
|
|
101
|
-
id:
|
|
102
|
-
title:
|
|
103
|
-
salience:
|
|
104
|
-
type:
|
|
105
|
-
category:
|
|
106
|
-
reason:
|
|
110
|
+
id: target.id,
|
|
111
|
+
title: target.title,
|
|
112
|
+
salience: target.salience,
|
|
113
|
+
type: target.type,
|
|
114
|
+
category: target.category,
|
|
115
|
+
reason: contentChanged
|
|
116
|
+
? 'Updated existing similar memory with new content'
|
|
117
|
+
: 'Existing similar memory already up to date',
|
|
107
118
|
},
|
|
108
119
|
};
|
|
109
120
|
}
|