shieldcortex 4.32.4 → 4.32.6
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/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/dist/cli/doctor.d.ts +1 -0
- package/dist/cli/doctor.js +23 -4
- package/dist/database/better-sqlite3-guard.js +3 -2
- package/dist/database/init.js +3 -3
- package/dist/service/install.d.ts +24 -0
- package/dist/service/install.js +94 -8
- package/dist/setup/native-binding.d.ts +44 -23
- package/dist/setup/native-binding.js +54 -29
- package/package.json +1 -1
- package/scripts/postinstall.mjs +8 -5
- /package/dashboard/.next/standalone/dashboard/.next/static/{RpQu_A3G4318MjcmJbRga → RzZYMDWhzcVdAIEuXnOMB}/_buildManifest.js +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{RpQu_A3G4318MjcmJbRga → RzZYMDWhzcVdAIEuXnOMB}/_clientMiddlewareManifest.json +0 -0
- /package/dashboard/.next/standalone/dashboard/.next/static/{RpQu_A3G4318MjcmJbRga → RzZYMDWhzcVdAIEuXnOMB}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--RzZYMDWhzcVdAIEuXnOMB--><html lang="en" class="dark" data-theme="terminal"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/34d933785a17edf3.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/aee9601911b790ca.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/d878b929b21636c4.js"/><script src="/_next/static/chunks/f70f563804550a9c.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-768a6a8b9db952e0.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>
|
|
2
2
|
try {
|
|
3
3
|
var t = localStorage.getItem('sc-theme');
|
|
4
4
|
if (t !== 'glass' && t !== 'terminal') t = 'terminal';
|
|
@@ -6,4 +6,4 @@ try {
|
|
|
6
6
|
} catch (e) {
|
|
7
7
|
document.documentElement.dataset.theme = 'terminal';
|
|
8
8
|
}
|
|
9
|
-
</script><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/34d933785a17edf3.css\",\"style\"]\n:HL[\"/_next/static/chunks/aee9601911b790ca.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"
|
|
9
|
+
</script><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/34d933785a17edf3.css\",\"style\"]\n:HL[\"/_next/static/chunks/aee9601911b790ca.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"RzZYMDWhzcVdAIEuXnOMB\",\"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/34d933785a17edf3.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/aee9601911b790ca.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\",\"data-theme\":\"terminal\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\ntry {\\n var t = localStorage.getItem('sc-theme');\\n if (t !== 'glass' \u0026\u0026 t !== 'terminal') t = 'terminal';\\n document.documentElement.dataset.theme = t;\\n} catch (e) {\\n document.documentElement.dataset.theme = 'terminal';\\n}\\n\"}}]}],[\"$\",\"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:1: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:1: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:1: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:1: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><!--RzZYMDWhzcVdAIEuXnOMB--><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/f70f563804550a9c.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-768a6a8b9db952e0.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\":\"RzZYMDWhzcVdAIEuXnOMB\",\"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>
|
package/dist/cli/doctor.d.ts
CHANGED
|
@@ -132,6 +132,7 @@ export declare function checkOpenClawDuplicateInstalls(openclawDir?: string): Pr
|
|
|
132
132
|
* group; that's the surface this check probes.
|
|
133
133
|
*/
|
|
134
134
|
export declare function checkDefenceCanary(): Promise<CheckResult>;
|
|
135
|
+
export declare function checkBrainWorker(): Promise<CheckResult>;
|
|
135
136
|
/**
|
|
136
137
|
* The cortex-memory hook is installed by FILE COPY into
|
|
137
138
|
* `~/.openclaw/hooks/cortex-memory/` (see src/setup/openclaw.ts). A package
|
package/dist/cli/doctor.js
CHANGED
|
@@ -14,6 +14,7 @@ import { shouldShowProUpsell, UPSELL_CONSTANTS } from './upsell.js';
|
|
|
14
14
|
import { getUpsellState, markUpsellShown } from './upsell-state.js';
|
|
15
15
|
import { resolveRealtimePluginInstallPath, readInstalledRealtimePluginVersion } from '../integrations/openclaw-plugin-state.js';
|
|
16
16
|
import { resolveSelfInstallDir } from '../setup/native-binding.js';
|
|
17
|
+
import { MCP_LIGHT_TICK_INTERVAL_MS } from '../worker/types.js';
|
|
17
18
|
const require = createRequire(import.meta.url);
|
|
18
19
|
const pkg = require('../../package.json');
|
|
19
20
|
// ANSI colour codes
|
|
@@ -127,7 +128,7 @@ async function checkDatabase() {
|
|
|
127
128
|
status: 'fail',
|
|
128
129
|
message: `cannot open — ${msg}`,
|
|
129
130
|
fix: /bindings file|napi|abi|MODULE_VERSION|was compiled against/i.test(msg)
|
|
130
|
-
? `Native DB engine failed to load. Run \`shieldcortex repair\` (
|
|
131
|
+
? `Native DB engine failed to load. Run \`shieldcortex repair\` (compiles better-sqlite3 from source + re-verifies), or manually: cd "${path.join(resolveSelfInstallDir(), 'node_modules', 'better-sqlite3')}" && npm run build-release`
|
|
131
132
|
: 'Back up and delete `~/.shieldcortex/memories.db`, then restart the MCP server',
|
|
132
133
|
};
|
|
133
134
|
}
|
|
@@ -1158,9 +1159,15 @@ function workerRecoveryFix() {
|
|
|
1158
1159
|
if (process.platform === 'linux') {
|
|
1159
1160
|
return 'For persistence, run `shieldcortex service install --headless` (recommended on headless hosts) or restart Claude Code';
|
|
1160
1161
|
}
|
|
1161
|
-
return 'Restart Claude Code or run `shieldcortex service install` to
|
|
1162
|
+
return 'Restart Claude Code (spawns a fresh MCP-hosted worker), or run `shieldcortex service install` to start — or restart — the supervised launchd service';
|
|
1162
1163
|
}
|
|
1163
|
-
|
|
1164
|
+
// worker.json is last-writer-wins: an MCP-hosted worker dies with its Claude
|
|
1165
|
+
// Code session and leaves its dead pid in the file until a surviving worker's
|
|
1166
|
+
// next tick overwrites it — up to MCP_LIGHT_TICK_INTERVAL_MS for mcp-profile
|
|
1167
|
+
// survivors. Within that window (plus slack) a dead pid is expected churn,
|
|
1168
|
+
// not a failure.
|
|
1169
|
+
const WORKER_TAKEOVER_GRACE_MS = MCP_LIGHT_TICK_INTERVAL_MS + 5 * 60 * 1000;
|
|
1170
|
+
export async function checkBrainWorker() {
|
|
1164
1171
|
if (process.env.SHIELDCORTEX_DISABLE_WORKER === '1') {
|
|
1165
1172
|
return {
|
|
1166
1173
|
label: 'Brain worker',
|
|
@@ -1198,10 +1205,22 @@ async function checkBrainWorker() {
|
|
|
1198
1205
|
// nothing's coming". The fix-hint diverges accordingly.
|
|
1199
1206
|
const alive = pid != null ? isPidAlive(pid) : null;
|
|
1200
1207
|
if (pid != null && alive === false) {
|
|
1208
|
+
// Grace applies only to mcp-profile hosts: they die with their Claude
|
|
1209
|
+
// Code window, so a dead pid inside one takeover window is expected
|
|
1210
|
+
// churn. A dead full-profile host (dashboard/api/worker — typically
|
|
1211
|
+
// supervised) is a real failure, and a future-dated tick (clock skew)
|
|
1212
|
+
// proves nothing — both warn immediately.
|
|
1213
|
+
if (profile === 'mcp' && ageMs >= 0 && ageMs <= WORKER_TAKEOVER_GRACE_MS) {
|
|
1214
|
+
return {
|
|
1215
|
+
label: 'Brain worker',
|
|
1216
|
+
status: 'info',
|
|
1217
|
+
message: `host pid ${pid} exited (last tick ${ageMin}m ago, profile=${profile}) — expected when a Claude Code session closes; if another ShieldCortex process is running, its worker takes over on its next tick (≤${Math.round(MCP_LIGHT_TICK_INTERVAL_MS / 60000)} min). Re-run doctor to confirm`,
|
|
1218
|
+
};
|
|
1219
|
+
}
|
|
1201
1220
|
return {
|
|
1202
1221
|
label: 'Brain worker',
|
|
1203
1222
|
status: 'warn',
|
|
1204
|
-
message: `process gone (pid ${pid} dead, last tick ${ageMin}m ago, profile=${profile})`,
|
|
1223
|
+
message: `process gone (pid ${pid} dead, last tick ${ageMin}m ago, profile=${profile}) and no surviving worker has taken over`,
|
|
1205
1224
|
fix: workerRecoveryFix(),
|
|
1206
1225
|
};
|
|
1207
1226
|
}
|
|
@@ -47,8 +47,9 @@ export function formatNativeLoadError(err, nodeVersion, abi) {
|
|
|
47
47
|
'the module was not compiled locally.',
|
|
48
48
|
'',
|
|
49
49
|
'Fix one of these:',
|
|
50
|
-
' •
|
|
51
|
-
'
|
|
50
|
+
' • Run `shieldcortex repair` (compiles better-sqlite3 from source + re-verifies)',
|
|
51
|
+
' • Or recompile manually in the better-sqlite3 package dir: npm run build-release',
|
|
52
|
+
' (requires a C/C++ toolchain — Xcode CLT / build-essential; a plain `npm rebuild` can silently no-op)',
|
|
52
53
|
' • Or run ShieldCortex on a supported Node LTS (20.x or 22.x),',
|
|
53
54
|
' which ship prebuilt binaries — no compiler needed.',
|
|
54
55
|
'',
|
package/dist/database/init.js
CHANGED
|
@@ -459,9 +459,9 @@ export function initDatabase(dbPath) {
|
|
|
459
459
|
const detail = openError instanceof Error ? openError.message : String(openError);
|
|
460
460
|
throw new Error('ShieldCortex could not load its database engine (the better-sqlite3 native module). ' +
|
|
461
461
|
`This is an install / Node-version issue, NOT database corruption — your data at ${expandedPath} is untouched. ` +
|
|
462
|
-
'Rebuild the native module and retry:\n' +
|
|
463
|
-
' cd "$(npm root -g)/shieldcortex" && npm
|
|
464
|
-
'(install a C/C++ toolchain first if it fails to compile)\n' +
|
|
462
|
+
'Rebuild the native module and retry — easiest is `shieldcortex repair`, or manually:\n' +
|
|
463
|
+
' cd "$(npm root -g)/shieldcortex/node_modules/better-sqlite3" && npm run build-release\n' +
|
|
464
|
+
'(install a C/C++ toolchain first if it fails to compile; a plain `npm rebuild` can silently no-op)\n' +
|
|
465
465
|
`Underlying error: ${detail}`);
|
|
466
466
|
}
|
|
467
467
|
// Database file is corrupt or not a valid SQLite database
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* - Linux: systemd user service
|
|
7
7
|
* - Windows: VBS script in Startup folder
|
|
8
8
|
*/
|
|
9
|
+
import { execSync } from 'child_process';
|
|
9
10
|
import { type ServiceMode } from './templates.js';
|
|
10
11
|
interface ServiceOptions {
|
|
11
12
|
mode?: ServiceMode;
|
|
@@ -14,6 +15,29 @@ export declare function detectStaleAppendLogs(content: string): {
|
|
|
14
15
|
stale: boolean;
|
|
15
16
|
missingPath: string | null;
|
|
16
17
|
};
|
|
18
|
+
type ExecFn = (command: string, options?: Parameters<typeof execSync>[1]) => unknown;
|
|
19
|
+
/**
|
|
20
|
+
* Load (or reload) the LaunchAgent via the modern bootstrap API.
|
|
21
|
+
*
|
|
22
|
+
* The legacy `launchctl load -w` lies on an already-loaded service: it prints
|
|
23
|
+
* "Load failed: 5: Input/output error" to stderr yet exits 0, so install
|
|
24
|
+
* claimed success while the old process kept running with the old service
|
|
25
|
+
* definition (launchd caches the plist at load time). bootout + bootstrap
|
|
26
|
+
* returns real exit codes and applies the plist that was just written.
|
|
27
|
+
*/
|
|
28
|
+
export declare function activateMacosService(servicePath: string, opts?: {
|
|
29
|
+
exec?: ExecFn;
|
|
30
|
+
retryDelayMs?: number;
|
|
31
|
+
drainTimeoutMs?: number;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
reloaded: boolean;
|
|
34
|
+
}>;
|
|
35
|
+
/**
|
|
36
|
+
* `enable --now` is a no-op start on an already-running unit, so reinstalls
|
|
37
|
+
* kept the old process (and old code) running. enable + restart covers both
|
|
38
|
+
* fresh installs and reinstalls.
|
|
39
|
+
*/
|
|
40
|
+
export declare function activateLinuxService(exec?: ExecFn): void;
|
|
17
41
|
export declare function installService(options?: ServiceOptions): Promise<void>;
|
|
18
42
|
export declare function repairService(options?: ServiceOptions): Promise<void>;
|
|
19
43
|
export declare function uninstallService(options?: {
|
package/dist/service/install.js
CHANGED
|
@@ -121,6 +121,83 @@ function summarizeServiceMode(mode) {
|
|
|
121
121
|
return 'dashboard + API';
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
+
const MACOS_SERVICE_LABEL = 'com.shieldcortex.dashboard';
|
|
125
|
+
const LINUX_SERVICE_UNIT = 'shieldcortex-dashboard.service';
|
|
126
|
+
function macosGuiDomain() {
|
|
127
|
+
const uid = process.getuid?.();
|
|
128
|
+
return typeof uid === 'number' ? `gui/${uid}` : 'gui/501';
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Load (or reload) the LaunchAgent via the modern bootstrap API.
|
|
132
|
+
*
|
|
133
|
+
* The legacy `launchctl load -w` lies on an already-loaded service: it prints
|
|
134
|
+
* "Load failed: 5: Input/output error" to stderr yet exits 0, so install
|
|
135
|
+
* claimed success while the old process kept running with the old service
|
|
136
|
+
* definition (launchd caches the plist at load time). bootout + bootstrap
|
|
137
|
+
* returns real exit codes and applies the plist that was just written.
|
|
138
|
+
*/
|
|
139
|
+
export async function activateMacosService(servicePath, opts = {}) {
|
|
140
|
+
const exec = opts.exec ?? execSync;
|
|
141
|
+
const retryDelayMs = opts.retryDelayMs ?? 500;
|
|
142
|
+
const drainTimeoutMs = opts.drainTimeoutMs ?? 30_000;
|
|
143
|
+
const domain = macosGuiDomain();
|
|
144
|
+
const target = `${domain}/${MACOS_SERVICE_LABEL}`;
|
|
145
|
+
const isLoaded = () => {
|
|
146
|
+
try {
|
|
147
|
+
exec(`launchctl print ${target}`, { stdio: 'ignore' });
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const wasLoaded = isLoaded();
|
|
155
|
+
if (wasLoaded) {
|
|
156
|
+
try {
|
|
157
|
+
exec(`launchctl bootout ${target}`, { stdio: 'inherit' });
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Job vanished between the probe and the bootout (concurrent teardown).
|
|
161
|
+
// Already-gone is the state we wanted; fall through to bootstrap.
|
|
162
|
+
}
|
|
163
|
+
// bootout initiates teardown and returns in milliseconds, but launchd
|
|
164
|
+
// refuses to bootstrap the same label (EIO) until the old instance fully
|
|
165
|
+
// drains — ~5s under SIGTERM→SIGKILL escalation, up to the api server's
|
|
166
|
+
// 10s force-exit. `launchctl print` exits 0 while draining and non-zero
|
|
167
|
+
// once gone, so poll it rather than blind-retrying bootstrap.
|
|
168
|
+
const deadline = Date.now() + drainTimeoutMs;
|
|
169
|
+
while (isLoaded() && Date.now() < deadline) {
|
|
170
|
+
await new Promise((resolve) => setTimeout(resolve, retryDelayMs));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Replaces the persistence bit that `load -w` used to clear.
|
|
174
|
+
exec(`launchctl enable ${target}`, { stdio: 'inherit' });
|
|
175
|
+
// Safety net behind the drain poll. Gives up honestly — the caller reports
|
|
176
|
+
// the failure instead of claiming success.
|
|
177
|
+
const attempts = wasLoaded ? 3 : 1;
|
|
178
|
+
for (let attempt = 1;; attempt++) {
|
|
179
|
+
try {
|
|
180
|
+
exec(`launchctl bootstrap ${domain} "${servicePath}"`, { stdio: 'inherit' });
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
if (attempt >= attempts)
|
|
185
|
+
throw err;
|
|
186
|
+
await new Promise((resolve) => setTimeout(resolve, retryDelayMs));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return { reloaded: wasLoaded };
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* `enable --now` is a no-op start on an already-running unit, so reinstalls
|
|
193
|
+
* kept the old process (and old code) running. enable + restart covers both
|
|
194
|
+
* fresh installs and reinstalls.
|
|
195
|
+
*/
|
|
196
|
+
export function activateLinuxService(exec = execSync) {
|
|
197
|
+
exec('systemctl --user daemon-reload', { stdio: 'inherit' });
|
|
198
|
+
exec(`systemctl --user enable ${LINUX_SERVICE_UNIT}`, { stdio: 'inherit' });
|
|
199
|
+
exec(`systemctl --user restart ${LINUX_SERVICE_UNIT}`, { stdio: 'inherit' });
|
|
200
|
+
}
|
|
124
201
|
function tryEnableLinuxLinger() {
|
|
125
202
|
const username = process.env.USER || os.userInfo().username;
|
|
126
203
|
try {
|
|
@@ -154,13 +231,15 @@ export async function installService(options = {}) {
|
|
|
154
231
|
console.log(`Service file written to: ${servicePath}`);
|
|
155
232
|
try {
|
|
156
233
|
switch (platform) {
|
|
157
|
-
case 'macos':
|
|
158
|
-
|
|
159
|
-
console.log(
|
|
234
|
+
case 'macos': {
|
|
235
|
+
const { reloaded } = await activateMacosService(servicePath);
|
|
236
|
+
console.log(reloaded
|
|
237
|
+
? 'Service was already loaded — restarted with the new configuration.'
|
|
238
|
+
: 'Service loaded via launchctl.');
|
|
160
239
|
break;
|
|
240
|
+
}
|
|
161
241
|
case 'linux':
|
|
162
|
-
|
|
163
|
-
execSync('systemctl --user enable --now shieldcortex-dashboard.service', { stdio: 'inherit' });
|
|
242
|
+
activateLinuxService();
|
|
164
243
|
if (mode === 'worker' || mode === 'api') {
|
|
165
244
|
tryEnableLinuxLinger();
|
|
166
245
|
}
|
|
@@ -174,7 +253,15 @@ export async function installService(options = {}) {
|
|
|
174
253
|
}
|
|
175
254
|
catch (err) {
|
|
176
255
|
console.error(`Failed to enable service: ${err.message}`);
|
|
177
|
-
|
|
256
|
+
if (platform === 'macos') {
|
|
257
|
+
// Common over ssh: no GUI session means no gui/<uid> domain to load
|
|
258
|
+
// into. The LaunchAgent still auto-starts at the next GUI login.
|
|
259
|
+
console.log(`The service file was written to ${servicePath} — it will auto-start at the next GUI login, or load it now with:`);
|
|
260
|
+
console.log(` launchctl bootstrap gui/$(id -u) "${servicePath}"`);
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
console.log(`The service file was written to ${servicePath} — you can enable it manually.`);
|
|
264
|
+
}
|
|
178
265
|
return;
|
|
179
266
|
}
|
|
180
267
|
console.log(`\nShieldCortex ${summarizeServiceMode(mode)} will now auto-start.`);
|
|
@@ -250,8 +337,7 @@ export async function serviceStatus() {
|
|
|
250
337
|
try {
|
|
251
338
|
switch (platform) {
|
|
252
339
|
case 'macos': {
|
|
253
|
-
const
|
|
254
|
-
const domain = typeof uid === 'number' ? `gui/${uid}/com.shieldcortex.dashboard` : 'gui/501/com.shieldcortex.dashboard';
|
|
340
|
+
const domain = `${macosGuiDomain()}/${MACOS_SERVICE_LABEL}`;
|
|
255
341
|
const out = execSync(`launchctl print ${domain} 2>&1`, { encoding: 'utf-8' });
|
|
256
342
|
const pidMatch = out.match(/\bpid\s*=\s*(\d+)/i);
|
|
257
343
|
const running = /\bstate\s*=\s*running\b/i.test(out) || Boolean(pidMatch);
|
|
@@ -13,13 +13,15 @@
|
|
|
13
13
|
* successfully" — a no-op. So this module resolves the install dir from the
|
|
14
14
|
* running code's own location and rebuilds there.
|
|
15
15
|
*
|
|
16
|
-
* The second trap (
|
|
17
|
-
* `npm rebuild` can report "rebuilt
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
16
|
+
* The second trap (proven on clawdbot1): even in the right dir, `npm rebuild
|
|
17
|
+
* better-sqlite3` — AND `npm rebuild … --build-from-source` — can report "rebuilt
|
|
18
|
+
* dependencies successfully" while the binary never built. better-sqlite3's
|
|
19
|
+
* install runs prebuild-install, which on a platform with no matching prebuilt
|
|
20
|
+
* exits 0 WITHOUT building (the `--build-from-source` flag does not reliably force
|
|
21
|
+
* it). So when a plain rebuild doesn't heal, we escalate to better-sqlite3's own
|
|
22
|
+
* `npm run build-release` (= `node-gyp rebuild --release`) IN its package dir,
|
|
23
|
+
* which bypasses prebuild-install and actually compiles — surfacing the real
|
|
24
|
+
* build error (almost always a missing C/C++ toolchain) if it can't.
|
|
23
25
|
*
|
|
24
26
|
* Used by: `shieldcortex update` (verify+heal step), `shieldcortex repair`,
|
|
25
27
|
* `shieldcortex doctor` (correct remediation text), and the postinstall guidance.
|
|
@@ -64,13 +66,31 @@ export declare function resolveSelfInstallDir(): string;
|
|
|
64
66
|
*/
|
|
65
67
|
export declare function verifyNativeBinding(): VerifyResult;
|
|
66
68
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
+
* The command used to (re)build the binding — split out so the choice is
|
|
70
|
+
* unit-testable without actually spawning npm.
|
|
69
71
|
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
72
|
+
* - normal: `npm rebuild better-sqlite3` in the install dir. Fast, and places a
|
|
73
|
+
* matching prebuilt when one exists for this platform/ABI.
|
|
74
|
+
* - fromSource: `npm run build-release` IN the better-sqlite3 dir — its own script
|
|
75
|
+
* (`node-gyp rebuild --release`). This is the ONLY reliable force-compile:
|
|
76
|
+
* `npm rebuild … --build-from-source` still goes through prebuild-install, which
|
|
77
|
+
* on a platform with no matching prebuilt exits 0 WITHOUT building and reports
|
|
78
|
+
* "rebuilt dependencies successfully" (proven on arm64 Node 22). build-release
|
|
79
|
+
* bypasses prebuild-install entirely and invokes node-gyp directly.
|
|
80
|
+
*/
|
|
81
|
+
export declare function nativeRebuildCommand(installDir: string, fromSource?: boolean): {
|
|
82
|
+
cmd: string;
|
|
83
|
+
args: string[];
|
|
84
|
+
cwd: string;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Run the binding (re)build. Async (the compile can take tens of seconds) so
|
|
88
|
+
* callers can keep a spinner alive. Never throws.
|
|
89
|
+
*
|
|
90
|
+
* With `{ fromSource: true }` it forces a real compile via better-sqlite3's
|
|
91
|
+
* `build-release` (node-gyp) — bypassing prebuild-install's silent no-op — and
|
|
92
|
+
* captures the build output so a failed compile surfaces its real error rather
|
|
93
|
+
* than npm's misleading "rebuilt dependencies successfully".
|
|
74
94
|
*/
|
|
75
95
|
export declare function rebuildNativeBinding(installDir: string, opts?: {
|
|
76
96
|
fromSource?: boolean;
|
|
@@ -79,13 +99,13 @@ export declare function rebuildNativeBinding(installDir: string, opts?: {
|
|
|
79
99
|
output: string;
|
|
80
100
|
}>;
|
|
81
101
|
/**
|
|
82
|
-
* The correct copy-paste remediation
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
102
|
+
* The correct copy-paste remediation. Two things users (and a naive
|
|
103
|
+
* `npm rebuild`) get wrong, both leading to a silent no-op:
|
|
104
|
+
* 1. running the rebuild outside the package's install dir, and
|
|
105
|
+
* 2. using `npm rebuild`/`--build-from-source`, which goes through
|
|
106
|
+
* prebuild-install and exits 0 without building when no prebuilt matches.
|
|
107
|
+
* The reliable command is better-sqlite3's own `build-release` (node-gyp) run in
|
|
108
|
+
* its package dir, which compiles from source directly.
|
|
89
109
|
*/
|
|
90
110
|
export declare function nativeBindingRemediation(installDir: string): string;
|
|
91
111
|
/**
|
|
@@ -96,8 +116,9 @@ export declare function nativeBindingRemediation(installDir: string): string;
|
|
|
96
116
|
*
|
|
97
117
|
* Two rebuild attempts when needed: first a plain `npm rebuild` (fast, uses a
|
|
98
118
|
* matching prebuilt if one exists), then — only if that didn't heal it — a
|
|
99
|
-
* forced
|
|
100
|
-
*
|
|
101
|
-
*
|
|
119
|
+
* forced `npm run build-release` (node-gyp) source compile. The forced build is
|
|
120
|
+
* what actually produces the binary when no prebuilt matches AND surfaces the
|
|
121
|
+
* real error if it can't (and `rebuildOutput` in the failed result carries IT,
|
|
122
|
+
* not the earlier misleading "rebuilt dependencies successfully").
|
|
102
123
|
*/
|
|
103
124
|
export declare function ensureNativeBinding(deps?: Partial<BindingDeps>): Promise<EnsureResult>;
|
|
@@ -13,13 +13,15 @@
|
|
|
13
13
|
* successfully" — a no-op. So this module resolves the install dir from the
|
|
14
14
|
* running code's own location and rebuilds there.
|
|
15
15
|
*
|
|
16
|
-
* The second trap (
|
|
17
|
-
* `npm rebuild` can report "rebuilt
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
16
|
+
* The second trap (proven on clawdbot1): even in the right dir, `npm rebuild
|
|
17
|
+
* better-sqlite3` — AND `npm rebuild … --build-from-source` — can report "rebuilt
|
|
18
|
+
* dependencies successfully" while the binary never built. better-sqlite3's
|
|
19
|
+
* install runs prebuild-install, which on a platform with no matching prebuilt
|
|
20
|
+
* exits 0 WITHOUT building (the `--build-from-source` flag does not reliably force
|
|
21
|
+
* it). So when a plain rebuild doesn't heal, we escalate to better-sqlite3's own
|
|
22
|
+
* `npm run build-release` (= `node-gyp rebuild --release`) IN its package dir,
|
|
23
|
+
* which bypasses prebuild-install and actually compiles — surfacing the real
|
|
24
|
+
* build error (almost always a missing C/C++ toolchain) if it can't.
|
|
23
25
|
*
|
|
24
26
|
* Used by: `shieldcortex update` (verify+heal step), `shieldcortex repair`,
|
|
25
27
|
* `shieldcortex doctor` (correct remediation text), and the postinstall guidance.
|
|
@@ -58,15 +60,39 @@ export function verifyNativeBinding() {
|
|
|
58
60
|
}
|
|
59
61
|
}
|
|
60
62
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
+
* The command used to (re)build the binding — split out so the choice is
|
|
64
|
+
* unit-testable without actually spawning npm.
|
|
63
65
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
66
|
+
* - normal: `npm rebuild better-sqlite3` in the install dir. Fast, and places a
|
|
67
|
+
* matching prebuilt when one exists for this platform/ABI.
|
|
68
|
+
* - fromSource: `npm run build-release` IN the better-sqlite3 dir — its own script
|
|
69
|
+
* (`node-gyp rebuild --release`). This is the ONLY reliable force-compile:
|
|
70
|
+
* `npm rebuild … --build-from-source` still goes through prebuild-install, which
|
|
71
|
+
* on a platform with no matching prebuilt exits 0 WITHOUT building and reports
|
|
72
|
+
* "rebuilt dependencies successfully" (proven on arm64 Node 22). build-release
|
|
73
|
+
* bypasses prebuild-install entirely and invokes node-gyp directly.
|
|
74
|
+
*/
|
|
75
|
+
export function nativeRebuildCommand(installDir, fromSource = false) {
|
|
76
|
+
if (fromSource) {
|
|
77
|
+
return {
|
|
78
|
+
cmd: 'npm',
|
|
79
|
+
args: ['run', 'build-release'],
|
|
80
|
+
cwd: path.join(installDir, 'node_modules', 'better-sqlite3'),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return { cmd: 'npm', args: ['rebuild', 'better-sqlite3', '--no-audit', '--no-fund'], cwd: installDir };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Run the binding (re)build. Async (the compile can take tens of seconds) so
|
|
87
|
+
* callers can keep a spinner alive. Never throws.
|
|
88
|
+
*
|
|
89
|
+
* With `{ fromSource: true }` it forces a real compile via better-sqlite3's
|
|
90
|
+
* `build-release` (node-gyp) — bypassing prebuild-install's silent no-op — and
|
|
91
|
+
* captures the build output so a failed compile surfaces its real error rather
|
|
92
|
+
* than npm's misleading "rebuilt dependencies successfully".
|
|
68
93
|
*/
|
|
69
94
|
export function rebuildNativeBinding(installDir, opts = {}) {
|
|
95
|
+
const { cmd, args, cwd } = nativeRebuildCommand(installDir, opts.fromSource ?? false);
|
|
70
96
|
return new Promise((resolve) => {
|
|
71
97
|
let output = '';
|
|
72
98
|
let settled = false;
|
|
@@ -74,13 +100,10 @@ export function rebuildNativeBinding(installDir, opts = {}) {
|
|
|
74
100
|
settled = true;
|
|
75
101
|
resolve({ ok, output });
|
|
76
102
|
} };
|
|
77
|
-
const args = ['rebuild', 'better-sqlite3', '--no-audit', '--no-fund'];
|
|
78
|
-
if (opts.fromSource)
|
|
79
|
-
args.push('--build-from-source', '--foreground-scripts');
|
|
80
103
|
let child;
|
|
81
104
|
try {
|
|
82
|
-
child = spawn(
|
|
83
|
-
cwd
|
|
105
|
+
child = spawn(cmd, args, {
|
|
106
|
+
cwd,
|
|
84
107
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
85
108
|
shell: false,
|
|
86
109
|
});
|
|
@@ -126,17 +149,18 @@ function toolchainHint() {
|
|
|
126
149
|
return 'If it fails for lack of a compiler: sudo apt-get install -y python3 make g++ (Debian/Ubuntu; or your distro\'s build-essential).';
|
|
127
150
|
}
|
|
128
151
|
/**
|
|
129
|
-
* The correct copy-paste remediation
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
152
|
+
* The correct copy-paste remediation. Two things users (and a naive
|
|
153
|
+
* `npm rebuild`) get wrong, both leading to a silent no-op:
|
|
154
|
+
* 1. running the rebuild outside the package's install dir, and
|
|
155
|
+
* 2. using `npm rebuild`/`--build-from-source`, which goes through
|
|
156
|
+
* prebuild-install and exits 0 without building when no prebuilt matches.
|
|
157
|
+
* The reliable command is better-sqlite3's own `build-release` (node-gyp) run in
|
|
158
|
+
* its package dir, which compiles from source directly.
|
|
136
159
|
*/
|
|
137
160
|
export function nativeBindingRemediation(installDir) {
|
|
161
|
+
const pkgDir = path.join(installDir, 'node_modules', 'better-sqlite3');
|
|
138
162
|
return [
|
|
139
|
-
`cd "${
|
|
163
|
+
`cd "${pkgDir}" && npm run build-release`,
|
|
140
164
|
toolchainHint(),
|
|
141
165
|
'Then restart Claude Code / the OpenClaw gateway so processes reload the binding.',
|
|
142
166
|
].join('\n');
|
|
@@ -149,9 +173,10 @@ export function nativeBindingRemediation(installDir) {
|
|
|
149
173
|
*
|
|
150
174
|
* Two rebuild attempts when needed: first a plain `npm rebuild` (fast, uses a
|
|
151
175
|
* matching prebuilt if one exists), then — only if that didn't heal it — a
|
|
152
|
-
* forced
|
|
153
|
-
*
|
|
154
|
-
*
|
|
176
|
+
* forced `npm run build-release` (node-gyp) source compile. The forced build is
|
|
177
|
+
* what actually produces the binary when no prebuilt matches AND surfaces the
|
|
178
|
+
* real error if it can't (and `rebuildOutput` in the failed result carries IT,
|
|
179
|
+
* not the earlier misleading "rebuilt dependencies successfully").
|
|
155
180
|
*/
|
|
156
181
|
export async function ensureNativeBinding(deps = {}) {
|
|
157
182
|
const verify = deps.verify ?? verifyNativeBinding;
|