shieldcortex 4.12.9 → 4.12.11
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/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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/service/install.d.ts +4 -0
- package/dist/service/install.js +35 -4
- package/dist/service/templates.js +11 -2
- package/dist/setup/openclaw.d.ts +16 -0
- package/dist/setup/openclaw.js +85 -22
- package/dist/setup/uninstall.d.ts +14 -0
- package/dist/setup/uninstall.js +76 -1
- package/package.json +1 -1
- package/plugins/openclaw/dist/openclaw.plugin.json +1 -1
- /package/dashboard/.next/standalone/dashboard/.next/static/{A6H8ZV4oe3Q4kutuq7VbG → Azzglh6qPGDH5Kl8B76tx}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{A6H8ZV4oe3Q4kutuq7VbG → Azzglh6qPGDH5Kl8B76tx}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{A6H8ZV4oe3Q4kutuq7VbG → Azzglh6qPGDH5Kl8B76tx}/_ssgManifest.js +0 -0
package/dashboard/.next/standalone/dashboard/.next/server/app/xray.segments/_tree.segment.rsc
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
:HL["/_next/static/chunks/915d5a8cf2d0807e.css","style"]
|
|
2
2
|
:HL["/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
3
3
|
:HL["/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
|
|
4
|
-
0:{"buildId":"
|
|
4
|
+
0:{"buildId":"Azzglh6qPGDH5Kl8B76tx","tree":{"name":"","paramType":null,"paramKey":"","hasRuntimePrefetch":false,"slots":{"children":{"name":"(dashboard)","paramType":null,"paramKey":"(dashboard)","hasRuntimePrefetch":false,"slots":{"children":{"name":"xray","paramType":null,"paramKey":"xray","hasRuntimePrefetch":false,"slots":{"children":{"name":"__PAGE__","paramType":null,"paramKey":"__PAGE__","hasRuntimePrefetch":false,"slots":null,"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":false}},"isRootLayout":true},"staleTime":300}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--Azzglh6qPGDH5Kl8B76tx--><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/915d5a8cf2d0807e.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/d878b929b21636c4.js"/><script src="/_next/static/chunks/d9ad4c35fc865415.js" async=""></script><script src="/_next/static/chunks/43d761df92da7cb6.js" async=""></script><script src="/_next/static/chunks/e281719dbabcca1d.js" async=""></script><script src="/_next/static/chunks/9e56d1f8f4d7adcb.js" async=""></script><script src="/_next/static/chunks/turbopack-79214717b23f7452.js" async=""></script><script src="/_next/static/chunks/4ddb24d8ce3b8617.js" async=""></script><script src="/_next/static/chunks/417032eeb2cd875f.js" async=""></script><script src="/_next/static/chunks/d334b69bff7779be.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>ShieldCortex</title><meta name="description" content="AI Memory Security Dashboard — Defence pipeline, audit logs, quarantine review"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased bg-slate-950"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/d878b929b21636c4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[36111,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"Providers\"]\n3:I[57043,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n4:I[10445,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\",\"/_next/static/chunks/d334b69bff7779be.js\"],\"default\"]\n5:I[27657,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n6:I[56978,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\n9:I[56978,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"ViewportBoundary\"]\nb:I[56978,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"MetadataBoundary\"]\nd:I[30687,[\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n:HL[\"/_next/static/chunks/915d5a8cf2d0807e.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Azzglh6qPGDH5Kl8B76tx\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/915d5a8cf2d0807e.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/4ddb24d8ce3b8617.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/417032eeb2cd875f.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"children\":[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased bg-slate-950\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$4\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/d334b69bff7779be.js\",\"async\":true}]],\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"8:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"ShieldCortex\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI Memory Security Dashboard — Defence pipeline, audit logs, quarantine review\"}]]\n"])</script></body></html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/d878b929b21636c4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57043,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n3:I[27657,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n4:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"ViewportBoundary\"]\n9:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"MetadataBoundary\"]\nb:I[30687,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
1
|
+
<!DOCTYPE html><!--Azzglh6qPGDH5Kl8B76tx--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/d878b929b21636c4.js"/><script src="/_next/static/chunks/d9ad4c35fc865415.js" async=""></script><script src="/_next/static/chunks/43d761df92da7cb6.js" async=""></script><script src="/_next/static/chunks/e281719dbabcca1d.js" async=""></script><script src="/_next/static/chunks/9e56d1f8f4d7adcb.js" async=""></script><script src="/_next/static/chunks/turbopack-79214717b23f7452.js" async=""></script><script src="/_next/static/chunks/102f894cc892994d.js" async=""></script><script src="/_next/static/chunks/417032eeb2cd875f.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/d878b929b21636c4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57043,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n3:I[27657,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n4:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"ViewportBoundary\"]\n9:I[56978,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"MetadataBoundary\"]\nb:I[30687,[\"/_next/static/chunks/102f894cc892994d.js\",\"/_next/static/chunks/417032eeb2cd875f.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Azzglh6qPGDH5Kl8B76tx\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/102f894cc892994d.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/417032eeb2cd875f.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"eHRB0IckstA584Ic9QRk5ZTf6AMmDa5NOMNaBwI9GCE=\"\n}"
|
|
@@ -10,6 +10,10 @@ import { type ServiceMode } from './templates.js';
|
|
|
10
10
|
interface ServiceOptions {
|
|
11
11
|
mode?: ServiceMode;
|
|
12
12
|
}
|
|
13
|
+
export declare function detectStaleAppendLogs(content: string): {
|
|
14
|
+
stale: boolean;
|
|
15
|
+
missingPath: string | null;
|
|
16
|
+
};
|
|
13
17
|
export declare function installService(options?: ServiceOptions): Promise<void>;
|
|
14
18
|
export declare function repairService(options?: ServiceOptions): Promise<void>;
|
|
15
19
|
export declare function uninstallService(options?: {
|
package/dist/service/install.js
CHANGED
|
@@ -38,9 +38,25 @@ function getServiceConfig(mode) {
|
|
|
38
38
|
mode,
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
+
export function detectStaleAppendLogs(content) {
|
|
42
|
+
// Pre-v4.12.10 Linux units used `StandardOutput=append:/abs/path/...`.
|
|
43
|
+
// If that absolute path no longer exists, systemd will fail to open it
|
|
44
|
+
// before any ExecStart* runs (exit 209/STDOUT) and the service will
|
|
45
|
+
// crash-loop forever. Detect this so `service status` can suggest
|
|
46
|
+
// `service repair`, which rewrites the unit to the journald template.
|
|
47
|
+
const match = content.match(/^Standard(?:Output|Error)=append:(\S+)/m);
|
|
48
|
+
if (!match)
|
|
49
|
+
return { stale: false, missingPath: null };
|
|
50
|
+
const logFile = match[1];
|
|
51
|
+
const logDir = path.dirname(logFile);
|
|
52
|
+
if (!fs.existsSync(logDir)) {
|
|
53
|
+
return { stale: true, missingPath: logDir };
|
|
54
|
+
}
|
|
55
|
+
return { stale: false, missingPath: null };
|
|
56
|
+
}
|
|
41
57
|
function inspectServiceEntryPoint(platform, servicePath) {
|
|
42
58
|
if (!fs.existsSync(servicePath)) {
|
|
43
|
-
return { entryPoint: null, stale: false, mode: null };
|
|
59
|
+
return { entryPoint: null, stale: false, mode: null, staleReason: null };
|
|
44
60
|
}
|
|
45
61
|
try {
|
|
46
62
|
const content = fs.readFileSync(servicePath, 'utf-8');
|
|
@@ -64,11 +80,23 @@ function inspectServiceEntryPoint(platform, servicePath) {
|
|
|
64
80
|
mode = modeMatch?.[1] ?? null;
|
|
65
81
|
}
|
|
66
82
|
const currentEntryPoint = getServiceConfig(detectDefaultServiceMode(platform)).entryPoint;
|
|
67
|
-
const
|
|
68
|
-
|
|
83
|
+
const entryPointStale = !!entryPoint && (entryPoint.includes('/.npm/_npx/') || entryPoint !== currentEntryPoint);
|
|
84
|
+
let logDirStale = false;
|
|
85
|
+
let staleReason = null;
|
|
86
|
+
if (platform === 'linux') {
|
|
87
|
+
const appendCheck = detectStaleAppendLogs(content);
|
|
88
|
+
if (appendCheck.stale) {
|
|
89
|
+
logDirStale = true;
|
|
90
|
+
staleReason = `unit logs to missing dir ${appendCheck.missingPath} (pre-v4.12.10 append: format)`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (entryPointStale && !staleReason) {
|
|
94
|
+
staleReason = 'unit points at a stale npm/npx entry point';
|
|
95
|
+
}
|
|
96
|
+
return { entryPoint, stale: entryPointStale || logDirStale, mode, staleReason };
|
|
69
97
|
}
|
|
70
98
|
catch {
|
|
71
|
-
return { entryPoint: null, stale: false, mode: null };
|
|
99
|
+
return { entryPoint: null, stale: false, mode: null, staleReason: null };
|
|
72
100
|
}
|
|
73
101
|
}
|
|
74
102
|
function getServicePath(platform) {
|
|
@@ -213,6 +241,9 @@ export async function serviceStatus() {
|
|
|
213
241
|
console.log(`Entry: ${inspection.entryPoint}`);
|
|
214
242
|
console.log(`Mode: ${inspection.mode ?? 'unknown'}`);
|
|
215
243
|
console.log(`Healthy: ${inspection.stale ? 'no (repair recommended)' : 'yes'}`);
|
|
244
|
+
if (inspection.stale && inspection.staleReason) {
|
|
245
|
+
console.log(`Reason: ${inspection.staleReason}`);
|
|
246
|
+
}
|
|
216
247
|
}
|
|
217
248
|
if (!installed)
|
|
218
249
|
return;
|
|
@@ -42,6 +42,14 @@ export function launchdPlist(config) {
|
|
|
42
42
|
</plist>`;
|
|
43
43
|
}
|
|
44
44
|
export function systemdUnit(config) {
|
|
45
|
+
// Logs go to journald rather than absolute file paths.
|
|
46
|
+
// History: pre-v4.12.10 used `StandardOutput=append:~/.shieldcortex/logs/...`,
|
|
47
|
+
// which crash-looped with exit 209/STDOUT if that dir was ever removed
|
|
48
|
+
// (e.g. by `uninstall --clean-logs` or any cleanup of ~/.shieldcortex).
|
|
49
|
+
// systemd opens the StandardOutput file before any ExecStart*, so an
|
|
50
|
+
// ExecStartPre=mkdir cannot recover it. journald has no filesystem
|
|
51
|
+
// dependency and works on every systemd version we support.
|
|
52
|
+
// Inspect with: journalctl --user -u shieldcortex-dashboard.service
|
|
45
53
|
return `[Unit]
|
|
46
54
|
Description=ShieldCortex ${modeLabel(config.mode)}
|
|
47
55
|
After=network.target
|
|
@@ -51,8 +59,9 @@ Type=simple
|
|
|
51
59
|
ExecStart=${config.nodePath} ${config.entryPoint} --mode ${config.mode}
|
|
52
60
|
Restart=on-failure
|
|
53
61
|
RestartSec=5
|
|
54
|
-
StandardOutput=
|
|
55
|
-
StandardError=
|
|
62
|
+
StandardOutput=journal
|
|
63
|
+
StandardError=journal
|
|
64
|
+
SyslogIdentifier=shieldcortex-${config.mode}
|
|
56
65
|
Environment=PATH=${config.nodeBinDir}:/usr/local/bin:/usr/bin:/bin
|
|
57
66
|
|
|
58
67
|
[Install]
|
package/dist/setup/openclaw.d.ts
CHANGED
|
@@ -20,6 +20,22 @@ export declare function isDockerEnvironment(): boolean;
|
|
|
20
20
|
* Creates the hooks/ subdirectory if the parent config dir exists.
|
|
21
21
|
*/
|
|
22
22
|
export declare function findAllHooksDirs(): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Pure idempotency check for the openclaw.json plugin registration.
|
|
25
|
+
*
|
|
26
|
+
* Returns true if the config needs to be rewritten — i.e. ANY of the
|
|
27
|
+
* load-bearing fields differ from the desired state. Returns false when
|
|
28
|
+
* the config already matches and a re-install would otherwise produce a
|
|
29
|
+
* no-op write (which churned the gateway's config-watcher every
|
|
30
|
+
* `shieldcortex openclaw install` pre-v4.12.11).
|
|
31
|
+
*
|
|
32
|
+
* Intentionally treats `installedAt` as transient — only differing on
|
|
33
|
+
* that field does NOT force a write, otherwise this function would
|
|
34
|
+
* always trip on its own previous timestamp.
|
|
35
|
+
*
|
|
36
|
+
* Exported for direct unit testing without booting the full installer.
|
|
37
|
+
*/
|
|
38
|
+
export declare function pluginInstallNeedsWrite(config: unknown, pluginId: string, installDir: string, version: string): boolean;
|
|
23
39
|
/**
|
|
24
40
|
* Install options for `shieldcortex openclaw install`.
|
|
25
41
|
*/
|
package/dist/setup/openclaw.js
CHANGED
|
@@ -255,9 +255,19 @@ function detectLegacyHookVariants(hooksDir) {
|
|
|
255
255
|
}
|
|
256
256
|
// ==================== Cleanup Legacy Plugin ====================
|
|
257
257
|
/**
|
|
258
|
-
* Remove
|
|
259
|
-
*
|
|
260
|
-
* that caused OpenClaw config validation
|
|
258
|
+
* Remove genuinely-legacy plugin registration shapes from openclaw.json.
|
|
259
|
+
*
|
|
260
|
+
* The only known legacy shape that caused OpenClaw config validation
|
|
261
|
+
* errors was `plugins.allow` entries containing full file paths to the
|
|
262
|
+
* plugin (pre-v2026.3 format) rather than the bare plugin id. This
|
|
263
|
+
* function strips those.
|
|
264
|
+
*
|
|
265
|
+
* v4.12.11 — used to also unconditionally delete
|
|
266
|
+
* `plugins.entries['shieldcortex-realtime']` here. That key holds the
|
|
267
|
+
* CURRENT-format registration (`{ enabled: true }`) that `trustLocalPlugin`
|
|
268
|
+
* writes; deleting it on every install meant `trustLocalPlugin`'s
|
|
269
|
+
* idempotency check always saw a missing entry and re-wrote the file —
|
|
270
|
+
* defeating the v4.12.11 idempotency fix entirely. Removed.
|
|
261
271
|
*/
|
|
262
272
|
function cleanupLegacyPlugin() {
|
|
263
273
|
const home = resolveUserHome();
|
|
@@ -268,13 +278,6 @@ function cleanupLegacyPlugin() {
|
|
|
268
278
|
const raw = fs.readFileSync(configPath, 'utf-8');
|
|
269
279
|
const config = JSON.parse(raw);
|
|
270
280
|
let changed = false;
|
|
271
|
-
// Remove legacy entries (old format before native installs)
|
|
272
|
-
if (config.plugins?.entries?.['shieldcortex-realtime']) {
|
|
273
|
-
delete config.plugins.entries['shieldcortex-realtime'];
|
|
274
|
-
if (Object.keys(config.plugins.entries).length === 0)
|
|
275
|
-
delete config.plugins.entries;
|
|
276
|
-
changed = true;
|
|
277
|
-
}
|
|
278
281
|
// Remove stale full-path entries from plugins.allow
|
|
279
282
|
// (pre-v2026.3 format used raw file paths instead of plugin IDs)
|
|
280
283
|
if (Array.isArray(config.plugins?.allow)) {
|
|
@@ -297,6 +300,45 @@ function cleanupLegacyPlugin() {
|
|
|
297
300
|
function openClawConfigPath() {
|
|
298
301
|
return path.join(resolveUserHome(), '.openclaw', 'openclaw.json');
|
|
299
302
|
}
|
|
303
|
+
/**
|
|
304
|
+
* Pure idempotency check for the openclaw.json plugin registration.
|
|
305
|
+
*
|
|
306
|
+
* Returns true if the config needs to be rewritten — i.e. ANY of the
|
|
307
|
+
* load-bearing fields differ from the desired state. Returns false when
|
|
308
|
+
* the config already matches and a re-install would otherwise produce a
|
|
309
|
+
* no-op write (which churned the gateway's config-watcher every
|
|
310
|
+
* `shieldcortex openclaw install` pre-v4.12.11).
|
|
311
|
+
*
|
|
312
|
+
* Intentionally treats `installedAt` as transient — only differing on
|
|
313
|
+
* that field does NOT force a write, otherwise this function would
|
|
314
|
+
* always trip on its own previous timestamp.
|
|
315
|
+
*
|
|
316
|
+
* Exported for direct unit testing without booting the full installer.
|
|
317
|
+
*/
|
|
318
|
+
export function pluginInstallNeedsWrite(config, pluginId, installDir, version) {
|
|
319
|
+
if (!config || typeof config !== 'object')
|
|
320
|
+
return true;
|
|
321
|
+
const c = config;
|
|
322
|
+
if (!c.plugins || typeof c.plugins !== 'object')
|
|
323
|
+
return true;
|
|
324
|
+
const plugins = c.plugins;
|
|
325
|
+
const install = plugins.installs?.[pluginId];
|
|
326
|
+
if (!install || typeof install !== 'object')
|
|
327
|
+
return true;
|
|
328
|
+
const i = install;
|
|
329
|
+
if (i.source !== 'path' || i.installPath !== installDir || i.version !== version)
|
|
330
|
+
return true;
|
|
331
|
+
const allow = Array.isArray(plugins.allow) ? plugins.allow : [];
|
|
332
|
+
if (!allow.includes(pluginId))
|
|
333
|
+
return true;
|
|
334
|
+
const hasStale = allow.some((e) => typeof e === 'string' && e !== pluginId && e.includes(pluginId));
|
|
335
|
+
if (hasStale)
|
|
336
|
+
return true;
|
|
337
|
+
const entries = plugins.entries ?? {};
|
|
338
|
+
if (!entries[pluginId])
|
|
339
|
+
return true;
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
300
342
|
function trustLocalPlugin(installDir, version) {
|
|
301
343
|
const configPath = openClawConfigPath();
|
|
302
344
|
const configDir = path.dirname(configPath);
|
|
@@ -307,6 +349,13 @@ function trustLocalPlugin(installDir, version) {
|
|
|
307
349
|
}
|
|
308
350
|
const raw = fs.existsSync(configPath) ? fs.readFileSync(configPath, 'utf-8') : '{}';
|
|
309
351
|
const config = JSON.parse(raw);
|
|
352
|
+
// Idempotency: skip the write if everything is already correct.
|
|
353
|
+
// This stops `shieldcortex openclaw install` (and postinstall.mjs's
|
|
354
|
+
// auto-refresh) from bumping a fresh installedAt timestamp on every
|
|
355
|
+
// invocation when nothing has actually changed.
|
|
356
|
+
if (!pluginInstallNeedsWrite(config, pluginId, installDir, version)) {
|
|
357
|
+
return true;
|
|
358
|
+
}
|
|
310
359
|
const plugins = typeof config.plugins === 'object' && config.plugins !== null ? config.plugins : {};
|
|
311
360
|
const allow = Array.isArray(plugins.allow)
|
|
312
361
|
? (plugins.allow ?? [])
|
|
@@ -316,15 +365,18 @@ function trustLocalPlugin(installDir, version) {
|
|
|
316
365
|
if (!cleaned.includes(pluginId)) {
|
|
317
366
|
cleaned.push(pluginId);
|
|
318
367
|
}
|
|
319
|
-
//
|
|
368
|
+
// Preserve the existing installedAt if present — we only land here
|
|
369
|
+
// when something genuine changed, but if the existing entry's path
|
|
370
|
+
// was wrong (say) we don't need to invent a new install timestamp.
|
|
320
371
|
const installs = typeof plugins.installs === 'object' && plugins.installs !== null
|
|
321
372
|
? plugins.installs
|
|
322
373
|
: {};
|
|
374
|
+
const existingInstall = installs[pluginId];
|
|
323
375
|
installs[pluginId] = {
|
|
324
376
|
source: 'path',
|
|
325
377
|
installPath: installDir,
|
|
326
378
|
version,
|
|
327
|
-
installedAt: new Date().toISOString(),
|
|
379
|
+
installedAt: existingInstall?.installedAt ?? new Date().toISOString(),
|
|
328
380
|
};
|
|
329
381
|
// Add entries to enable the plugin
|
|
330
382
|
const entries = typeof plugins.entries === 'object' && plugins.entries !== null
|
|
@@ -598,17 +650,28 @@ function uninstallPlugin() {
|
|
|
598
650
|
const raw = fs.readFileSync(configPath, 'utf-8');
|
|
599
651
|
const config = JSON.parse(raw);
|
|
600
652
|
const pluginId = PLUGIN_DIR_NAME;
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
653
|
+
// Idempotency: only write the config if there's actually something
|
|
654
|
+
// to remove. Pre-v4.12.11 this rewrote openclaw.json every time
|
|
655
|
+
// even when no SC entries existed (e.g. a re-run of `uninstall
|
|
656
|
+
// --deep` after a previous successful uninstall).
|
|
657
|
+
const allowHasIt = Array.isArray(config.plugins?.allow)
|
|
658
|
+
&& config.plugins.allow.some((e) => typeof e === 'string' && e.includes(pluginId));
|
|
659
|
+
const installsHasIt = !!config.plugins?.installs?.[pluginId];
|
|
660
|
+
const entriesHasIt = !!config.plugins?.entries?.[pluginId];
|
|
661
|
+
const needsWrite = allowHasIt || installsHasIt || entriesHasIt;
|
|
662
|
+
if (needsWrite) {
|
|
663
|
+
if (Array.isArray(config.plugins?.allow)) {
|
|
664
|
+
// Remove both old file-path entries and new short-name entries
|
|
665
|
+
config.plugins.allow = config.plugins.allow.filter((entry) => !entry.includes(pluginId));
|
|
666
|
+
}
|
|
667
|
+
if (config.plugins?.installs?.[pluginId]) {
|
|
668
|
+
delete config.plugins.installs[pluginId];
|
|
669
|
+
}
|
|
670
|
+
if (config.plugins?.entries?.[pluginId]) {
|
|
671
|
+
delete config.plugins.entries[pluginId];
|
|
672
|
+
}
|
|
673
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
610
674
|
}
|
|
611
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
612
675
|
}
|
|
613
676
|
fs.rmSync(destDir, { recursive: true });
|
|
614
677
|
console.log(`Removed real-time plugin from ${destDir}`);
|
|
@@ -13,6 +13,20 @@
|
|
|
13
13
|
export declare function requireConfirmation(action: string): Promise<boolean>;
|
|
14
14
|
export declare function removeHooks(): void;
|
|
15
15
|
export declare function removeClaudeMdBlock(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Remove the ShieldCortex MCP server entry from ~/.claude.json.
|
|
18
|
+
*
|
|
19
|
+
* Pre-v4.12.11 uninstall left this entry in place. Every Claude Code
|
|
20
|
+
* session then tried to spawn the now-missing shieldcortex binary, and
|
|
21
|
+
* the failure cascaded into fleet-wide context loss — confirmed by a
|
|
22
|
+
* peer agent (Edith) who saw an affected host stabilise within minutes
|
|
23
|
+
* after manually removing the entry.
|
|
24
|
+
*
|
|
25
|
+
* Safe: only deletes entries that look ShieldCortex-owned. No-op if the
|
|
26
|
+
* file is missing, JSON is malformed, the entry is absent, or the entry
|
|
27
|
+
* belongs to another MCP server.
|
|
28
|
+
*/
|
|
29
|
+
export declare function removeMcpEntry(): void;
|
|
16
30
|
export declare function uninstallSetup(): Promise<void>;
|
|
17
31
|
export declare function uninstallAll(options?: {
|
|
18
32
|
keepLogs?: boolean;
|
package/dist/setup/uninstall.js
CHANGED
|
@@ -128,6 +128,65 @@ export function removeClaudeMdBlock() {
|
|
|
128
128
|
fs.writeFileSync(CLAUDE_MD_PATH, newContent, 'utf-8');
|
|
129
129
|
console.log('CLAUDE.md: removed ShieldCortex memory instructions block.');
|
|
130
130
|
}
|
|
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
|
+
/**
|
|
153
|
+
* Remove the ShieldCortex MCP server entry from ~/.claude.json.
|
|
154
|
+
*
|
|
155
|
+
* Pre-v4.12.11 uninstall left this entry in place. Every Claude Code
|
|
156
|
+
* session then tried to spawn the now-missing shieldcortex binary, and
|
|
157
|
+
* the failure cascaded into fleet-wide context loss — confirmed by a
|
|
158
|
+
* peer agent (Edith) who saw an affected host stabilise within minutes
|
|
159
|
+
* after manually removing the entry.
|
|
160
|
+
*
|
|
161
|
+
* Safe: only deletes entries that look ShieldCortex-owned. No-op if the
|
|
162
|
+
* file is missing, JSON is malformed, the entry is absent, or the entry
|
|
163
|
+
* belongs to another MCP server.
|
|
164
|
+
*/
|
|
165
|
+
export function removeMcpEntry() {
|
|
166
|
+
const mcpPath = path.join(os.homedir(), '.claude.json');
|
|
167
|
+
if (!fs.existsSync(mcpPath))
|
|
168
|
+
return;
|
|
169
|
+
let config;
|
|
170
|
+
try {
|
|
171
|
+
config = JSON.parse(fs.readFileSync(mcpPath, 'utf-8'));
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
console.warn(`MCP: could not parse ~/.claude.json — leaving it untouched: ${err.message}`);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const entry = config?.mcpServers?.memory;
|
|
178
|
+
if (!entry) {
|
|
179
|
+
console.log('MCP: no shieldcortex entry found in ~/.claude.json.');
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (!looksLikeShieldcortex(entry)) {
|
|
183
|
+
console.warn('MCP: ~/.claude.json mcpServers.memory does not look ShieldCortex-owned — leaving it alone.');
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
delete config.mcpServers.memory;
|
|
187
|
+
fs.writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
188
|
+
console.log('MCP: removed shieldcortex entry from ~/.claude.json.');
|
|
189
|
+
}
|
|
131
190
|
export async function uninstallSetup() {
|
|
132
191
|
if (blockAgentUninstall())
|
|
133
192
|
return;
|
|
@@ -149,6 +208,12 @@ export async function uninstallSetup() {
|
|
|
149
208
|
catch (err) {
|
|
150
209
|
console.error(`Failed to remove CLAUDE.md block: ${err.message}`);
|
|
151
210
|
}
|
|
211
|
+
try {
|
|
212
|
+
removeMcpEntry();
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
console.error(`Failed to remove MCP entry: ${err.message}`);
|
|
216
|
+
}
|
|
152
217
|
console.log('\nSetup removal complete.');
|
|
153
218
|
}
|
|
154
219
|
export async function uninstallAll(options) {
|
|
@@ -191,7 +256,17 @@ export async function uninstallAll(options) {
|
|
|
191
256
|
catch (err) {
|
|
192
257
|
console.error(`Failed to remove CLAUDE.md block: ${err.message}`);
|
|
193
258
|
}
|
|
194
|
-
// 5.
|
|
259
|
+
// 5. Remove the MCP entry from ~/.claude.json. This is THE
|
|
260
|
+
// pre-v4.12.11 context-killer — every Claude Code session loaded
|
|
261
|
+
// the orphaned entry, tried to spawn the missing binary, and the
|
|
262
|
+
// failure cascaded into context loss across the fleet.
|
|
263
|
+
try {
|
|
264
|
+
removeMcpEntry();
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
console.error(`Failed to remove MCP entry: ${err.message}`);
|
|
268
|
+
}
|
|
269
|
+
// 6. Deep clean: purge all known OpenClaw residue locations that the
|
|
195
270
|
// version-specific uninstall paths miss, then (best-effort) restart
|
|
196
271
|
// the gateway so the purged config takes effect immediately.
|
|
197
272
|
if (options?.deep) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shieldcortex",
|
|
3
|
-
"version": "4.12.
|
|
3
|
+
"version": "4.12.11",
|
|
4
4
|
"description": "Trustworthy memory and security for AI agents. Recall debugging, review queue, OpenClaw session capture, and memory poisoning defence for Claude Code, Codex, OpenClaw, LangChain, and MCP agents.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "shieldcortex-realtime",
|
|
3
|
-
"version": "4.12.
|
|
3
|
+
"version": "4.12.11",
|
|
4
4
|
"name": "ShieldCortex Real-time Scanner",
|
|
5
5
|
"description": "Real-time defence scanning on LLM input, memory extraction on LLM output, and active tool call interception with approval gating.",
|
|
6
6
|
"kind": null,
|
|
File without changes
|
|
File without changes
|